Message posté par : Sylvain M.
----------------------------------------
Bon, je crois avoir trouvé la solution (et j'avais même déjà participé à l'échange en question) : https://forums.postgresql.fr/viewtopic.php?id=1854
Il semblerait qu'un
-----------------
Code :
row_number() OVER () AS oid
-----------------
soit suffisant !
Je teste ça !
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325946#p325946
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Sylvain M.
----------------------------------------
Bonjour à tous,
Suite à ce message (https://georezo.net/forum/viewtopic.php?id=117356) , je prends la bonne résolution de passer systématiquement par DB Manager pour charger mes couches PostGis.
Cependant, je fais face à un nouveau petit problème : pour pas mal de mes couches, issues de vues (matérialisées), j'obtiens une erreur au chargement car QGis n'identifie pas de clé primaire.
-----------------
Citation :
Pas de clé mentionnée pour la vue/requête.
Couche PostgreSQL sans clé primaire
-----------------
Effectivement, quand je passe par le bouton "Ajouter une couche PostGis" (donc sans passer par DBManager), je dois indiquer manuellement pour ces vues quel champ utiliser comme clé primaire.
Y aurait-il un moyen, dans le SQL de création de la vue (matérialisée), de définir quel champs est une clé primaire, et que QGis l'identifie automatiquement ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325945#p325945
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Sylvain M.
----------------------------------------
-----------------
Citation :
Peut être est ce aussi votre import shape vers postgis qui n'est pas
correctement paramétré (simple supposition...)
-----------------
Non, je ne suis pas parti des SHP !
Je suis parti de la livraison de la Bd-Topo au format SQL : c'est beaucoup plus pratique maintenant, et France Entière !
(pour moi qui travaille sur 4 départements et 2 régions, plus besoin d'assembler les SHP : j'importe le SQL national, que je découpe juste par mon territoire)
Et c'est bien ces fichiers SQL originaux qui définissent toutes les géométries de cette manière :
-----------------
Citation :
SELECT AddGeometryColumn('table','geometrie',2154,'GEOMETRY',2);
-----------------
Merci pour vos retours qui m'ont encore fait progresser dans l'apprentissage de PGSQL ! :D
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325918#p325918
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
-----------------
Sylvain M. écrit :
(mais je vais devoir le faire manuellement, car je ne connais pas de moyen pour le faire pour toutes les tables de tous les types...)
-----------------
Il y a un moyen avec l'outil en ligne de commande psql, en utilisant la méta-commande \gexec.
-----------------
Sylvain M. écrit :
Du coup, ça me semblerait quand même plus pratique, pour les prochaines livraisons, que le type soit précisé dans le champ geometrie.
Êtes-vous d'accord là dessus ?
-----------------
Encore une fois à voir avec l'IGN, mais oui apparemment.
Peut être est aussi votre import shape vers postgis qui n'est pas
correctement paramétré (simple supposition...)
-----------------
Edouard Hyvernat écrit :
Sinon, passez directement par l'extension officielle "DB Manager" ; Pour ma part, je trouve qu'elle a bien plus d'avantage car on peut y insérer des requêtes spécifiques, créer/modifier les tables... Bref administrer sa base assez facilement et charger les résultats d'un SELECT en tant que nouvelle couche par exemple.
-----------------
Completement d'accord
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325915#p325915
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Sylvain M.
----------------------------------------
-----------------
tumasgiu écrit :
-----------------
Citation :
Le type de géométrie n'est donc pas précisé [...]
-----------------
peut être est ce à dessein parceque la table peut contenir des géométries de tout type ? [...]
-----------------
J'ai inspecté les tables - avec SELECT ST_GeometryType(geometrie) - et ce n'est pas le cas : chaque table a son propre type de géométrie.
(ce qui me parait logique d'ailleurs, puisque la BD-Topo était livrée en SHP précédemment)
Du coup, le problème est bien identifié, et je pense le résoudre en faisant des requêtes de ce type :
-----------------
Code :
ALTER TABLE france_2019.batiment ALTER COLUMN geometrie type geometry(MultiPolygon, 2154);
-----------------
(mais je vais devoir le faire manuellement, car je ne connais pas de moyen pour le faire pour toutes les tables de tous les types...)
Du coup, ça me semblerait quand même plus pratique, pour les prochaines livraisons, que le type soit précisé dans le champ geometrie.
Êtes-vous d'accord là dessus ?
-----------------
Edouard Hyvernat écrit :
Sinon, passez directement par l'extension officielle "DB Manager"
-----------------
En effet, c'est le plus simple : il suffit de changer mon habitude :)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325910#p325910
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Edouard Hyvernat
----------------------------------------
Hello,
Une piste complémentaire serait, dans QGIS, de pensez à désactiver l'option "Lister les tables sans géométries" (en bas de la fenêtre) dans le gestionnaire de données PostgreSQL. Sinon, QGIS scannera toutes les tables de tous les schémas y compris celles sans géométries, les tables systèmes et il peut y en avoir beaucoup si vous avez d'autres extensions que Postgis d'installées pour votre BD et bcp de volume si votre BD est importante
Sinon, passez directement par l'extension officielle "DB Manager" ; Pour ma part, je trouve qu'elle a bien plus d'avantage car on peut y insérer des requêtes spécifiques, créer/modifier les tables... Bref administrer sa base assez facilement et charger les résultats d'un SELECT en tant que nouvelle couche par exemple.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325906#p325906
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
-----------------
Citation :
Le type de géométrie n'est donc pas précisé, on est d'accord ?
-----------------
Oui, seul le SRID est présent, du coup QGIS doit scanner votre table
pour en connaitre le(s) type(s) exact(s).
-----------------
Citation :
Ce serait à remonter à l'IGN ?
-----------------
A voir. peut être est ce à dessein parceque la table peut contenir
des géométries de tout type ?
-----------------
Citation :
(d'ailleurs, il me semblait que les conventions actuelles étaient nommer les colonnes de géométrie "geom"... Ça aurait été plus simple pour moi !)
-----------------
Pourquoi plus simple ? Je sais pas si l'OGC a une recommandation la dessus,
j'ai vu (et déclarer) de tout : the_geom, g, geom, the_point, geometry., the_poly, the_polygon..
l’appellation de l'attribut geometrique d'ogr est wkb_geometry...
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325855#p325855
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Christophe Vergon
----------------------------------------
Bonjour
En matière de clef primaire il est toujours plus sain de générer les siennes que de dépendre du producteur de données et de transformer celle du producteur en attribut (champs) de votre objet. Ceci car vous ne maîtrisez pas le process du producteur.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325837#p325837
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
-----------------
Citation :
Nous sommes d'accord: l'insertion de ST_Dump() apporte uniquement une solution "géométrique" en ne renvoyant aucun trou dans mon territoire. Elle n'est évidemment pas satisfaisante, sinon je n'aurai pas demandé d'aide yikes)
-----------------
Pas de problèmei, je ne voulais vous offenser,
je n'étais juste pas certain que vous compreniez ce que st_dump faisait.
Pour votre exemple, il faudrait donc utiliser CollectionExtract ou collectionHomogenize sur le resultat de st_intersection,
et changer la clause where pour ne retenir que les couples s'intersectant au moins de manière surfacique,
avec st_relate.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325834#p325834
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Nicolas Vaginay
----------------------------------------
Bonjour et merci,
Vous avez raison, un exemple est toujours utile. Ma requête est vraiment simple:
-----------------
Code :
create materialized view ma_vue as(
select ma_table_source.id, st_intersection(ma_table_source.geom, mon_territoire.geom) as geom
from ma_table_source, mon_territoire
where st_intersects(from ma_table_source.geom, mon_territoire.geom)
)
-----------------
J'ajoute quelques détails sur ce qu'elle renvoie.
Nombre d'objets par type de géométrie:
"ST_Polygon";29112
"ST_Point";1
"ST_MultiPolygon";129
"ST_GeometryCollection";11
Dans QGIS, 29241 objets sont affichés (c'est-à-dire les Polygon + les MultiPolygon). Les trous doivent donc correspondre à des GeometryCollection. Le cas du Point n'est pas significatif.
Nous sommes d'accord: l'insertion de ST_Dump() apporte uniquement une solution "géométrique" en ne renvoyant aucun trou dans mon territoire. Elle n'est évidemment pas satisfaisante, sinon je n'aurai pas demandé d'aide :o)
Je teste St_CollectionExtract(), que j'avais déjà utilisée il y a pas mal de temps, ST_CollectionHomogenize(), que je ne connaissais pas. Je ferai un retour.
Merci encore
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=325828#p325828
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net