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 Tue 04 February 2014 15:19

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Afficher un .map via PostGIS et Mapserver

Bonjour à tous

Je suis très fier d'avoir mon serveur carto MapServer et ma base PostGIS (avec fonction spatiale !) sur un serveur web mutualisé, et ce grâce à un hébergeur dont je tairais le nom mais que tout le monde a deviné  !

Cependant, en faisant mes premiers tests, j'ai un problème dans l'affichage d'une couche de ma base PostGIS.

Pour être clair, je vais tenter de résumer brièvement ce que j'ai fait et ou j'en suis :

>>> Création d'un lien symbolique vers Mapserver dans le répertoire cgi-bin : OK
À l'adresse URL de type :
http://MONSITE.hébergeur.net/cgi-bin/mapserv

... j'ai bien le message :
No query information to decode. QUERY_STRING is set, but empty.

Message qui indiquerait que MapServer est prêt à fonctionné (?).

>>> Import de données spatiales dans ma base PostGIS (phpPgAdmin) : OK
Pour être sûr, j'ai exporté en csv une table que j'avais dans un PgAdmin en local, table qui s'affiche parfaitement sur QGIS, table de points autour de la France en projection 4326.
J'ai ensuite créé une table vierge dans phpPgAdmin puis importé le fichier csv (là j'ai noté que le SRID passait à -1, je l'ai passé en 4326 via une requête SQL qui s'est déroulée sans problème).

>>> Création d'un fichier map pour faire le lien de PostGIS à MapServer : apparemment OK mais...
Une adresse de type :
http://NOMDU SITE.hébergeur.net/cgi-bin/mapserv?mode=map&map=mapfiles/reacteurs.map

... m'affiche une page blanche mais aucune erreur (ni Chrome ni Mozilla firebug).
Quand je crée volontairement une erreur à l'intérieur, la page m'affiche bien une erreur, mais sinon juste une page blanche.

Mon fichier .map se trouve dans cgi-bin/mapfiles/reacteurs.map

Je soupçonne donc mon .map d'être à l'origine de cette page blanche. Je vous transmets mon fichier map, car je l'ai "bricolé" en glanant des infos par-ci par-là.

Code:

MAP
  SYMBOL
     NAME "Circle"
     FILLED true
     TYPE ellipse
     POINTS 1 1 END
  END
  IMAGETYPE      PNG
  EXTENT         -303497.871824 -420372.900170 775689.113184 671148.867470
  SIZE           1200 600
  IMAGECOLOR     255 255 255
  TRANSPARENT    ON
  LAYER
      CONNECTIONTYPE POSTGIS
    NAME "reacteurs_service"
      CONNECTION "user=xxxpassword=xxx dbname=xxx host=xxx port=5432"
      DATA "geom from reacteurs_service using unique id using srid=4326"
      STATUS DEFAULT
      TYPE POINT
        CLASS
          NAME "reacteurs_service"
          STYLE
             SYMBOL "Circle"
             COLOR        232 232 232
             OUTLINECOLOR 32 32 32
          END
    END
  END
END

Merci à ceux qui auront le temps de jeter un coup d’œil, et j'espère que ça pourra en aider d'autres !!!

Dernière modification par Georgie (Tue 04 February 2014 15:22)

Hors ligne

 

#2 Tue 04 February 2014 18:03

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: Afficher un .map via PostGIS et Mapserver

Bonjour,

Si aucun message d'erreur n'apparait, je pense que le problème vient du fait que ton extent ne correspond pas à la projection que tu utilises (WGS 84) :

Code:

EXTENT         -303497.871824 -420372.900170 775689.113184 671148.867470

Tes objets s'affichent peut-être, mais tellement petit que tu n'as aucune chance de les voir...
Essaie avec un extent centré sur la France métropolitaine :

EXTENT -6.00 42.00 9.00 52.00


J'ajouterai également les lignes suivantes :

Code:

  PROJECTION
    "init=epsg:4326"
  END

Vianney Dugrain

Hors ligne

 

#3 Tue 04 February 2014 18:53

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

Re: Afficher un .map via PostGIS et Mapserver

Bonjour,

Si tu utilises le mode map il te faut un template ! Sinon utilise MapServer comme  service WMS et utilise QGIS, par exemple, pour te connecter à ton serveur WMS.

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 Tue 04 February 2014 20:41

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

Merci à tous les deux pour vos pistes, qui me font avancer.

