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 jeu. 17 mai 2018 11:28

thierry974
Membre
Lieu: SAFER Reunion
Date d'inscription: 16 juin 2010
Messages: 23

QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Bonjour,

J’effectue une requête spatiale complexe (intersection puis agrégation de polygone suivant la valeur d’un attribut) sous via le Db manager. (cf requête ci-dessous) +   contrôle sur la géométrie.
La requête fonctionne (4053 objets) .
Mais je n’arrive pas à la charger systématiquement sous QGIS. J’ai l’impression que cela dépend du nombre d’objets créés.

En effet si :
Je change la valeur de parcelle.code_com, (=>  nombre d’objets moindre) j’arrive à charger la couche
Je rajoute en fin de requête : limit 500, j’arrive à charger la couche.

Quelqu’un a-t-il une solution ?
Je précise, je suis sur Qgis 3.0.2, Windows 7 64bits avec 16 Go de mémoire vive.

-------------------------------------------------------------------------------------------------------------------------------
With parcelle_union as (
SELECT ST_Intersection(obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2".geom, "2016novcadastre".parcelle.geom) as geom_intersect,
"2016novcadastre".parcelle.code_com as code_com,
'97' || substring("2016novcadastre".parcelle.idu from 1 for 3) ||  substring("2016novcadastre".parcelle.idu from 7 for 11)  as num_parcelle,
st_area(ST_Intersection(obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2".geom, "2016novcadastre".parcelle.geom)) as sau,
"2016novcadastre".parcelle.supf as supparc,
round ((st_area(ST_Intersection(obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2".geom, "2016novcadastre".parcelle.geom)) /"2016novcadastre".parcelle.supf)*100) as pc_sau
from "2016novcadastre".parcelle, obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2"
WHERE
ST_Intersects(obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2".geom, "2016novcadastre".parcelle.geom)=TRUE
AND st_area(ST_Intersection(obs_friche."saup_cultivable_moins_parcelle_bati_de_1000m2_v2".geom, "2016novcadastre".parcelle.geom))  > 500
AND "2016novcadastre".parcelle.supf >0
AND "2016novcadastre".parcelle.code_com  ='410')
SELECT 
row_number() OVER(ORDER BY num_parcelle DESC) as oid,
num_parcelle,
st_union (geom_intersect) as geom_intersect,
ST_IsValidReason(st_union (geom_intersect)) as code_erreur,
sum(sau) as sau,
sum(pc_sau) as pc_sau,
min (supparc) as suppar
from parcelle_union
Where ST_IsValid(geom_intersect)= true
group by num_parcelle


Thierry KAUFMANT
Chef du service Études et Aménagement
SAFER Réunion

Hors ligne

 

#2 jeu. 17 mai 2018 14:23

SANTANNA
Membre
Lieu: Angers
Date d'inscription: 18 janv. 2008
Messages: 1879

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Bonjour,
Je vois des intersections dans la requête, et aussi des vérifications de validité de géométrie mais les géométries renvoyées sont-elles toutes du même type?

Hors ligne

 

#3 jeu. 17 mai 2018 15:51

thierry974
Membre
Lieu: SAFER Reunion
Date d'inscription: 16 juin 2010
Messages: 23

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

deux type de géométrie sont renvoyés (polygone et multi polygone)
            requête complète que je n'arrive pas à chargé dans qgis ou celle que je limite à 500
le problème ne vient donc pas de là.
Merci quand même


Thierry KAUFMANT
Chef du service Études et Aménagement
SAFER Réunion

Hors ligne

 

#4 jeu. 17 mai 2018 16:22

SANTANNA
Membre
Lieu: Angers
Date d'inscription: 18 janv. 2008
Messages: 1879

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Quid lorsque la requête est faite sous PGAdmin et génère soit une nouvelle table soit une vue? QGIS lit-il le résultat?

Hors ligne

 

#5 ven. 18 mai 2018 09:12

trovez
Membre
Lieu: Nantes
Date d'inscription: 17 sept. 2007
Messages: 14

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Bonjour,

La requête comporte
st_union (geom_intersect) as geom_intersect,
qui peut produire des géométrie invalides.

Avez-vous inspecté les valeurs du champ ST_IsValidReason(st_union (geom_intersect)) as code_erreur ?

Cdlt

Hors ligne

 

#6 ven. 18 mai 2018 10:39

thierry974
Membre
Lieu: SAFER Reunion
Date d'inscription: 16 juin 2010
Messages: 23

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Bonjour,

Toutes les géométries sont valides
        ST_IsValidReason(st_union (geom_intersect))

j'ai rajouté une condition pour en être sûr : Where ST_IsValid(geom_intersect)= true


Thierry KAUFMANT
Chef du service Études et Aménagement
SAFER Réunion

Hors ligne

 

#7 ven. 18 mai 2018 11:08

trovez
Membre
Lieu: Nantes
Date d'inscription: 17 sept. 2007
Messages: 14

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

Le where  porte sur St_Intersection, mais pas sur St_union, St_Union pouvant aussi générer des erreurs.

Hors ligne

 

#8 ven. 18 mai 2018 11:12

thierry974
Membre
Lieu: SAFER Reunion
Date d'inscription: 16 juin 2010
Messages: 23

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

SANTANNA

Si je crée une vue via pgadmin et que je l’affiche sous qgis : ça fonctionne

merci.
je ne sais toujours pas quel est le problème. j'aurais souhaité ne pas créer de vue. une vue par commune, c'est beaucoup.


Thierry KAUFMANT
Chef du service Études et Aménagement
SAFER Réunion

Hors ligne

 

#9 ven. 18 mai 2018 11:20

SANTANNA
Membre
Lieu: Angers
Date d'inscription: 18 janv. 2008
Messages: 1879

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

j'aurais souhaité ne pas créer de vue. une vue par commune, c'est beaucoup.


Je ne comprends pas. N'est-ce pas la même requête que dans DB Manager (ou celle-là portait déjà sur une commune)? Il est aussi possible de faire une vue agrégée dans PGAdmin (à voir si la structure de la BD permet de faire cela facilement) et après soit la filtrer dans QGIS directement ou dans DB Manager avant ajout dans le projet. De ce fait, la BD PostGIS ne contiendrait qu'une seule vue.

Hors ligne

 

#10 ven. 18 mai 2018 12:06

Ben22
Membre
Date d'inscription: 11 mai 2016
Messages: 15

Re: QGIS 3.02/DB Manager: requete postgis/Impossible de charger la couche

thierry974 a écrit:

deux type de géométrie sont renvoyés (polygone et multi polygone)
            requête complète que je n'arrive pas à chargé dans qgis ou celle que je limite à 500
le problème ne vient donc pas de là.
Merci quand même


Essayez de tout passer en multipolygone en forçant avec st_multi, il me semble que le DBManager n'aime pas ajouter une couche avec deux types de géométries différentes.

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |