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 13 June 2017 17:29

JulienViala
Juste Inscrit !
Date d'inscription: 13 Jun 2017
Messages: 6

MapFile sur images locales

Bonjour,

Dans le cadre de mon stage je dois mettre en place un MapServer utilisant des images créées par l'entreprise et donc disponible en local. Les images peuvent avoir différentes projections differentes mais actuellement je fais les tests avec une image géoréférencé en Lambert93. J'ai donc écrit un MapFile mais je ne suis pas du tout sûr de tout les champs renseignés.

MapFile :

Code:

MAP
    NAME "testMugel"
    SIZE 1000 500
    EXTENT 99226.000000 6049647.000000 1242375.000000 7110524.000000
    UNITS METERS
    IMAGECOLOR 255 255 255    #fond de l'image
    SHAPEPATH "C:/ms4w/apps/testSeaviews/data/"
    DEBUG 5
    
    WEB
        IMAGEPATH "C:/ms4w/apps/testSeaviews/tmp/"
        IMAGEURL "/testSeaviews/tmp/"
        TEMPLATE "data/template.html"
    END #WEB
    
    #OUTPUTFORMAT
    #    NAME png
    #    DRIVER "GD/PNG"
    #    MIMETYPE "image/png"
    #    IMAGEMODE PC256
    #    EXTENSION "png"
    #END #OUTPUTFORMAT
    
     LAYER
        NAME 'image'
        TYPE RASTER
        STATUS ON
    EXTENT 99226.000000 6049647.000000 1242375.000000 7110524.000000
        DATA "data/grotte_Lbr93_50cm.jpeg"
    END # LAYER
END #MAP

Donc quand j'éxecute mapserv.exe en CLI il me sort bien mon template avec le chemin de l'image correctement rempli mais par contre il me génère une image blanche ...

Comme fichier .tab j'ai:

Code:

!table
!version 300
!charset WindowsLatin1

Definition Table
  File "grotte_Lbr93_50cm.jpeg"
  Type "RASTER"
  (912590.5,6232927) (0,0) Label "NW",
  (912767.5,6232927) (355,0) Label "NE",
  (912767.5,6232672.5) (355,509) Label "SE",
  (912590.5,6232672.5) (0,509) Label "SW"
CoordSys Earth Projection 3, 33, "m",3, 46.5, 44, 49, 700000, 6600000

et je lance mapserver en CLI de cette facon :

Code:

mapserv.exe QUERY_STRING=map=C:/ms4w/apps/testSeaviews/testMap.map

En cherchant j'ai cru comprendre que c'etait un probleme de projection mais quand je rajoute le bloc PROJECTION avec comme valeur 2154(Lbr93) il ne le reconnait pas ..

Auriez vous un bon tuto sur le traitement d'image locale ou encre mieux une explication a mon problème ?

Merci d'avance,

Julien VIALA

Hors ligne

 

#2 Wed 14 June 2017 10:04

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

Re: MapFile sur images locales

Bonjour,

Il y a plusieurs soucis, incompréhension. Ton objet LAYER doit avoir un paramètre PROJECTION, sinon il va utiliser celui de l'objet MAP, parent. En leurs absence, je ne sais pas ce qu'il advient smile Donc définit deux blocs PROJECTION avec la configuration qui va bien (met tout en lambert 93).

Ton Shapepath étant définie par C:/ms4w/apps/testSeaviews/data/ le chemin vers tes données devraient être comme ceci : C:/ms4w/apps/testSeaviews/data/data/grotte_Lbr93_50cm.jpeg, vérifié que tu as bien deux répertoires data !

Le JPEG est à proscrire, passe en GTIff correctement compressé.

Si tu veux une carte, à un moment donnée tu dois définir l'endroit (via un extent) dans la requête, mais aussi la couche que tu veux afficher (ou les couches), la projection, etc. Bref, je te laisse regarder la description des services OGC dans le wiki de GeoRezo : https://georezo.net/wiki/main/standards/start

Tu utilises comment ton service : cgi+template ou service OGC ? Selon le cas il manque des informations (templates pour le 1er, blocs Metadata
pour le 2nd) et surtout tu ne les interroges pas de la même manière !

Perso je préconiserai les services OGC : http://mapserver.org/ogc/wms_server.html, tu pourras utiliser QGIS pour t'y connecter.

Enfin pour débuguer tu devrais utiliser shp2img, c'est pratique dans un 1er temps.

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 Thu 15 June 2017 10:53

