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 29 April 2010 14:04

Berto
Participant actif
Lieu: Veyras
Date d'inscription: 19 Feb 2009
Messages: 68
Site web

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

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

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

Berto
Participant actif
Lieu: Veyras
Date d'inscription: 19 Feb 2009
Messages: 68
Site web

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

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 946
Site web

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

 

Pied de page des forums

Powered by FluxBB