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 Fri 31 July 2009 15:33

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Bonjour,

A vrai dire, je me mêle vraiment les pinceaux en ce moment concernant Mapserver, PostGIS et PostgreSQL. En fait, mon boulo est l'import des données à partir de fichiers shp dans une base de données spatiale (càd PostgreSQL/PostGIS) puis afficher ces données avec Mapserver.

Je travaille sous Windows XP.

J'ai installé:
* Mapserver 2.3.1 (je ne sais pas si je dois faire une configuration en particulier pour utiliser MapServer avec PostGIS)
* Postgres Plus Advanced Server 8.3R2 avec PostGIS 1.3.5 (J'ai suivi la doc officielle de PostgreSQL)

En essayant d'appliquer:
1) J'arrive à créer une BD spatiale et la remplir avec des données avec des requêtes SQL simples
2) Quand j'essaie d'importer les données d'une liste de shapfile dans ma base avec le code suivant dans ma fenêtre MinGW après m'être placée dans le dossier contenant les shapefiles:

Code:

for i in $(find . | grep shp);do shp2pgsql -dDI $i $(basename $i .shp) | psql madatabase;done

j'ai cette erreur:

Code:

psql: FATAL:  password authentication failed for user "Administrateur"

Et même si je voix bien qu'elle est liée à la connexion au serveur PostgreSQL, je ne trouve pas comment la résoudre.
3) J'ai essayé d'afficher avec MapServer les données que j'ai entrées avec une requête sql simple dans ma base mais j'ai l'erreur suivante que je ne sais pas comment résoudre même en considérant l'aide proposée dans le texte suivant l'erreur:

Code:

msDrawMap(): Image handling error. Failed to draw layer named 'parcours'. msPOSTGISLayerOpen(): Query error. Couldn't make connection to DB with connect string 'user=manager dbname=madatabase host=localhost'. Error reported was 'fe_sendauth: no password supplied '. This error occured when trying to make a connection to the specified postgresql server. Most commonly this is caused by (1) incorrect connection string (2) you didnt specify a 'user=...' in your connection string (3) the postmaster (postgresql server) isnt running (4) you are not allowing TCP/IP connection to the postmaster (5) your postmaster is not running on the correct port - if its not on 5432 you must specify a 'port=...' (6) the security on your system does not allow the webserver (usually user 'nobody') to make socket connections to the postmaster (7) you forgot to specify a 'host=...' if the postmaster is on a different machine (8) you made a typo

J'espère trouver un coup de main ici.
Merci.

Hors ligne

 

#2 Fri 31 July 2009 15:40

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

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

modifie psql madatabase; par psql madatabase -U postgres;

en gros par défaut  il utilise le nom de la base comme nom d'utilisateur. s'il est différent spécifie le !

Concernant MapServer : je ne pense pas que tu utilises la version 2.3.1 ! wink La dernière est la 5.4.2

D'autre par dans le mapfile il faut définir le mdp :

Error reported was 'fe_sendauth: no password supplied '


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

 

#3 Fri 31 July 2009 16:20

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Merci Yves pour ta réponse.. toujours près à aider.. J'admire smile

Yves a écrit:

modifie psql madatabase; par psql madatabase -U postgres;


J'ai changé l'utilisateur comme tu me l'a indiqué mais j'ai toujours la même erreur. peut-être je dois spécifier le mot de passe avec l'utilisateur. Mais comment?

Yves a écrit:

Concernant MapServer : je ne pense pas que tu utilises la version 2.3.1 ! wink La dernière est la 5.4.2


en fait la version 2.3.1 c'est la version du package binaire ms4w téléchargé sur cette page http://maptools.org/ms4w/index.phtml?pa … loads.html

Yves a écrit:

D'autre par dans le mapfile il faut définir le mdp :

Error reported was 'fe_sendauth: no password supplied '


ici aussi je doit spécifier le mot de passe de l'utilisateur apparemment. Mais comment le faire dans le mapfile? Serait-ce dans cette ligne? et si oui comment?:

Code:

CONNECTION "user=manager dbname=madatabase host=localhost"

Hors ligne

 

#4 Fri 31 July 2009 16:35

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

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Bonjour,

autre technique ;

Code:

su postgres

puis lance ton script.

pour Mapserver :

Code:

CONNECTION "user=manager dbname=madatabase host=localhost password=monMDP"

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

 

#5 Mon 03 August 2009 09:58

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Bonjour,

