У меня есть мозаичные карты вектор / topo / image для некоторых мест в Северной Америке, которые были опубликованы как сервис ArcGIS Server REST. Эти карты (A) основаны на проекции EPSG: 26912. Теперь я хочу использовать их в качестве базовой карты для моего веб-приложения OpenLayers; кроме того, я также хочу использовать другие источники базовой карты (B), например, OpenStreetmap, Google Maps, ESRI и т. д. Поскольку большинство этих карт находятся в EPSG: 900913, что является сферической проекцией Меркатора, насколько мне известно, если я просто добавлю эти Слои базовой карты в компонент карты OpenLayers, группа A и группа B не будут корректно накладываться, что означает, что они отображаются как отдельные карты.
Я знаю, что это что-то, связанное с проекцией, и может понадобиться код с proj4js, однако, как новичок, я действительно не знаю, с чего начать.
По сути, я хочу поместить карты OSM / Google в качестве базовой карты для всего мира на уровне 1, затем поместить EPSG: 26912 базовых карт для некоторых мест в Северной Америке на уровне 2 и поместить другие WMS или WFS на верхний уровень.
мне нужно преобразовать EPSG: 26912 в EPSG: 900913 или наоборот? Я думаю, что я должен использовать EPSG: 900913 в качестве базовой проекции.
Ответы:
OpenLayers может преобразовывать векторные слои (например, WFS). Если ваш векторный слой находится в формате EPSG: 900913 или EPSG: 4326, OpenLayers может обрабатывать само преобразование, в противном случае ему нужно включить Proj4js.
Есть примеры того, как использовать OpenLayers с Proj4js.
Растровые слои не могут быть преобразованы OpenLayers. Если вам нужно включить их в другую проекцию, вы должны перепроектировать их самостоятельно или использовать репроектирующий прокси-сервер WMS, такой как GeoWebCache .
источник
Любой хороший WMS должен иметь возможность сделать перепроектирование для вас. Однако я понятия не имею, является ли ArcGIS Server хорошим WMS. Если он не может предоставить слой в 900913, рассмотрите возможность использования GeoServer или MapServer в качестве каскадной WMS для обработки репроектирования для вас.
источник
Я не гуру OpenLayers, но вам нужно указать проекцию объекта карты. Я думаю, что по умолчанию это WGS84 .... Я могу ошибаться, я даже могу быть источником первого слоя, добавленного на карту.
В любом случае попробуйте что-то вроде этого (измените границы соответствующим образом)
Но затем запомните, когда вы хотите установить центр карты, используя лат, если вам нужно проецировать эту координату из WGS в GoogleMercator следующим образом (используя переменные wgs84 и googleMercator сверху).
источник
Во-первых, определите вашу картографическую проекцию и отобразите проекцию следующим образом:
Добавление преобразования координат
Как только вы начнете использовать разные проекции, вам придется задуматься о возможности преобразования координат из одной проекции в другую, либо при отображении этих координат, либо при чтении векторных данных в другой системе координат, отличной от карты. Как указывалось ранее, эта логика преобразования не предоставляется OL, поэтому вы должны использовать Proj4js, который вам нужно будет включить на своей странице:
после определения вы можете сделать это методом transform:
источник