Tengo mapas en mosaico de vectores / topo / imágenes para algunos lugares en América del Norte que se publicaron como servicio REST de ArcGIS Server. Estos mapas (A) se basan en EPSG: proyección 26912. Ahora quiero usarlos como mapa base para mi aplicación web OpenLayers; Además, también quiero consumir otras fuentes de mapas base (B), por ejemplo, OpenStreetmap, Google Maps, ESRI, etc. Dado que la mayoría de estos mapas están en EPSG: 900913, que es una proyección esférica de Mercator, si solo agrego estos Las capas del mapa base en el componente de mapa OpenLayers, el grupo A y el grupo B no se superponen correctamente, lo que significa que se muestran como mapas separados.
Sé que esto es algo relacionado con la proyección, y podría necesitar algún código con proj4js, sin embargo, como novato, realmente no sé con qué comenzar.
Básicamente, quiero poner los mapas OSM / Google como el mapa base para todo el mundo en el nivel 1, luego poner EPSG: 26912 mapas base para algunos lugares en América del Norte en el nivel 2, y poner otros WMS o WFS en el nivel superior.
¿Necesito transformar EPSG: 26912 a EPSG: 900913 o al contrario? Supongo que debería usar EPSG: 900913 como la proyección base.
Respuestas:
OpenLayers puede transformar capas vectoriales (como WFS). Si su capa vectorial está en EPSG: 900913 o EPSG: 4326 OpenLayers puede manejar la transformación en sí misma, de lo contrario, necesita Proj4js incluido.
Hay ejemplos de cómo usar OpenLayers con Proj4js.
OpenLayers no puede transformar las capas ráster. Si necesita incluirlos en una proyección diferente, debe volver a proyectarlos usted mismo o utilizar un proxy WMS de reproyección como GeoWebCache .
fuente
Cualquier buen WMS debería poder hacer la reproyección por usted. Sin embargo, no tengo idea si ArcGIS Server es un buen WMS. Si no puede proporcionar la capa en 900913, considere usar GeoServer o MapServer como un WMS en cascada para manejar la reproyección por usted.
fuente
No soy un gurú de OpenLayers, pero debes especificar la proyección del objeto del mapa. Creo que el valor predeterminado es WGS84 ... Podría estar equivocado, incluso podría ser la fuente de la primera capa agregada al mapa.
De todos modos, intente algo como esto (cambie los límites según corresponda)
Pero luego recuerde cuándo desea establecer el centro del mapa usando un lat, ya que debe proyectar esa coordenada de WGS a GoogleMercator de esta manera (usando la variable wgs84 y googleMercator de arriba).
fuente
Lo primero es definir su proyección de mapa y mostrar la proyección de la siguiente manera:
Agregar conversión de coordenadas
Una vez que comience a usar diferentes proyecciones, debe comenzar a pensar en la posibilidad de convertir coordenadas de una proyección a otra, ya sea al mostrar esas coordenadas o al leer datos vectoriales en un sistema de coordenadas diferente del del mapa. Como se indicó anteriormente, OL no proporciona esta lógica de conversión, por lo que debe usar Proj4js, que deberá incluir en su página:
después de la definición puedes hacerlo por el método de transformación:
fuente