Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: 3168
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 wink

Hors ligne

 

#4 Mon 17 September 2018 09:59

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3168
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: 3168
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

 

Pied de page des forums

Powered by FluxBB