Pages: 1
- Sujet précédent - QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières - Sujet suivant
#1 Fri 14 September 2018 17:12
- boblebob
- Participant occasionnel
- Lieu: Quimper
- Date d'inscription: 12 Sep 2005
- Messages: 15
QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Bonjour,
J'utilisais jusqu'à présent le modèle de données "interactif" du plugin Cadastre présent sur le site de 3liz : http://demo.3liz.com/plugin_cadastre/Sc … ships.html mais depuis quelques temps le site est HS ou non maintenu.
Ma question est la suivante : comment faire le lien entre la table geo_parcelle et la table geo_unite_fonciere? Est-ce possible via le modèle de données ou faut-il passer sur une requête géographique d'appartenance?
Pour cela j'ai tenté la fonction ST_PointOnSurface mais qui est trop gourmande en ressource pour traiter un département en entier.... Ma requête tourne depuis plusieurs jours sans résultat (alors qu'elle est très rapide mais pas satisfaisante avec un ST_Centroid)
Code:
SELECT geo_parcelle.geo_parcelle as id_parc, geo_unite_fonciere.id as id_uf FROM temp_majic_cca_2018.geo_parcelle, temp_majic_cca_2018.geo_unite_fonciere WHERE ST_Intersects(ST_Centroid(geo_parcelle.geom), geo_unite_fonciere.geom
Je suis preneur de vos pistes à ce sujet!
Merci par avance!
Dernière modification par boblebob (Fri 14 September 2018 17:14)
Hors ligne
#2 Mon 17 September 2018 09:03
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Bonjour,
comment faire le lien entre la table geo_parcelle et la table geo_unite_fonciere?
J'en sais rien.
j'ai tenté la fonction ST_PointOnSurface mais qui est trop gourmande en ressource pour traiter un département en entier
C'est pas la fonction qui est en cause, vous devez avoir un petit soucis d'index spatial absent, plus une construction de la requête qui est erronée.
Comme vous ne précisez pas le type de base de données utilisé ...
Faisons l'hypothèse de postgresql/postgis :
La clause WHERE que vous écrivez ne peut pas fonctionner il manque une parenthèse.
Ensuite une requête de même type (parcelle contenant un bâtiment) :
Code:
SELECT * FROM parcelle,batiment WHERE st_intersects(batiment.geom,parcelle.geom)
Met moins de une minute à s’exécuter pour la région entière (deux départements), c'est une question d'index spatial.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#3 Mon 17 September 2018 09:49
- boblebob
- Participant occasionnel
- Lieu: Quimper
- Date d'inscription: 12 Sep 2005
- Messages: 15
Re: QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Merci pour le retour,
Effectivement il s'agit d'une requête sous PostgreSQL/PostGIS et il manquait bien une parenthèse..
Par contre le problème de temps de réponse provient bien à mon avis de la fonction du ST_PointOnSurface, car le ST_Centroid, ou plus simplement comme tu propose le ST_Intersects sont quasi instantanés.
"[ST_PointOnSurface] is substantially more computationally expensive than the centroid operation". cf : https://gis.stackexchange.com/questions … calculated
Et je dispose bien dans mes tables d'index géographiques du type.
Code:
CREATE INDEX geo_parcelle_geom_idx ON temp_majic_cca_2018.geo_parcelle USING gist (geom);
Or c'est bien la fonction ST_PointOnSurface qui m'interesse car ST_Centroid n'est pas assez précis dans le cas de parcelles dont le centroide ne tombe pas dans la parcelle
Hors ligne
#4 Mon 17 September 2018 09:59
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Bonjour,
Merci pour le lien stackexchange.
Dans ce cas il faut créer un nouveau champ dans la table geo_parcelle qui contiendra la géométrie issue de St_PointOnSurface, lui attribuer un index spatial, puis ensuite faire la requête.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#5 Mon 17 September 2018 10:04
- boblebob
- Participant occasionnel
- Lieu: Quimper
- Date d'inscription: 12 Sep 2005
- Messages: 15
Re: QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Excellente idée! merci!
13 secondes pour créer la nouvelle géométrie des parcelles
Code:
ALTER TABLE temp_majic_cca_2018.geo_parcelle ADD COLUMN geom_pos geometry(Geometry,2154); UPDATE temp_majic_cca_2018.geo_parcelle SET geom_pos = ST_PointOnSurface (geo_parcelle.geom); CREATE INDEX geo_parcelle_geom_pos_idx ON temp_majic_cca_2018.geo_parcelle USING gist(geom_pos);
9 secondes pour créer l'intersection entre cette nouvelle géométrie et mes unités foncières
Code:
SELECT min(geo_parcelle.geo_parcelle) as id_parc, min(geo_unite_fonciere.id) as id_uf FROM temp_majic_cca_2018.geo_parcelle, temp_majic_cca_2018.geo_unite_fonciere WHERE ST_Intersects(geo_parcelle.geom_pos, geo_unite_fonciere.geom) GROUP BY geo_parcelle
Merci encore!
Dernière modification par boblebob (Mon 17 September 2018 10:46)
Hors ligne
#6 Tue 18 September 2018 07:59
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières
Bonjour,
De rien, mais cet échange a plus sa place sur GeoBD.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
Pages: 1
- Sujet précédent - QGIS / Plugin Cadastre 1.5.4: Parcelles composant les unités foncières - Sujet suivant