2017-02-14 18 views
0

У меня есть следующие данные OpenGis, которые я хочу преобразовать в координату широты/долготы (как используется картами Google).Как преобразовать координату EPSG в широту/долготу?

<address xmlns:gml="http://www.opengis.net/gml"> 
    <gml:Point srsName="urn:ogc:def:crs:EPSG::28992"> 
    <gml:pos>142629.0 523546.0</gml:pos> 
    </gml:Point> 
</address> 

На EPSG Registry, я нашел место происхождения EPSG: 28992.

Latitude of natural origin  52°09'22.178"N 
Longitude of natural origin  5°23'15.5"E 
Scale factor at natural origin 0.9999079 unity 
False easting     155000 metre 
False northing     463000 metre 

Я попытался с помощью proj4js, но я не могу понять, как сделать это в проекции, и как получить требуемую мощность.

Я также попытался рассчитать его сам. Но я понятия не имею, что я делаю здесь, и ничего на самом деле не имело смысла :(.

+0

Несколько вопросов: это одноразовое пакетное задание или вы будете получать новые данные, которые вы должны обновлять «на лету»? Кроме того, это для отображения на веб-карте или в каком формате будет производиться вывод? И если это веб-карта, у вас есть определенная библиотека отображения веб-страниц, которую вы уже используете? –

+0

Это пакетное задание, которое будет запускаться раз в месяц. То, как данные используются, не определено или не известно мне. Данные должны просто содержать координаты долготы/широты. –

ответ

1

Вот как это сделать Это. Как правило, вы можете просто преобразовать из одной проекции в другую, если Proj4js уже включен в проекции, как это:

proj4('EPSG:900913', 'EPSG:4326', [20.0, 30.0]); 

Однако EPSG: 28992 не входит в стандартную библиотеку. Чтобы сделать это, вы можете добавить его, добавив новое определение:

proj4.defs(
    "EPSG:28992", 
    "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772 +units=m +no_defs" 
); 

Тогда вы можете просто преобразовать так:

proj4('EPSG:28992', 'EPSG:4326', [142629.0, 523546.0]); 

Что дает

[5.2041980699764325, 52.69918555556015] 

On Google Maps

0

proj4js является полезным библиотека для преобразования в другую систему различной мощности! Вы также можете попробовать сделать преобразования онлайн-инструмент, как CS2S

Например, вы можете попробовать сделать запрос на форму Ajax, как это:

https://mygeodata.cloud/drive/crslist?dsid=0&search=28992&limit=50&offset=0 

и получить обратно: JSON

{"rows": [{"proj4": "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.4171,50.3319,465.5524,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725 +units=m +no_defs ", "sel": 2, "epsg": 28992, "dsname": "Amersfoort/RD New", "aoi": "Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone.", "ordering2": 460.0}], "total": 1} 

и проверить, в proj4 ключ, ваши lat_0 и lon_0 значения

Эти значения отформатирован как Google координаты и, возможно, более легко положить в проекции

+0

Мне нужно преобразовать сотни тысяч координат. Использование внешней службы не является вариантом. Можете ли вы показать, как использовать proj4 напрямую. –