#1 Thu 29 April 2010 14:04
QGIS + PostGIS : Import de Shape BDTOPO
Bonjour,
dans QGIS j'essaie d'importer des couches de la BDTOPO dans une base Postgres/Postgis avec le module SPIT.
Mais il y a une erreur dans l'import que je ne comprends pas:
Code:
Problème d'insertion des données du fichier: C:/Documents and Settings/Bouteillesb/Bureau/ROUTE_PRIMAIRE.SHP La base de donnée a retourné l'erreur suivante lors de l'exécution de cette requête SQL : SELECT AddGeometryColumn('public','ROUTE_PRIMAIRE','the_geom',-1,'NULL',2) M'erreur était : ERREUR: Invalid type name - valid ones are: POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, CIRCULARSTRING, COMPOUNDCURVE, MULTICURVE, CURVEPOLYGON, MULTISURFACE, GEOMETRY, GEOMETRYCOLLECTION, POINTM, MULTIPOINTM, LINESTRINGM, MULTILINESTRINGM, POLYGONM, MULTIPOLYGONM, CIRCULARSTRINGM, COMPOUNDCURVEM, MULTICURVEM CURVEPOLYGONM, MULTISURFACEM, or GEOMETRYCOLLECTIONM CONTEXT: SQL statement "SELECT AddGeometryColumn('', $1 , $2 , $3 , $4 , $5 , $6 )" fonction PL/pgsql « addgeometrycolumn », ligne 4 à instruction SQL
Je précise que j'ai déjà pu importer plusieurs fichier shp avec cette méthode... et que mes shape sont complets (fichiers: .AVL + .DBF + .LYR + .PRJ + .SHP + .SHX))
Si vous avez une idée je suis preneur...
merci beaucoup
Bertrand
Hors ligne
#2 Thu 29 April 2010 17:07
- ppluvinet
- Participant assidu
- Lieu: LYON
- Date d'inscription: 6 Aug 2007
- Messages: 609
Re: QGIS + PostGIS : Import de Shape BDTOPO
Le problème vient semble -t-il du type d'objet, mais je n'ai jamais rencontré ce type d'erreur.
D'habitude je rencontre moins de problème en important des shapes dans postgis avec la fonction shp2pgsql (en ligne de commande)
Code:
---ex shp2pgsql -s 27572 -dDI C:\PG_Data\BDTOPO\bati\66\E_BATI\BATI_INDIFFERENCIE_L2E.shp bati.BATI_INDIFFERENCIE_L2E_66 | psql -U admin mabase
Pascal PLUVINET
Hors ligne
#3 Thu 29 April 2010 20:19
Re: QGIS + PostGIS : Import de Shape BDTOPO
Bonjour,
Il semble qu'il ne soit pas possible de déterminer le type d'objet géométrique. L'option de pascal te permettra de regarder dans le fichier sql que tu peux générer sans rajouter "| psql ..." mais en mettant > monfichier.sql
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
#4 Fri 30 April 2010 18:39
Re: QGIS + PostGIS : Import de Shape BDTOPO
Bonjour,
merci pour vos réponses et conseils.
J'ai lancé la commande que m'a recommandé ppluvinet, voici le message d'erreur:
Code:
ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe02032 ASTUCE : Cette erreur peut aussi survenir si la séquence d'octets ne correspond pas au jeu de caractères attendu par le serveur, le jeu étant contrôlé par « client_encoding ». ROLLBACK
Il semblerait que ce soit un problème de codage de caractère mais la BDTOPO est annoncée en UTF8 dans sa métadonnée, pareil que pour ma base Postgres...
Du coup j'ai suivi le conseil d'Yves et j'ai exécuté dans la fenêtre sql de PgAdmin les premières lignes de mon fichier:
Code:
SET STANDARD_CONFORMING_STRINGS TO ON; SELECT DropGeometryColumn('route','route_primaire','the_geom'); DROP TABLE "route"."route_primaire"; BEGIN;
Et donc même sans créer la table derrière j'ai déjà l'erreur suivante:
Code:
NOTICE: Invalid schema name - using current_schema() CONTEXT: SQL statement "SELECT DropGeometryColumn('', $1 , $2 , $3 )" fonction PL/pgsql « dropgeometrycolumn », ligne 4 à instruction SQL ERREUR: column not found in geometry_columns table CONTEXT: SQL statement "SELECT DropGeometryColumn('', $1 , $2 , $3 )" fonction PL/pgsql « dropgeometrycolumn », ligne 4 à instruction SQL ********** Erreur ********** ERREUR: column not found in geometry_columns table État SQL :P0001 Contexte : SQL statement "SELECT DropGeometryColumn('', $1 , $2 , $3 )" fonction PL/pgsql « dropgeometrycolumn », ligne 4 à instruction SQL
J'avoue que je ne comprends pas bien vers où chercher n'étant pas un pro du sql !
Si vous avez des pistes...
B
Hors ligne
#5 Sun 02 May 2010 05:11
Re: QGIS + PostGIS : Import de Shape BDTOPO
Bonjour,
Les requêtes que vous cherchez à exécuter vous renverrons une erreur et c'est normal
La première signifie supprime la ligne dans la table geometry_columns
SELECT DropGeometryColumn('route','route_primaire','the_geom');
La deuxième signifie supprime la table portant le nom "route"
DROP TABLE "route"."route_primaire";
Dans les deux cas, ça ne peut pas marcher car votre table "route" n'a jamais existée dans PostgreSQL.
Vous devez enlever le "d" de l'exemple de ppluvinet : il signifie supprime la table avant d'insérer (il rajoute les deux lignes citées au dessus)
Code:
shp2pgsql -s 27572 -DI C:\PG_Data\BDTOPO\bati\66\E_BATI\BATI_INDIFFERENCIE_L2E.shp bati.BATI_INDIFFERENCIE_L2E_66 | psql -U admin mabase
Pour comprendre un peu plus ce que vous faites avec shp2pgsql, tapez
Code:
shp2pgsql
Cela vous renvoie les options
Cordialement
ThomasG
Hors ligne