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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 20 July 2012 16:40

martin.baussier
Participant actif
Lieu: Montpellier
Date d'inscription: 22 Sep 2007
Messages: 69

mapserver & geojson

Bonjour,

Nous avons plusieurs tables stockées dans Postgis et nous souhaiterions utiliser MapServer pour générer des flux GeoJson afin de récupérer ceux-ci avec OpenLayers et manipuler les données avec Jquery.

J'ai donc fais une petite recherche et j'ai bien ajouter le bloc OUTPUTFORMAT suivant dans mon MapFile :

Code:

  OUTPUTFORMAT
      NAME 'geojson'
      DRIVER 'TEMPLATE'
      MIMETYPE 'application/json; subtype=geojson'
      FORMATOPTION 'FILE=myTemplate.js'
  END

ainsi que le template (dans un fichier à côté) :

Code:

[resultset layer=commune]
{
  "type": "FeatureCollection",
  "features": [
    [feature trimlast=","]
    {
      "type": "Feature",
      "id": "[oid]",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          {
            "type": "Point",
            "coordinates": [[x], [y]]
          }
        ]
      },
      "properties": {
        "code_insee": "[code_insee]"
      }
    },
    [/feature]
  ]
}
[/resultset]

Et enfin je test le tout avec ces deux requêtes côté navigateur client :

Code:

http://srvsig01:1111/cgi-bin/mapserv.exe?MAP=C:\\OSgeo\\apache\\htdocs\\mapfile\\test.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&typename=commune&OUTPUTFORMAT=geojson

ou

Code:

http://srvsig01:1111/cgi-bin/mapserv.exe?MAP=C:\\OSgeo\\apache\\htdocs\\mapfile\\test.map&MODE=MAP&OUTPUTFORMAT=geojson

Et bien entendu, je récupère, dans le premier cas, toujours gml (dans du wfs) et dans le second cas une image blanche !

Auriez vous des liens sur de la doc, une idée ..., une petite phrase d'encouragement,  pour m'aider à avancer ?

Merci d'avance et un très bon week-end à la communauté,

Martin BAUSSIER
Technicien SIG
Communauté d'agglomération de Sophia-Antipolis


Martin Baussier
Institut national de l'origine et de la qualité (INAO)
Chargé de mission géomatique (Service Délimitation - BDDC)

Hors ligne

 

#2 Fri 20 July 2012 19:50

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: mapserver & geojson

Tu peux faire une requête PostGis et récupérer directement le flux GeoJSON avec ST_AsGeoJSON().

http://postgis.org/docs/ST_AsGeoJSON.html


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#3 Sat 21 July 2012 00:09

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

Re: mapserver & geojson

Salut,

Ta version de Mapserver est bien un 6.x? Pour les versions 5.x, il faut normalement passer par un appel CGI pour que ça marche

Code:

http://srvsig01:1111/cgi-bin/mapserv.exe?MAP=C:\\OSgeo\\apache\\htdocs\\mapfile\\test.map&layer=commune&mode=nquery&qformat=geojson

sinon pour la version 6.x c'est par un appel WFS (qui marche chez moi) avec un exemple d'appel identique au vôtre.

Par contre, pensez à changer

Code:

"coordinates": [[x], [y]]

par

Code:

"coordinates": [[[shpxy]]]

vu que vous semblez vouloir retourner des polygones


Cordialement

ThomasG

Hors ligne

 

#4 Mon 23 July 2012 10:23

martin.baussier
Participant actif
Lieu: Montpellier
Date d'inscription: 22 Sep 2007
Messages: 69

Re: mapserver & geojson

Merci pour ces infos qui me permettent  de redémarrer la semaine un peu plus serein.
Et merci également pour la réactivité qui me surprend  à chaque fois... 

Pour la première solution "Template dans MapServer":

J'ai tenté de relancer la fonction CGI après avoir fait la correction du type de coordonnées ([[[shpxy]]]) suggérée par ThomasG .

Le résultat est alors le suivant :

Code:

Content-type: text/html

<HTML>
<HEAD><TITLE>MapServer Message</TITLE></HEAD>
<!-- MapServer version 5.6.6 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=THREADS SUPPORTS=RGBA_PNG INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->
<BODY BGCOLOR="#FFFFFF">
isValidTemplate(): Web application error. Missing magic string, myTemplate.js doesn't look like a MapServer template.
</BODY></HTML>

Malheureusement l’exécutable osGeo pour Windows installe visiblement une version de MapServer un peu obsolète  :-(

Je me tourne donc vers la seconde solution "l'interrogation directe de Postgis avec la fonction ST_AsGeoJSON(geom)" tel que Michel56 le propose:

Serait il possible de récupérer également dans la réponse en GeoJson les données attributaires ??? 
Visiblement d'après la documentation Potsgis je n'ai pas l'impression. il faudrait peut être envisager de faire deux requêtes une pour la géométrie, l'autre pour les données attributaires et créer la fonction qui génére le tableau JSON mais j'avoue que je n'avais pas prévu de partir la dedans...

Qu'en pensez vous ?

Martin BAUSSIER
Technicien SIG
Communauté d'agglomération de Sophia-Antipolis

Dernière modification par martin.baussier (Mon 23 July 2012 10:25)


Martin Baussier
Institut national de l'origine et de la qualité (INAO)
Chargé de mission géomatique (Service Délimitation - BDDC)

Hors ligne

 

#5 Mon 23 July 2012 11:40

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: mapserver & geojson

Oui, tu peux récupérer tes données attributaires dans la même requête.

Tu fais un script PHP ou Python et tu récupères ce que tu veux dans ta requête SQL. (C'est une requête normale + ST_AsGeoJSON(geom))

Attention, pour un affichage sur internet, le flux ne doit pas être trop important.

Quant à: ASP NET?


Cordialement.

Dernière modification par michel56 (Mon 23 July 2012 11:47)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#6 Mon 23 July 2012 15:33

martin.baussier
Participant actif
Lieu: Montpellier
Date d'inscription: 22 Sep 2007
Messages: 69

Re: mapserver & geojson

Effectivement je viens de comprendre l'utilisation de la fonction ST_AsGeoJSON.
Merci pour les renseignements,
Martin BAUSSIER


Martin Baussier
Institut national de l'origine et de la qualité (INAO)
Chargé de mission géomatique (Service Délimitation - BDDC)

Hors ligne

 

#7 Mon 23 July 2012 17:35

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

Re: mapserver & geojson

Bonjour,

Pour info, bien que vous sembliez déjà avoir fait votre choix sur l'erreur Mapserver voir la doc
cf http://www.mapserver.org/development/rf … ight=magic

Cordialement

ThomasG

Hors ligne

 

Pied de page des forums

Powered by FluxBB