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 !.
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

Printemps des cartes 2024

#1 Tue 05 March 2013 13:42

Mirekium
Participant occasionnel
Lieu: Paris
Date d'inscription: 5 Jun 2010
Messages: 15

Conversion de shapefiles à postgis

Quelques questions concernant la conversion de shapefile à postgis :
1- J’ai installé Postgis 2.0.1 sur postgrsql 9.2.3 ça marche très bien j’arrive à afficher mes cartes via Qgis, sauf que sur mes tables dans Postgrsql je ne vois pas les contraintes habituelles :
-enforce_srid_the_geom
-enforce_dims_the_geom
-enforce_geotype_the_geom
Est ce que c’est normal?!

2- En utilisant l’interface graphique « PostGIS Shapefile and DBF Loader » j’obtiens automatiquement un SRID de valeur ( -1) dans les anciennes versions de postgis et (0) dans la dernière version 2.0.1 , s’agit il d une erreur de conversion ! faut il le modifier et mettre le bon SRID ou on peut le laisser comme ça ? et comment le faire sachant qu’avec la dernière version postgis 2.0.1, on ne voit plus la contrainte enforce_srid_the_geom, et la seul trace du SRID est dans la geometry_columns au niveau des Vues.
Et donc la solution apportée par david.techer sur cette discussion n est plus valable : http://www.forumsig.org/showthread.php?t=19572


3- Dernière question, que ce soit en utilisant l’interface graphique « PostGIS Shapefile and DBF Loader », ou la console avec la commande shp2pgsql ça ne marche qu’on spécifiant l’encodage LATIN1 (il s’agit de l’encodage source si j’ai bien compris) sachant que j’ai besoin de l’encodage UTF-8, et du coup avec l’encodage : LATIN1 les données écrites en caractères non latin s’affichent en points d’interrogation.
A plus
Mirekium

Hors ligne

 

#2 Tue 05 March 2013 15:29

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: Conversion de shapefiles à postgis