Malheureusement Vianney, j'ai essayé en ajoutant votre nouvel EXTENT et la PROJECTION, toujours aucune erreur mais toujours page blanche.

Yves, vous dîtes que quoi qu'il en soit mon adresse URL affichera toujours une page blanche ? C'est donc normal ? Je précise qu'en sélectionnant des éléments via un module type firebug, je vois bien qu'il y a un cadre (plus ou moins 1200*600, ce que j'ai mis dans le mapfile).

Rappel de mon adresse URL "de test", en vrai et en totalité :
http://hinot.alwaysdata.net/cgi-bin/map … cteurs.map

En attendant j'essaye selon vos conseils de passer par un "template" (un fichier html récupéré sur le site d'OpenLayers).
J'ai essayé d'afficher ma couche par dessus la carte de l'exemple, ou à la place, mais sans succès, toujours aucune erreur mais pas d'affichage de ma couche.
La couche exemple d'OpenLayers s'affiche bien, mais c'est tout.
Visuellement j'ai l'impression que la couche exemple d'OpenLayers n'est pas dans la même projection, elles ne peuvent donc peut-être pas s'afficher ensemble, mais même toute seule ma couche ne s'affiche pas alors... Mais encore une fois : pas d'erreur.

D'autre part je ne sais pas comment créer un WMS, est-ce différent d'un simple mapfile, qui génère une flux aussi, non ? Je précise que je n'ai pas d'accès à une interface d'administration de MapServer, uniquement un accès SSH de mon hébergeur.

Je vous re-fournis mes codes modifiés ou nouveaux, qui sont courts :

Mon mapfile :

Code:

MAP
  SYMBOL
     NAME "Circle"
     FILLED true
     TYPE ellipse
     POINTS 1 1 END
  END 
  
  PROJECTION
    "init=epsg:4326"
  END
  
  IMAGETYPE      PNG
  EXTENT         -6.00 42.00 9.00 52.00
  SIZE           1200 600
  IMAGECOLOR     255 255 255
  TRANSPARENT    ON
  LAYER
      CONNECTIONTYPE POSTGIS
    NAME "reacteurs_service"
      CONNECTION "user=xxx password=xxx dbname=xxxhost=xxx port=5432"
      DATA "geom from reacteurs_service using unique id using srid=4326"
      STATUS DEFAULT
      TYPE POINT
        CLASS
          NAME "reacteurs_service"
          STYLE
             SYMBOL "Circle"
             COLOR        232 232 232
             OUTLINECOLOR 32 32 32
          END
    END
  END
  
END

Et mon "template", dans une page "index.html" à la racine de mon site :

http://hinot.alwaysdata.net/

Code:

<html>
<head>
  <title>OpenLayers Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>

<body>
      <div style="width:100%; height:100%" id="map"></div>
      
      <script defer type="text/javascript">
      
        var map = new OpenLayers.Map('map');
        
        var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
                    
        var layer = new OpenLayers.Layer.MapServer( "reacteurs_service",
       "http://hinot.alwaysdata.net/cgi-bin/mapserv", {map: './mapfiles/reacteurs.map'} );
        
        map.addLayers([wms, layer]);
        map.zoomToMaxExtent();
        
      </script>

</body>
</html>

Voilà voilà, si vous avez le temps de jeter un œil...

Je précise que j'ai bien fouillé et je continue, y compris les docs en anglais, mais peu de choses qui corresponde à ma configuration.

Merci d'avance !

Hors ligne

 

#5 Tue 04 February 2014 23:07

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

Re: Afficher un .map via PostGIS et Mapserver

Bonjour,

La première chose à voir est de tester votre mapfile de manière basique en utilisant shp2img via votre SSH >> voir la doc traduite svp http://mapserver.org/fr/utilities/shp2img.html

Si vous n'arrivez pas à générer une image, c'est déjà pas bon. Il sera toujours temps de se préoccuper d'OpenLayers et la configuration avec appel cgi ou WMS (donc via le net) après.

Cordialement

Thomas

Hors ligne

 

#6 Thu 06 February 2014 01:09

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

Super le lien, merci, j'en apprends tous les jours !

Effectivement la commande pour générer un png fonctionne mais le png est vide...

En revanche la commande all_debug me liste plusieurs choses intéressantes, dont voici les plus belles lignes :

Code:

msPostGISBuildSQLItems: 0 items requested.
...
msPostGISLayerWhichScapes got 0 records in result.
...
msPostGISLayerWhichScapes query: .....POLYGON........

