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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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: 67
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

 

Pied de page des forums

Powered by FluxBB