banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1224
Site web

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 wink ).

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1224
Site web

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

 

Pied de page des forums

Powered by FluxBB