JulienViala
Juste Inscrit !
Date d'inscription: 13 Jun 2017
Messages: 6

Re: MapFile sur images locales

Bonjour,

Merci de votre réponse, j'ai bien avancé depuis. Beaucoup d'erreurs se cachaient mais j'arrive enfin a générer l'image à l'aide de shp2img et dans mon navigateur. J'ai repris depuis le début le tutoriel "http://mapserver.org/fr/tutorial/".

Voila le nouveau mapFile pour information :

Code:

MAP
    NAME         TESTMUGEL
    SIZE         400 600
    EXTENT         912564 6232642 912799 6232961
    UNITS         METERS
    SHAPEPATH     "C:/ms4w/apps/testSeaviews/data/"
    IMAGECOLOR 255 255 255
    CONFIG         "PROJ_LIB"     "C:/proj/nad/"
    
    WEB
        IMAGEPATH "C:/ms4w/apps/testSeaviews/tmp/"
        IMAGEURL "/testSeaviews/tmp/"
        TEMPLATE "data/template.html"
    END #WEB
    
    PROJECTION
        "init=epsg:2154" #Lbr93
    END
    
    LAYER
        NAME         grotte
        DATA         'grotteLbr93.tif'
        STATUS         ON
        TYPE         RASTER
        PROCESSING     "BANDS=1,2,3"
        OFFSITE     71 74 65
    END # LAYER    
    
END #MAP

Forcément maintenant j ai de nouvelles problématiques ! Les images que j'utilise sont de base en format PNG. Dans le tuto on utilise bien des images du même format mais lorsque je passe sur mon mapFile et mon image je n'arrive a le faire fonctionner qu'avec du .tif ..

Y a t-il une subtilité que je n'ai pas compris pour traiter les images png ?


Ensuite que se passe t'il si je joue avec le parametre SIZE et EXTENT du bloc MAP ? Mapserveur est t-il capable d'échantillonner l'image de lui même pour l'afficher avec une résolution plus faible?

Et pour finir je voudrais afficher un fond de carte par flux WMS mais je n'arrive pas a trouver de lien encore maintenus et sous un serveur pris en charge par mapServeur (apparement je suis restreint a la version 1.1.1 maximum ... ), où puis-je en trouver un (incluant les cotes du sud de la france au moins).

Merci beaucoup de votre aide.

Julien VIALA

Dernière modification par JulienViala (Thu 15 June 2017 11:01)

Hors ligne

 

#4 Thu 15 June 2017 11:29

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

Re: MapFile sur images locales

Bonjour,

Les paramètres SIZE et EXTENT, dans le cadre d'une utilisation sous forme de service OGC, constitue la taille et l'étendue par défaut (quoique pour le paramètre SIZE, je pense que ca ne sert à rien). Ces 2 paramètres sont définie dans l'url.

MapServer va bien sur générer l'image en récupérant les données du PNG et en les traitant correctement. Le format source est bien du PNG mais je préfère parler de données wink Sinon souvent (avec les tif) ont génère des overview (ou pyramide) qui sont des images du raster dégradé pour plusieurs échelles de visibilités. Cela permet d'optimiser les performances.

Le PNG **doit** être éviter, ce n'est pas une bonne solution. La version de MapServer ne gère probablement pas le PNG comme source de données, mais cela m'étonne quand même !

Que retourne : chmm../../bin/mapserv.exe -v (Le chemin est à adapter) ?

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 Thu 15 June 2017 11:55

JulienViala
Juste Inscrit !
Date d'inscription: 13 Jun 2017
Messages: 6

Re: MapFile sur images locales

La pour le moment je voudrais générer les images en temps réél afin queles soient utilisables par le logiciel de l'entreprise. Ce qui etait actuellement implanté ne fonctionnait que moyennement et prenait énormément de ressources. LE developpement d'un service OGC se fera surement mais dans un deuxieme temps.

Mais par exemple lors du calcul des images par le logiciel de l'entreprise si je fait écrire un mapFile contenant pour chaque image un layer et que pour réutiliser ce mapFile je redéfinis a chaque fois l'EXTENT avant de généré l'image que va t il se produire ? (Expliqué comme ca c est un peu tordu mais je suis très mauvais pédagogue ^^. En gros je veux integrer le rendu de mapserveur dans un autre logiciel déjà complexe).

