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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 ven. 14 septembre 2018 17:12

boblebob
Membre
Lieu: Quimper
Date d'inscription: 12 sept. 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 (ven. 14 septembre 2018 17:14)

Hors ligne

 

#2 lun. 17 septembre 2018 09:03

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2698
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 lun. 17 septembre 2018 09:49

boblebob
Membre
Lieu: Quimper
Date d'inscription: 12 sept. 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 lun. 17 septembre 2018 09:59

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2698
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 lun. 17 septembre 2018 10:04

boblebob
Membre
Lieu: Quimper
Date d'inscription: 12 sept. 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 (lun. 17 septembre 2018 10:46)

Hors ligne

 

#6 mar. 18 septembre 2018 07:59

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2698
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

Partagez  |