#1 Sun 29 March 2015 14:40
- apatride
- Juste Inscrit !
- Date d'inscription: 28 Mar 2015
- Messages: 5
POSTGIS - Problème de différence
Bonjour,
Je cherche à construire un (des) polygone délimitant le domaine public.
Pour le construire, je "soustrais" les contours du domaine privé au contour de la commune.
Pour une commune test (arcachon), je fusionne les parcelles [BDparcellaire]:
CREATE table prive AS (
SELECT
(ST_Dump(ST_Union(parcelle.geom))).geom AS geom
FROM parcelle);
puis :
create table toto WITH OIDS as (
SELECT
(ST_Dump(ST_Difference(commune.geom, prive.geom))).geom as geom
FROM commune, prive);
J'utilise ST_Dump pour décomposer les multipolygones le cas échéant.
=> Quelque chose ne va pas car QGIS n'arrive pas à afficher le résultat; je suis obligé de le "tuer" car l'application est gelée.
Merci d'avance pour toute aide.
JL
Seuls ceux qui ont la mémoire longue sont capables de penser l'avenir.
Hors ligne
#2 Mon 30 March 2015 10:53
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS - Problème de différence
Bonjour,
Il n'est pas nécessaire de fusionner les parcelles avant de faire la différence entre les couches.
Le probleme avec un seul gros polygone est qu'il ne permet pas l'usage des index spatiaux: il couvre toute la zone => les index ne servent a rien.
Essayez la différence en gardant les parcelles initiales.
Ensuite, la différence entre deux polygones peut renvoyer toute sorte de géometrie (point, ligne, pg, collection)
Si la couche cible doit contenir des polygones, il faut le forcer dans la requete de différence:
Code:
... st_multi(st_collectionExtract(st_makeValid((ST_Dump(ST_Difference(commune.geom, prive.geom)).geom)), 3) as geom
Correction (st_makeValid) des surface, extraction (collectionExtract), forcage en multipolygone pour avoir un seul type geo dans la colonne
Suivant la configuration des données, a faire avant ou après le dump.
Nicolas
Hors ligne
#3 Mon 30 March 2015 12:18
- apatride
- Juste Inscrit !
- Date d'inscription: 28 Mar 2015
- Messages: 5
Re: POSTGIS - Problème de différence
Bonjour,
La requête suggérée (que je n'aurais jamais imaginée) me retourne plus de 7000 lignes.
J'en attendrais une poignée (environ le nombre de voies non connectées).
Cette solution n'est pas exploitable dans QGIS, le chargement est très long.
Une autre suggestion ?
Merci.
A.
Seuls ceux qui ont la mémoire longue sont capables de penser l'avenir.
Hors ligne
#4 Mon 30 March 2015 13:29
Re: POSTGIS - Problème de différence
Bonjour,
dans votre requête il ne faut demander la différence que si vos objets sont en intersection ;-)
Code:
WHERE ST_Interscects(commune.geom, prive.geom)
Parc cntre ce ne sont pas 7000 ligne qui font peur à QGis. Peut-être plutôt la complexité des objets retournés ?
Dernière modification par MathieuB (Mon 30 March 2015 13:31)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne