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Ă© ?

#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: 10053
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: 10053
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: 10053
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

Copyright Association GeoRezo