#1 Fri 22 November 2019 13:54
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[MAPSERVER/OPENLAYERS] afficher une partie d'une image
Bonjour
nous souhaitons afficher sur une carte OSM une partie d'une image png disponible sur un serveur
par exemple nous disposons d'une image satellite sur l'Europe et on voudrait n'afficher que la partie de l'image limitée par l'extent [-2, -10, 20, 60]
cette fonctionnalité doit être développée avec OL2 et OL3
côté serveur nous avons mapserver
y-a-t'il une solution avec ces 2 versions d'OL ou bien est-il possible d'utiliser mapserver ?
merci d'avance
Jean-Marie
Hors ligne
#2 Thu 28 November 2019 23:37
- Blaise Picinbono
- Participant actif
- Date d'inscription: 8 Jan 2015
- Messages: 70
- Site web
Re: [MAPSERVER/OPENLAYERS] afficher une partie d'une image
Bonjour;
Avec mapserver, on peut appliquer un masque sur une couche raster pour n'en voir qu'une partie. Le masque est une couche vecteur - polygone, cela fonctionne avec une couche shapefile, mais sans doute aussi postgis.
Voilà un exemple de mapfile, seule la (les) partie(s) du raster "worldimage" comprise(s) dans le(s) polygone(s) de la couche worldmask sont affichées:
Code:
LAYER NAME "worldmask" TYPE POLYGON STATUS OFF DATA "worldmask" CLASS STYLE COLOR 0 0 0 END END END LAYER NAME "worldimage" DATA "worldimage.tif" TYPE RASTER STATUS ON MASK "worldmask" END
Cela devrait fonctionner avec openlayers côté client, quel que soit la version d'openlayers. A voir ensuite à partir de quelle version de mapserver cette fonction "MASK" a été introduite.
Cela fonctionne correctement avec une image raster hébergée sur le même serveur que mapserver, pas certain que cela fonctionne avec un flux WMS, à tester, mais je crois comprendre que vous êtes dans le premier cas.
Avec des versions récentes d'openlayers, on peut également s'inspirer de l'exemple "Layer Clipping" pour réaliser la même chose côté client:
https://openlayers.org/en/latest/exampl … pping.html
Le polygone du masque est alors définit point par point dans le code javascript.
A voir à partir de quelle version d'openlayers cette fonction a été introduite, ce n'est pas sûr qu'elle soit disponible avec OL2, ni même OL3; à essayer.
En espérant avoir répondu à votre question.
Hors ligne
#3 Fri 29 November 2019 19:12
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER/OPENLAYERS] afficher une partie d'une image
Bonjour
merci pour la piste
la meilleure solution est de faire la découpe côté serveur puisqu'on a encore une appli sous ol2
je vous tiens au courant
Jean-Marie
Hors ligne
#4 Thu 30 April 2020 16:18
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER/OPENLAYERS] afficher une partie d'une image
illustration :
le layer masklayer est un polygone défini par mask.json
le layer imagepart de type raster affiche une image et l'instruction MASK "masklayer" indique de ne prendre que la partie délimitée par mask.json
LAYER
NAME "masklayer"
TYPE polygon
CONNECTION "mask.json"
CONNECTIONTYPE OGR
STATUS OFF
projection
"init=epsg:4326"
end
CLASS
STYLE
COLOR 0 0 0
END
END
END
layer
NAME "imagepart"
DATA "image.png"
type RASTER
EXTENT -1161507.5669370166 3730015.1662826505 6435602.401740731 10335283.47693829
status on
MASK "masklayer"
projection
"init=epsg:3857"
end
end
contenu du mask.json :
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-11.42578125,
49.83798245308484
],
[
3.1640625,
49.83798245308484
],
[
3.1640625,
59.489726035537075
],
[
-11.42578125,
59.489726035537075
],
[
-11.42578125,
49.83798245308484
]
]
]
}
}
]
}
Hors ligne