Si tout les STATUS des LAYER sont à ON, va t-il toutes les générer pour ensuite "découper" ce qu'il rentre dans l'EXTENT ?
Le format tif gère-t-il la transparence ou est ont obligé de redécouper les images en carré ?

Dernieère question, comment cela se passe si j ai des images qui ne sont pas dans la même projection ? Vaut il mieux que je les transfert toute en Lbr93 ou je peux definir la projection de mon bloc MAP en Lbr93 puis y ajouter des LAYER en WGS ou Mercator et qu il s'y retrouve seul ?

Retour de mapserv.exe -v :

Code:

C:\ms4w\Apache\cgi-bin>mapserv.exe -v
MapServer version 7.0.4 (MS4W 3.2.1) OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPP
ORTS=CAIRO SUPPORTS=SVG_SYMBOLS SUPPORTS=SVGCAIRO SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER 
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER 
SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

Julien VIALA

Dernière modification par JulienViala (Thu 15 June 2017 11:55)

Hors ligne

 

#6 Thu 15 June 2017 13:23

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

Re: MapFile sur images locales

Bonjour,

Je pense que MapServer ne gère pas le format PNG. Il faut passer par gdal. Mais, j'insiste **vraiment** abandonne ce format. Passe par une étape intermédiaire avec gdal_translate pour partir du png et générer du GTiff. Le GTiff gère la transparence (bande opacité ou nodata).

Si tout les STATUS des LAYER sont à ON, va t-il toutes les générer pour ensuite "découper" ce qu'il rentre dans l'EXTENT ?
Le format tif gère-t-il la transparence ou est ont obligé de redécouper les images en carré ?


Il va appliquer les couches les unes après les autres en les empilant en filtrant les données qui sont contenu dans l'extent (plus une marge).

La pour le moment je voudrais générer les images en temps réél afin queles soient utilisables par le logiciel de l'entreprise. Ce qui etait actuellement implanté ne fonctionnait que moyennement et prenait énormément de ressources. LE developpement d'un service OGC se fera surement mais dans un deuxieme temps.


Quelles images ? Un schéma du processus à mettre en oeuvre ?

Mais par exemple lors du calcul des images par le logiciel de l'entreprise si je fait écrire un mapFile contenant pour chaque image un layer et que pour réutiliser ce mapFile je redéfinis a chaque fois l'EXTENT avant de généré l'image que va t il se produire ? (Expliqué comme ca c est un peu tordu mais je suis très mauvais pédagogue ^^. En gros je veux integrer le rendu de mapserveur dans un autre logiciel déjà complexe).


Ce qui se conçoit bien s'énonce clairement smile

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

 

#7 Thu 15 June 2017 16:03

JulienViala
Juste Inscrit !
Date d'inscription: 13 Jun 2017
Messages: 6

Re: MapFile sur images locales

Ok, j'enregistre pour le png, je me debrouille pour faire passer les images dans gdal_translate avant.

Daccord, niveau performance, cela ne le ralentit pas trop si on a beaucoup d'images ?

L'entreprise créé des MNT et des images sonar. Je voudrait pouvoir mettre un fond de carte récupérées de Google earth ou autre puis superposer mes images créées à partir des MNT ou des images sonar (couches que l'on pourrait ajouter ou non)et enfin générer l'image qui en résulte pour l'afficher à l'écan.

Pour la derniere partie, l'entreprise ait de la photogramétrie sous marine. Au moment du traitement des images je voudrais créer le mapFile de la zone mais à e moment là je ne connaitrait pas l'EXTENT voulu. Ce ne sera qu'au moment où je voudrait l'afficher à l'écran que je remplirai le champs EXTENT.

Ah et aussi, auriez vous un serveur WMS maintenu et dans une version 1.1.1 maximum (apparemment version maximum supportée par mapServer) englobant le sud de la france ?

Merci beaucoup des réponses rapides,

Julien VIALA

Hors ligne

 

#8 Fri 16 June 2017 11:21

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

Re: MapFile sur images locales

Bonjour,

Tu peux scripter en Python ou PHP pour récupérer l'extent de l'image et générer la couche dans le mapfile. gdalinfo te renverra ce genre d'info.

Pour le fond de plan, c'est compliqué. Tu peux essayer de créer une couche MapServer à partir des tuiles du service Bing de Microsoft. Ce n'est pas possible pour Google.

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

 

Pied de page des forums

Powered by FluxBB