Apparemment il y a donc une erreur sur ma couche, qui je le rappelle est une couche de points, qui s'affichait proprement dans QGIS.

Une particularité de cette couche est qu'après l'import dans phpPgAdmin, en vérifiant le SRID j'ai constaté qu'il était à -1. Je l'ai repassé à 4326 via requête SQL.
À oui aussi de mémoire : pour l'import, j'ai d'abord créée une table vide et identique à l'original, sauf que je ne pouvais pas spécifier à PhpPgAdmin le type de champ "point", alors que ma sortie SQL de PgAdmin en local semblait pouvoir le permettre. J'ai donc spécifié le type de champ "geometry". Import sans problème.

PS : Dans mon PhpPgAdmin, ma table geometry_columns est vide... Je ne sais pas du tout si c'est normal ou pas...

Je vais m'amuser à importer de nouvelles couches, au moins une en polygones et une autre en lignes, et dans différentes projections, histoire de tester la commande all_debug. Je reviendrais faire un retour.

À bientôt !

Dernière modification par Georgie (Thu 06 February 2014 01:22)

Hors ligne

 

#7 Thu 06 February 2014 14:47

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

À force de tester je suis parvenu à afficher une couche (couche de ligne en RGF93 - 2154), mais je suis encore incapable de dire pourquoi, j'ai un doute sur la responsabilité de l'extent, de la table geometry_columns qui était vide, de l'absence de SRID dans les tables originales.

À suivre !

Hors ligne

 

#8 Thu 06 February 2014 21:21

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

Ok problème résolu concernant mes premiers pas sur mon propre MapServe/PostGIS, affichage de lignes, points ou polygones en différentes projection : OK !

Merci car tous vos conseils m'ont été précieux et m'ont directement aidés !

En gros mes erreurs étaient :

- La table geometry_column qui était vide, et que je remplis maintenant manuellement sans problème, une fois par table, afin d'annoncer le type de géométrie (qui était refusé dans mes requêtes de création de table !!!).

- Absence du paramètre SIZE dans les layers de points de mes MapFiles ! Le seul type de géométrie où ce paramètre est indispensable !

Dernière modification par Georgie (Thu 06 February 2014 21:22)

Hors ligne

 

#9 Fri 07 February 2014 16:53

JF BEHM
Participant actif
Lieu: toulouse
Date d'inscription: 9 Aug 2013
Messages: 126
Site web

Re: Afficher un .map via PostGIS et Mapserver

Bonjour,
vous devriez passer par pgadmin III et le plugin shape to pg loader pour importer vos données dans votre base PostGIS.

Cordialement,


Jean-François Behm, formateur SIG, jf.behm@texte-a-enlever.idgeo.fr, formations@texte-a-enlever.idgeo.fr
IDGEO, www.idgeo.fr
Institut de Développement de la Géomatique  42, avenue de Général de Croutte - 31100 toulouse

Hors ligne

 

#10 Fri 07 February 2014 17:23

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

Bonjour

C'est bien ce que j'utilise pour importer mes shapes en local, mais j'ai quand même la perte du SRID une fois importé, je suis obligé de le redéfinir. Je pense que cela est dû à une mauvaise installation de mon PostGIS en local, mais rien de vraiment dramatique, tout s'affiche correctement même avec le SRID à 0 ou -1 et même avec un WMS derrière, aucun problème de calage, alors...

Malheureusement ces plugins ne s'installent pas sur les PhpPgAdmin... Cela dit j'ai cru comprendre que MapServer avait une ligne de commande équivalente, à creuser...

Hors ligne

 

#11 Mon 03 March 2014 22:44

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

Re: Afficher un .map via PostGIS et Mapserver

Bonsoir,

Non Postgis fournie une commande : shp2pgsql. Tu as aussi ogr2ogr.

Concernant le shapefie loader tu définies bien le SRID ?

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

 

#12 Tue 04 March 2014 10:10

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Afficher un .map via PostGIS et Mapserver

Merci mais ce problème a été résolu : en fait sur ma base Postgis hébergée sur le web (alwaysdata), la table geometry_columns était vide et doit être renseignée pour chaque champ géométrique (ça paraît logique, mais je n'avais jamais eu besoin de ça en local, ou je laissais vide (oups)) !

Hors ligne

 

Pied de page des forums

Powered by FluxBB