J'ai essayé une autre methode pour l'ajout des données du shape dans la base (j'ai utilisé une autre base et un autre shape):

Code:

psql testgis -U manager | shp2pgsql -dDI EXP_SEGMENT_FONCTIONNEL ams

en exécutant cette commande sur MinGW, la création de la table ams et l'ajout des données sont effectués. Le seul problème est que quand j'essai de voir le résultat à partir de Postgre Studio, il n'y a rien de nouveau dans ma base testgis! Comment savoir si les modifications ont été effectuées? Postgre Studio ne communique-t-il pas avec les mêmes bases manipulées à partir de MinGW?

Une autre remarque: à la fin de l'exécution de shp2pgsql -dDI EXP_SEGMENT_FONCTIONNEL ams MinGW me demande le mot de pase de l'utilisateur manager et quand je lui donnele mdp, le curseur fait un saut de ligne et se trouve au début d'une ligne vide (normalment il attend des requêtes sql uniquement dans ce mode) mais je ne sais pas comment revenir à la ligne de commande normale à partir de là.

Hors ligne

 

#6 Mon 03 August 2009 10:34

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

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Bonjour,

La commande normale est celle-ci :

Code:

shp2pgsql -dDI EXP_SEGMENT_FONCTIONNEL ams | psql testgis -U manager

On créer les commandes sql avec shp2pgsql puis on l'envoie dans la commande psql.

Y.
PS : je déplace le thread dans le forum GeoBD.


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

 

#7 Mon 03 August 2009 12:01

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

pour l'affichage des données j'ai mis le mot de passe comme tu as indiqué Yves et j'ai cette erreur:

msDrawMap(): Image handling error. Failed to draw layer named 'parcours'. prepare_database(): Query error. Error declaring cursor: ERROR: find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch? With query string: DECLARE mycursor BINARY CURSOR FOR SELECT "id"::text,asbinary(force_collection(force_2d( line_substring)),'NDR'),id::text from (select '[ Parcours ]'::text as id , line_substring (the_geom ,0 ,0.716763707222655) from great_roads where data like '%Paul%') as foo WHERE line_substring && setSRID('BOX3D(-10 -11.5831663326653,10 11.5831663326653)'::BOX3D, find_srid('','great_roads',' line_substring') )


J'ai essayé de changer ma requète comme la solution indiquée dans l'erreur:

Code:

DECLARE mycursor BINARY CURSOR FOR SELECT "id"::text,asbinary(force_collection(force_2d( line_substring)),'NDR'),id::text from (select '[ Parcours ]'::text as id , line_substring (the_geom ,0 ,0.716763707222655) from great_roads where data like '%Paul%') as foo WHERE line_substring && setSRID('BOX3D(-10 -11.5831663326653,10 11.5831663326653)'::BOX3D, find_srid('','great_roads',' line_substring') )

mais il me donne cette erreur:

getString(): Symbol definition error. Parsing error near ( DECLARE mycursor BINARY CURSOR FOR SELECT ):(line 15)


Une idée?

Dernière modification par abir_rzg (Mon 03 August 2009 12:33)

Hors ligne

 

#8 Mon 03 August 2009 15:13

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer

Hello there!

Finalement l'import des données du shapefile a marché quand j'ai utilisé la ligne de commande DOS et non MinGW! Apparement il y avait un problème quelque part là.

Pour l'affichage, ça a aussi marché finalement avec une requête moins compliquée et à partir des données que je viens d'importer.

En résumé pour les débutants comme moi que ça interesse:

Préparer PostgreSQL pour accueillir une BD spatiale:
Copier les fichiers suivants vers les destinations mentionnées:

         %EDB_HOME%\spatial\lib\liblwgeom.dll    ->   %EDB_HOME%\dbserver\lib
         %EDB_HOME%\spatial\lib\libgeos-2.dll    ->   %EDB_HOME%\dbserver\bin
         %EDB_HOME%\spatial\lib\libgeos_c-1.dll  ->   %EDB_HOME%\dbserver\bin
         %EDB_HOME%\spatial\share\*              ->   %EDB_HOME%\dbserver\share\contrib

définier les variables d'environnements relatives à psql et shp2pgsql car nous allons les utiliser en ligne de commande DOS.

Mettre en place la BD spatiale:
à partir de l'interpretteur de commande EDB-PSQL ou bien à partir de PostGres Studio (Outil->Editeur de requête) créer une nouvelle BD puis exécuter pour cette BD les fichiers sql suivants:

               %EDB_HOME%\dbserver\share\contrib\lwpostgis.sql
               %EDB_HOME%\dbserver\share\contrib\spatial_ref_sys.sql

Importer les données d'un shapefile:
taper en ligne de commade DOS

Code:

shp2pgsql -dDI chemin_du_shapefile\nom_du_shapefile nom_de_la_table | psql nom_de_la_BD -U nom_de_lutilisateur

Afficher les données stockées dans la base:
définier le mapfile comme suit:

Code:

MAP
  IMAGETYPE      PNG
  EXTENT         #définir les extents comme trouvées dans les infos en tapant dans la ligne de commande de mapserver [b]ogrinfo -al -so chemin_du_shapefile\nom_du_shapefile.shp[/b]
SIZE           400 300
  IMAGECOLOR     255 255 255
  LAYER
    CONNECTION   "user=_nom_utilisateur dbname=nom_BD host=localhost password=mdp_utilisateur"
    CONNECTIONTYPE POSTGIS
    NAME         nom_du_layer
    DATA         "the_geom from (select * from nom_table) foo USING UNIQUE gid"
    STATUS       DEFAULT
    TYPE         LINE #on le défini selon le type de données du shapefile trouvées dans les infos en tapant dans la ligne de commande de mapserver [b]ogrinfo -al -so chemin_du_shapefile\nom_du_shapefile.shp[/b]
CLASS
        NAME       'nom_de_la_classe'
        STYLE
            COLOR        32 32 32
        END
    END
  END
END

ensuite pour exécuter le mapfile et afficher les données sur le navigateur taper l'url suivant:

Code:

http://localhost:num_du_port_du_serveur_apache_de_mapserver/cgi-bin/mapserv.exe?map=chemin_du_mapfile/nom_du_mapfile.map&layer=nom_du_layer&mode=map

Hors ligne

 

Pied de page des forums

Powered by FluxBB