Pages: 1
- Sujet précédent - QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux - Sujet suivant
#1 Thu 07 August 2014 09:35
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Bonjour,
Je commence tout juste à travailler avec QGIS. Je dois créér une base de données sous PostGIS contennant simplement des géométies type POINT (x,y,z). Les différents points n'ont pas forcement le même ref spacial (celui-ci depend de nos clients). J'ai donc créé une table avec une colonne de type géometrie pour y inserer mes points. Jusque la pas de problème.
Mes questions sont :
1# Est ce que dans un même champ je peux inserer des points n'ayant pas le même SIRD ?
2# Suffit-il de le préciser lors de l'insertion des valeurs avec ma requet SQL ?
ex: INSERT INTO table (the_geom) values ( 'SRID= XXX ; POINT(X Y Z)')
3# Lors de l'inportation des données sous QGIS comment le logiciel gère ces différents référentiels spaciaux ?
Création d'un layer pas ref ? Ou mix de tous les points ensemble ? ...
J'espère avoir été assez claire.
Merci !
Hors ligne
#2 Thu 07 August 2014 10:44
- Leyan
- Participant assidu
- Date d'inscription: 14 Oct 2013
- Messages: 160
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
PostGIS sait gérer plusieurs SRID différents dans la même table? Quand tu as créé ta table, tu as créé une colonne de géométrie avec un SRID donnée non ?
Quelque chose comme "CREATE TABLE ROADS ( ID int4, ROAD_NAME varchar(25), geom geometry(LINESTRING,4326) );" => le SRID=4326
Si tu as plusieurs systèmes de coordonnées, il faudrait plutôt plusieurs tables, ou alors convertir vers un système unique.
En tout cas, QGis ne gère pas cela, si le SRID n'est pas défini par PostGIS, il va falloir donner manuellement un CRS à l'ensemble de la table d'un coup.
Hors ligne
#3 Thu 07 August 2014 11:15
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Merci beaucoup c'est déjà plus claire. C'est bien ce que je pensais malheureusement, mais je n'ai vais pas trouvé d'article me le confirmant. Je vais donc devoir bien réfléchir à la structure de ma base de données avant de me lancer !
j'ai juste uen question concernant les CRS ? Ne m'y connaissant vraiment pas en GIS, je ne sais pas ce que c'est. Peux tu m'éclairer sur le sujet ?
Hors ligne
#4 Thu 07 August 2014 11:19
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
[EDIT]Leyan a répondu pendant ma réponse[/EDIT]
Bonjour Aurélie et bienvenue,
Non, une colonne géométrique dans PostGIS ne peux contenir des géométries ayant des systèmes de projection différents.
Quand cous créez cette colonne géométrique, la projection est spécifiée :
http://postgis.net/docs/manual-2.1/usin … tial_Table
Vous pouvez par contre créer une table qui contient vos 3 colonnes x, y et z et une colonne contenant le code EPSG (nommons la code_epsg) de la projection puis générer dans une vue ou dans une colonne géométrique de votre table les géométries correspondant, reprojetées dans la projection de votre choix (disons le lambert 93)
Code:
ST_Transform(ST_SetSRID(ST_MakePoint(x, y),code_epsg),2154)::geometry(POINT,2154)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#5 Thu 07 August 2014 11:39
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Bonjour Mathieu et merci pour ta réponse.
Je reformule pour être sur d'avoir bien compris, car je suis novice dans le domaine et cela reste un peu flou encore pour le moment.
En premier lieu, il serait donc préférable de créer une table avec les 3 colonnes et le code EPSG (c'est une solution qui est simple et rapide à mettre en place, qui me plait bien ).
Dans second temps, je créer une colonne geometry et la remplit via le code que tu as fournis. Mais dans ce cas dans la même colone, je risque d'avoir des point avec srid différent.
Ou alors je dois créer une colonne différente par sird que je vais utiliser et les remplirs avec le code selon le sird spécifié ?
Dernière question tu par de vue ? Quelle est la différence entre vue et colonne géo ? As tu un lien tutoriel sur le sujet ?
Merci
Hors ligne
#6 Thu 07 August 2014 12:13
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
On part du principe que PostGIS est installé et que l'extension est chargée dans ta base de données (donc que nous travaillons avec une base de données spatiale)
En premier lieu, il serait donc préférable de créer une table avec les 3 colonnes et le code EPSG (c'est une solution qui est simple et rapide à mettre en place, qui me plait bien wink ).
c'est ça.
Ensuite, soit tu crées une vue, soit tu ajoute une colonne géométrique à ta table.
La vue est en gros une requête enregistrée, qui est calculée fois qu'on la sollicite :
http://docs.postgresql.fr/9.2/sql-createview.html
Code:
CREATE VIEW affiche_point AS SELECT id_point, x, y, z, ST_Transform(ST_SetSRID(ST_MakePoint(x, y),code_epsg),2154)::geometry(POINT,2154) AS the geom FROM ma table
Cette vue s'affichera dans QGis comme une table contenant des points en lambert 93.
L'autre option consiste a ajouter une colonne géométrique à ta table :
Dans second temps, je créer une colonne geometry et la remplit via le code que tu as fournis.
Oui : tu crées une colonne géométrique qui accueilleras des points en lambert 93:
Code:
ALTER TABLE ma_table ADD COLUMN the_geom geometry(POINT,2154);
Mais dans ce cas dans la même colone, je risque d'avoir des point avec srid différent.
Non, la fonction ST_transform va reprojeter les points depuis le SRID contenu dans la colonne "code_epsg" en lambert 93 (2154)
http://postgis.org/docs/ST_Transform.html et http://postgis.org/docs/ST_SetSRID.html et http://postgis.org/docs/ST_MakePoint.html
Pour mettre à jour la colonne géométrique, on va faire une mise à jour -UPDATE - (pour commencer c'est plus simple) :
Code:
UPDATE ma_table SET the_geom = ST_Transform(ST_SetSRID(ST_MakePoint(x, y),code_epsg),2154)::geometry(POINT,2154)
Cela devra être fait aprés l'ajout de nuveaux point.
Pour que ce soit dynamique, un trigger sera nécessaire.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#7 Thu 07 August 2014 12:22
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Merci beaucoup Mathieu ! C'est super claire maintenant ! Je pense que je vais pouvoir bien avancer !
Hors ligne
#8 Thu 25 September 2014 14:03
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Bonjour,
Je reviens sur le projet et j'ai une question concernant les code epsg. Sot il toujours égaux aux srid de postgresql ?
Aurélie
Hors ligne
#9 Thu 25 September 2014 14:09
- Miniopterine
- Participant assidu
- Date d'inscription: 29 Nov 2005
- Messages: 278
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Oui, car tous les 2 basées sur la librairie proj 4 il me semble. Et quand bien même les code EPSG sont les mêmes partout, d'où leur intérêt.
Hors ligne
#10 Thu 25 September 2014 14:55
- aurelie.guegan.15
- Juste Inscrit !
- Date d'inscription: 8 Jul 2014
- Messages: 9
Re: QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux
Super merci c'Est bien ce que je pensais, mais je préférais demander avant de faire des bêtisses ! Merci
Hors ligne
Pages: 1
- Sujet précédent - QGIS + PostGIS : utilisation de plusieurs référentiels spaciaux - Sujet suivant