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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 04 March 2014 16:52

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

[Postgis 2.1] utilisation de shp2pgsql

Bonjour

J'essaye d'importer des fichiers shp (bd topo de l'IGN de 2011) dans ma base postgresql9.3/postgis2.1 sur windows7.
Que je le fasse en ligne de commande ou via l'interface graphique, j'obtient la même erreur :

Code:

CREATE TABLE "public"."route_secondaire" (gid serial,
"id" varchar(24),
"prec_plani" float8,
"prec_alti" float8,
"nature" varchar(19),
"numero" varchar(10),
"nom_voie_g" varchar(14"
Failed in pgui_exec(): ERREUR:  la fonction addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) n'est pas unique
LINE 42: SELECT AddGeometryColumn('public','route_secondaire','geom',...
                ^
HINT:  N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez
avoir besoin d'ajouter des conversions explicites de type.

Shapefile import failed.

J'ai fait plusieurs essais avec d'autres options, rien n'y fait, ça coince sur la création de la colone de géométrie a priori.

Hors ligne

 

#2 Tue 04 March 2014 16:58

PA
Membre
Lieu: Paris
Date d'inscription: 5 Sep 2005
Messages: 3259
Site web

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Un peu de lecture, au cas où.

http://georezo.net/forum/viewtopic.php?pid=152944


Pierre-André Le Ny
Modérateur QGIS, Données, Coin de l'OpenSource
Aidez l'association GeoRezo !

Hors ligne

 

#3 Wed 05 March 2014 10:18

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

J'avais déjà vu ce post mais j'utilise shp2pgsql (plugin graphique ou en ligne de commande). Ma source est en shp et non en sql.

Hors ligne

 

#4 Wed 05 March 2014 10:37

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

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Vous pouvez nous poster la ligne de commande shp2pgsql utilisée ?
Et également:

la version de la base cible, telle que renvoyée par:

select postgis_full_version();

Et vérifier si le programme shp2pgsql appelé est bien celui contenu dans le repertoire bin de l'installation PG 9.3/Postgis 2.1 ?

Merci

Nicolas

Hors ligne

 

#5 Wed 05 March 2014 12:29

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Voici ma version de postgis :

postgis_full_version

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------
POSTGIS="2.1.0 r11822" GEOS="3.4.2-CAPI-1.8.2 r3924" PROJ="Rel. 4.8.0, 6 March
2012" GDAL="GDAL 1.10.0, released 2013/04/24" LIBXML="2.7.8" LIBJSON="UNKNOWN" T
OPOLOGY RASTER
(1 ligne)


Voici le code utilisé :

Code:

C:\Program Files\PostgreSQL\9.3\bin>shp2pgsql -g the_geom -I -W LATIN1 "C:\le_chemin\BDT_2-1_SHP_LAMB93_ED113\H_ADMINISTRATIF\COMMUNE.shp" | psql -U rmunier bd_sig_ccmm

Hors ligne

 

#6 Wed 05 March 2014 12:49

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

Re: [Postgis 2.1] utilisation de shp2pgsql

Ok:

Il manque le nom de la table cible dans la ligne de commande:

... _LAMB93_ED113\H_ADMINISTRATIF\COMMUNE.shp" <NOM DE TABLE> | psql -U rmunier bd_sig_ccmm...

(du coup, addGeometryColumn est appelée sans nom de table et ca plante car plusieurs versions de addGeometryColumn existent avec le nombre de parametres générés par shp2pgsql).

Nico

Hors ligne

 

#7 Wed 05 March 2014 13:45

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Et ce nom de table doit correspondre à une table existante mais vide?

Si c'est le cas, c'est dommage de devoir créer la table alors que tout est dans le fichier shp. D'ailleurs ça marchait avec l'ancienne version sur postgresql 8.4.

Dans le cas contraire, ça ne fonctionne toujours pas avec :

Code:

C:\Program Files\PostgreSQL\9.3\bin>shp2pgsql -g the_geom -I -W LATIN1 "C:\le_chemin\BDT_2-1_SHP_LAMB93_ED113\H_ADMINISTRATIF\COMMUNE.shp" administrations.communes | psql -U rmunier bd_sig_ccmm

Hors ligne

 

#8 Wed 05 March 2014 15:04

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Tu peux générer le fichier SQL au lieu de l'envoyer vers psql -U [...] et ainsi vérifier que les requêtes sont correctes ou pas dans ce cas tu trouveras peut être la raison du plantage !

Code:

C:\Program Files\PostgreSQL\9.3\bin>shp2pgsql -g the_geom -I -W LATIN1 "C:\le_chemin\BDT_2-1_SHP_LAMB93_ED113\H_ADMINISTRATIF\COMMUNE.shp" administrations.communes  > import.sql

Sinon tu peux loguer les requêtes pour voir laquelle fait planter l'import.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#9 Wed 05 March 2014 15:23

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [Postgis 2.1] utilisation de shp2pgsql

Autre info après relecture du message de Romary.

Juste pour info : le nom de la table a définir est le nom de la table qui sera utilisé pour la création. La table ne doit pas exister et shp2pgsql générera la requête SQL pour créer la dite table avec le bon nom.

Le fait de pouvoir définir le nom de la table te permet également de définir le schéma dans lequel se trouvera la table : monchema.matable

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Thu 06 March 2014 08:18

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Alors voilà le résultat de la transformation en sql :

Code:

SET CLIENT_ENCODING TO UTF8;
SET STANDARD_CONFORMING_STRINGS TO ON;
BEGIN;
CREATE TABLE "public"."communes" (gid serial,
"id" varchar(254),
"prec_plani" numeric,
"nom" varchar(254),
"code_insee" varchar(254),
"statut" varchar(254),
"canton" varchar(254),
"arrondisst" varchar(254),
"depart" varchar(254),
"region" varchar(254),
"popul" int4,
"multican" varchar(254));
ALTER TABLE "public"."communes" ADD PRIMARY KEY (gid);
SELECT AddGeometryColumn('public','communes','the_geom','0','MULTIPOLYGON',4);
INSERT INTO "public"."communes" ("id","prec_plani","nom","code_insee","statut","canton","arrondisst","depart","region","popul","multican",the_geom) VALUES (..........etc.)

et le message d'erreur remonté :

ERREUR:  la fonction addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) n'est pas unique
LINE 17: SELECT AddGeometryColumn('public','communes','the_geom','0',...
                ^
HINT:  N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez
avoir besoin d'ajouter des conversions explicites de type.
********** Erreur **********

ERREUR: la fonction addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) n'est pas unique
État SQL :42725
Astuce : N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez
avoir besoin d'ajouter des conversions explicites de type.
Caractère : 431

Hors ligne

 

#11 Thu 06 March 2014 09:13

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,
Il existe plusieurs fonctions addgeometrycolumn dans les fonctions Postgis. Elles font la même chose, sauf que le nombre de paramètres à passer sont différents. Certains sont mis par défaut.
Dans la syntaxe que vous utilisez que donne ?

Code:

SELECT AddGeometryColumn('public','communes','the_geom','0','MULTIPOLYGON',4,True);

True est le dernier paramètre use_typmod, avec cette syntaxe vous avez tous les paramètres d'une implémentation de la fonction AddGeometryColumn.

Nicolas GRANIER

Hors ligne

 

#12 Thu 06 March 2014 09:26

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Il y a plusieurs problèmes : la projection (et peut être la dimension) sont fausses ! 0 (et 4) sont des valeurs aberrante. Quand on regarde la commande il manque bien l'option -s 2154 par exemple pour définir la projection. En plus il la définie comme une chaîne et pas comme un entier '0' et pas 0 (le 0 dan,s postgis 2.0 est comme -1 dans postgis 1.5 et inf. : projection inconnue).

Concernant la dimension, es tu sur que tes données sont en 4D ? Si oui tu peux tester après avoir rajouter l'option de la projection et voir ce que cela donne.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#13 Thu 06 March 2014 09:50

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Oui j'ai déjà essayé en mettant -s 2154 et -t 2D mais rien n'y fait, toujours la même erreur.
Et dans tous les cas, il met le srid entre guillemet 'srid'

Hors ligne

 

#14 Thu 06 March 2014 10:09

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

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Quelle est la version de shp2pgsql ? (lancer la commande sans parametre pour avoir la version)

Nico

Hors ligne

 

#15 Thu 06 March 2014 10:45

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

RELEASE : 2.1.0 (r11822)

Hors ligne

 

#16 Thu 06 March 2014 11:35

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

Re: [Postgis 2.1] utilisation de shp2pgsql

Hmm curieux, effectivement.

En vrac:

• Combien avez vous de fonctions addGeometryColumn, dans la base dans laquelle vous souhaitez importer un shapefile ?
(pgAdmin -> noeud "Fonctions" du schema "public" de la base)

• Avez vous installé postgis dans un autre schema que public ?

• Que vaut la variable search_path sur la base (commande sql: show search_path;

Nicolas

Hors ligne

 

#17 Thu 06 March 2014 11:44

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Nicolas Ribot a écrit:

• Combien avez vous de fonctions addGeometryColumn, dans la base dans laquelle vous souhaitez importer un shapefile ?
(pgAdmin -> noeud "Fonctions" du schema "public" de la base)
Nicolas


Il y a 1285 fonctions dans le schéma public dont 6 "addGeometryColumn"

Nicolas Ribot a écrit:

• Avez vous installé postgis dans un autre schema que public ?
Nicolas


Postgis est installé pour toute la base de données... les fonctions n'apparaissent que dans le schéma public.


Nicolas Ribot a écrit:

• Que vaut la variable search_path sur la base (commande sql: show search_path;
Nicolas


show search_path;=> ""$user", public, topology"

Hors ligne

 

#18 Fri 07 March 2014 12:13

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

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Ca fait beaucoup de définitions pour addGeometryColumn.
Je n'en ai que 3 dans ma base (memes versions que chez vous)

Pouvez-vous créer une nouvelle base vierge, y installer Postgis (create extension postgis;) et relancer shp2pgsql sur cette base ?

Nicolas

Hors ligne

 

#19 Tue 18 March 2014 15:12

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Bonjour,

Je viens de tester l'intégration par le plugin dans la base postgis_21_sample créée par défaut lors de l'installation.

Cela fonctionne (avec un encodage LATIN1).

Je vais faire un peu de ménage dans mes extensions sur ma bd opérationnelle.

Merci pour votre précieuse aide.

Romary

Hors ligne

 

#20 Tue 18 March 2014 16:57

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: [Postgis 2.1] utilisation de shp2pgsql

Et j'ai aussi supprimé 3 des 6 fonctions addgeometrycolumn que j'avais en trop dans ma base en comparant avec les fonctions de la bd postgis_21_sample et maintenant ça fonctionne aussi sur la base!

Merci.

Hors ligne

 

#21 Wed 09 March 2016 16:27

rhum8838
Juste Inscrit !
Date d'inscription: 9 Mar 2016
Messages: 4

Re: [Postgis 2.1] utilisation de shp2pgsql

.

Dernière modification par rhum8838 (Wed 09 March 2016 16:35)

Hors ligne

 

Pied de page des forums

Powered by FluxBB