J'ai des cartes vectorielles / topo / image en mosaïque pour certains endroits en Amérique du Nord qui ont été publiées en tant que service ArcGIS Server REST. Ces cartes (A) sont basées sur la projection EPSG: 26912. Maintenant, je veux les utiliser comme carte de base pour mon application Web OpenLayers; en outre, je veux également consommer d'autres sources de cartes de base (B), par exemple, OpenStreetmap, Google Maps, ESRI, etc. Étant donné que la plupart de ces cartes sont en EPSG: 900913 qui est une projection sphérique de Mercator à ma connaissance, si je les ajoute simplement les couches de carte de base dans le composant de carte OpenLayers, le groupe A et le groupe B ne se superposeront pas correctement, ce qui signifie qu'ils sont affichés sous forme de cartes distinctes.
Je sais que c'est quelque chose lié à la projection, et peut avoir besoin de code avec proj4js, cependant, en tant que débutant, je ne sais pas vraiment par quoi commencer.
Fondamentalement, je veux mettre les cartes OSM / Google comme carte de base pour le monde entier au niveau 1, puis mettre EPSG: 26912 cartes de base pour certains endroits en Amérique du Nord au niveau 2, et mettre d'autres WMS ou WFS au niveau supérieur.
dois-je transformer EPSG: 26912 en EPSG: 900913 ou opposé? Je suppose que je devrais utiliser EPSG: 900913 comme projection de base.
Réponses:
OpenLayers peut transformer des couches vectorielles (comme WFS). Si votre couche vectorielle est au format EPSG: 900913 ou EPSG: 4326, OpenLayers peut gérer la transformation elle-même, sinon, il a besoin de Proj4js inclus.
Il existe des exemples d'utilisation d'OpenLayers avec Proj4js.
Les couches raster ne peuvent pas être transformées par OpenLayers. Si vous devez les inclure dans une projection différente, vous devez les reprojeter vous-même ou utiliser un proxy WMS de reprojection comme GeoWebCache .
la source
Tout bon WMS devrait pouvoir faire la reprojection pour vous. Cependant, je ne sais pas si ArcGIS Server est un bon WMS. S'il n'est pas en mesure de fournir la couche dans 900913, envisagez d'utiliser GeoServer ou MapServer en tant que WMS en cascade pour gérer la reprojection pour vous.
la source
Je ne suis pas un gourou d'OpenLayers, mais vous devez spécifier la projection de l'objet de la carte. Je pense qu'il est par défaut WGS84 .... Je peux me tromper, je peux même être la source de la première couche ajoutée à la carte.
Quoi qu'il en soit, essayez quelque chose comme ça (changez les limites comme il convient)
Mais souvenez-vous ensuite lorsque vous souhaitez définir le centre de la carte en utilisant un lat, lon vous devez projeter cette coordonnée de WGS à GoogleMercator comme ceci (en utilisant la variable wgs84 et googleMercator ci-dessus).
la source
La première chose est de définir votre projection cartographique et votre projection d'affichage comme suit:
Ajout d'une conversion de coordonnées
Une fois que vous commencez à utiliser différentes projections, vous devez commencer à réfléchir à la possibilité de convertir les coordonnées d'une projection à une autre, soit lors de l'affichage de ces coordonnées, soit lors de la lecture de données vectorielles dans un système de coordonnées différent de celui de la carte. Comme indiqué précédemment, cette logique de conversion n'est pas fournie par OL, vous devez donc utiliser Proj4js, que vous devrez inclure dans votre page:
après la définition, vous pouvez le faire par la méthode de transformation:
la source