Pages: 1
- Sujet précédent - Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer - Sujet suivant
#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
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 !
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 ![]()
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?
Concernant MapServer : je ne pense pas que tu utilises la version 2.3.1 !
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
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
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
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
ENDensuite 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
Pages: 1
- Sujet précédent - Import/Affichage shapefile: PostgreSQL/PostGIS/MapServer - Sujet suivant

