Китайские координаты

Китайские координаты

gudini

Если вам когда-либо приходилось решать геоинт задачи в Китае, наверняка вы замечали на Google.Maps, что спутниковые снимки не соответствуют карте. На bing кстати тоже.

Если же вы использовали Baidu.Maps и пытались перейти туда с гугловыми координатами, то оказывались совсем не в том месте.

https://map.baidu.com/?latlng=35.5810101,104.632538

При этом, если те же координаты засунуть в OSM, мы окажемся привязаны к спутниковым снимкам гугла.

По ссылке можно сравнить расхождение разных карт.

https://mc.bbbike.org/mc/?lon=104.629675&lat=35.58131&zoom=16&num=6&mt0=google-satellite&mt1=google-map&mt2=osm-ch-standard&mt3=maptiler-hybrid&mt4=bing-map&mt5=osm-ch-standard

Вы возможно ругали криворуких программистов за это, но зря. Программисты нормальные, а во всём виновато китайское правительство. А именно закон КНР о геодезии и картографии, который запрещает публикацию картографической информации без разрешения.

Для публикации картографических данных компании, которые хотят работать на китайском рынке, обязаны использовать алгоритм нелинейной конфиденциальности топографической карты. Для этого придумали систему координат GCJ-02, которую картографы называют «координаты Марса», в связи с тем, что она как будто создана для другой планеты. Фактически, при переносе координат в данную систему из стандартной WGS-84 добавляются псевдослучайные искажения и точки оказываются смещены на 100-700 метров.

Baidu пошёл чуть дальше и придумал свою систему координат BD-09, добавляющую дополнительное размывание данных в GCJ-02 «для лучшей защиты конфиденциальности пользователей».

Само собой, данные алгоритмы держатся в секрете, и простым смертным их не рассказывают.

Не буду пересказывать вам всю википедию, почитаете сами: РУ, EN.

Какие же сложности это вызывает у нас?

Допустим, нашли мы на китайском сайте координаты нужных объектов, и хочется их прогнать через overpass-turbo. Очевидно, так просто это не получится.

Или наоборот, нужно проверить несколько координат в стрит вью на baidu. Тоже можно долго мучиться, пока сопоставишь карту вручную.

Как хорошо, что умные люди позаботились и аппроксимировали эти преобразования с приемлемой для нас точностью. Для программистов есть ссылка на гитхаб, где реализации двустороннего преобразования из GCJ-02 и BD-09 сделаны на разных языках.

https://github.com/Artoria2e5/PRCoords

А здесь только для GCJ-02, но языков побольше.

https://github.com/googollee/eviltransform

А если надо быстро посмотреть пару-тройку координат, есть сайт от Artoria2e5.

https://artoria2e5.github.io/PRCoords/demo.html

Загрузим туда наши координаты с гугла

И получим все возможные варианты преобразования. Нас интересуют GCJ→WGS для OSM и GCJ→BD для baidu.

https://www.openstreetmap.org/?mlat=35.5815&mlon=104.6299#map=16/35.5815/104.6299

https://map.baidu.com/?latlng=35.58730000,104.63893830

Итак, запоминаем:

WGS-84 - православная, используется во всём мире, на OSM только она. Для спутниковых снимков привязка тоже к ней, кроме baidu.

GCJ-02 - китайские карты google, bing и других разрешённых в Китае компаний, кроме baidu.

BD-09 - baidu.

Кстати, аббревиатура GCJ = Guojia(国家) Cehui(测绘) Ju(局) переводится как национальное бюро геодезической стандартизации.

Report Page