Bonjour,
concernant le point 3, si votre shapefile est encodé en latin1, il serait peut être utile d'effectuer un prétraitement et de le convertir en UTF-8 avant de l'enregistrer dans votre bdd (http://gis.stackexchange.com/questions/ … 1-to-utf-8).
Je ne sais pas si shp2pgsql peut convertir des encodages a la volée.

Dernière modification par tumasgiu (Tue 05 March 2013 15:44)

Hors ligne

 

#3 Tue 05 March 2013 16:23

Mirekium
Participant occasionnel
Lieu: Paris
Date d'inscription: 5 Jun 2010
Messages: 15

Re: Conversion de shapefiles à postgis

Bonjour tumasgiu

Merci pour le lien : il s agit d'une commande ogr2ogr pour changer d'encodage si j'ai bien compris, en fait mon shape est déjà en UTF-8 ainsi que ma bd sauf que le logiciel "PostGIS Shapefile and DBF Loader" et aussi la commande shp2pgsql t'oblige à mettre LATIN1 comme encodage pour que ça fonctionne et peu importe l'encodage sourde ou destination que t'as , quand il s'agit de lettres latines il n y a pas de problème j ai un  UTF-8 en source et aussi en destination sur la bd tant que ça marche, mettre LATIN1 sur "PostGIS Shapefile and DBF Loader" ou dans la commande  shp2pgsql  ça me dérange pas , sauf quand c'est des lettres non latines , on obtient des  points d’interrogation à leur place !!!

peut être un ogr2ogr qui transforme un shape en postgis serait meilleur dans ce cas!

Hors ligne

 

#4 Tue 05 March 2013 16:41

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Conversion de shapefiles à postgis

Bonjour,

La nouvelle version de Postgis change des choses:

Point 1: les contraintes ne sont plus nécessaires et sont remplacées par la fonctionnalité "typemod" permettant de definir des modifications du type geometrie: lors de la definition de la colonne geo, on peut ecrire:

geom geometry(Point, 2154);

Ce qui veut dire: une geometrie de type POINT en SRID 2154.
Du coup, Postgresql vérifie, comme avec des contraintes, que type et SRID soient respectés.
(c'est tres puissant)

Point 2: L'OGC a changé le code "SRID non défini" en le passant de -1 a 0, donc les données chargées dans PGis 2.0 sans préciser le SRID auront 0 comme SRID.

Point 3:

Si le DBF du shapefile est bien en UTF8, alors SHP2PGSQL ne se plaindra pas.
Il ne FAUT PAS mettre LATIN1 si ce n'est pas l'encodage du shapefile !
Shp2pgsql donne un conseil en citant LATIN1 comme encodage possible de la source.

S'il y a des caractères bizarres dans Postgresql apres import avec shp2pgsql, c'est que l'encodage de la source n'est pas le bon. Il vous faut demander au fournisseur de la donnée quel est l'encodage.

Il n'y a pas besoin de convertir le shapefile avant d'utiliser shp2pgsql, l'option -W permet justement cela.

Nicolas

Hors ligne

 

#5 Wed 25 September 2013 15:10

diletant2
Participant occasionnel
Date d'inscription: 10 Feb 2010
Messages: 36

Re: Conversion de shapefiles à postgis

Bonjour,

A propos du point 3), je rencontre un problème avec l'insertion d'un shapefile dans une base PostGIS

La génération du script .sql par shp2pgsql est ok : un fichier .sql est créé.

Code:

shp2pgsql -c -D -s 4326 -W "UTF-8" fichier.shp schema.table

mais je reçois le message d'erreur suivant sur une des lignes du fichier .sql lors de l'exécution de psql

Code:

psql -f fichier.sql -h host -d dbname -U user

psql:fichier.sql:1543079: ERROR:  c
haracter 0x81 of encoding "WIN1252" has no equivalent in "UTF8"
CONTEXTE : COPY nw, line 1481079
ROLLBACK


Pourtant, mon shapefile (dbf) à insérer est censé être encodé en UTF-8, tout comme la base

Code:

       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.UTF-8'
       LC_CTYPE = 'en_US.UTF-8'
       CONNECTION LIMIT = -1;

à aucun moment, je ne spécifie quoique ce soit en WIN1252 !!

Dernière modification par diletant2 (Wed 25 September 2013 15:49)

Hors ligne

 

#6 Wed 25 September 2013 17:46

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Conversion de shapefiles à postgis

Bonsoir,

Pouvez-vous tester en enchainant les deux commandes ?

shp2pgsql -W "UTF-8" ... | psql -h host -d dbname -U user

Nicolas

Hors ligne

 

#7 Wed 25 September 2013 17:57

diletant2
Participant occasionnel
Date d'inscription: 10 Feb 2010
Messages: 36

Re: Conversion de shapefiles à postgis

Problème résolu !

Voici l'explication : au début du fichier .sql le programme shp2pgsql insère à la 1e ligne la commande SQL suivante

Code:

SET ENCODING_CLIENT UTF8

Cette commande ne fonctionne pas comme l'indique ce ticket
yigJ7Sw2XXdb-t-PxLA@texte-a-enlever.mail.gmail.com">http://www.postgresql.org/message-id/CA … .gmail.com

et donc la commande psql

Code:

\echo :ENCODING

me renvoyait

WIN1252


qui doit donc être la valeur par défaut (!!??)

en règlant la variable d'environnement du client : PGCLIENTENCODING à UTF8
La commande fonctionne

Code:

psql -f fichier.sql -h host -d dbname -U user

Hors ligne

 

#8 Wed 25 September 2013 18:49

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: Conversion de shapefiles à postgis

Salut,

me renvoyait

    WIN1252

qui doit donc être la valeur par défaut (!!??)


effectivement, j'ai souvenance que c'est la locale par défaut lors d'une installation windows.

Merci du retour en tout cas.

Hors ligne

 

Pied de page des forums

Powered by FluxBB