Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 11254|Ответ: 1

Координаты Baidu преобразуются в координаты WGS84

[Скопировать ссылку]
Опубликовано 11.10.2017 9:56:13 | | | |
Требования: Преобразовать координаты Baidu в координаты WGS84
Реализация:
Прежде всего, позвольте представить множество сложных систем координат в Китае: как всем известно, в США GPS используются координаты WGS84, но в Китае, по соображениям безопасности, когда карта публикуется, 84 координаты нелинейные и смещеные, а полученные координаты называются системами координат GCJ02, обычно известными как координаты Марса. Кроме того, многие отечественные картографические компании, возможно, из-за бизнес-потребностей или по причинам коммерческой конкуренции, совершили нелинейное отклонение на основе марсианских координат и получили собственную систему координат. Baidu — такая компания. Baidu провела вторичное нелинейное смещение BD-09 на основе GCJ02 и получила собственную систему по координатам Baidu. Это может быть полезно самой компании Baidu, но для нас, разработчиков, это просто раздражает.
Ниже приведено краткое введение в координатные системы, используемые некоторыми поставщиками картографических услуг в Китае:



В настоящее время Baidu предоставляет API для преобразования координат http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
В это ввод
• из: Исходная система координат (0 для исходных GPS-координат, 2 для координат Google)
• в: Преобразованные координаты (4 — это собственные координаты Baidu, как будто это должно быть 4)
• x: Точность
• y: широта
В результате получается json-строка: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• ошибка: это бит метки ошибки, а «0» означает OK
• x: Точность системы координат Baidu (шифрование Base64)
y: широта системы Байду (шифрование Base64);
Я собрал значение этих двух чисел в интернете:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Угловые координаты, полученные GPS-оборудованием;
2: Метрические координаты, полученные с помощью GPS, координаты, используемые в картах sogou;
3: Координаты, используемые для Google Maps, SOSO Maps, Aliyun Maps, MapABC и AMAP Maps
4:3 Координаты метра, соответствующие координатам карты в списке
5: координаты долготы и широты, используемые Baidu Maps
6: метрические координаты, используемые Baidu Maps
7: координаты карты на полосе карты;
8:51 Координаты карты По умолчанию нет 1, это координаты, полученные GPS-устройством
Для типов координат назначения есть два варианта: 5, 6.
5: BD09LL (координаты широты и долготы Байду),
6: BD09MC (координаты широты и долготы в 100 градусах метров); Нет. По умолчанию — 5, то есть bd09ll (координаты Baidu)

Все вышеуказанные используются для преобразования 84 координат в координаты Baidu, ниже давайте поговорим о том, как добиться обратного преобразования координат, то есть Baidu в 84 координаты.
Я нашёл много алгоритмов в интернете, и большинство из них ограничены одним смещением, то есть обменом между координатами Байду и Марса координатами, обменом координатами Марса и Земли и так далее, и мало упоминаний о координатах Байду до 84 координат.
В этом отношении я пытался сначала преобразовать координаты Байду в марсианские, а затем марсианские координаты в координаты Земли, но результат был неудовлетворительным: минимальная ошибка составляла 60 метров, а максимальная — даже более 600 метров, поэтому пришлось сдаться. Я больше не буду публиковать алгоритм, заинтересованные студенты могут самостоятельно найти его в интернете.
Здесь я использую хитрый метод, конкретный метод таков:
Координаты Baidu и преобразование GPS-координат очень близки на близких расстояниях.
Предположим, что у вас есть координаты Baidu: x1=116.397428, y1=39.90923
Возьмите эту координату как GPS-координату и получите его координаты Baidu через интерфейс: x2=116.41004950566, y2=39.916979519873

Координаты GPS можно получить с помощью вычислений:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
Для проверки точности этого метода я взял координаты 14 крупных городов Китая, юго-востока, северо-запада и северо-запада Китая для тестирования, и результаты получили отклонение 13 метров и минимум 0,x метров. Общая ошибка составляет 6 метров. Конкретные результаты тестов будут опубликованы позже.
Позвольте нарисовать простую схему, чтобы проиллюстрировать эту проблему.



G обозначает исходные непреобразованные координаты Земли;
B обозначает координаты Baidu после преобразования G через API Baidu;
G' обозначает координаты после преобразования точки B через Baidu API;
Если предположить, что смещение после преобразования координат Google в координаты Baidu мало, то координаты точки G полностью равны
2B-G'。 После проверки значение смещения после преобразования координат Google в координаты Baidu составляет около нескольких сотен метров, что фактически незначительно, поэтому используйте этот метод для решения проблемы библиотеки смещения с помощью собственного API Baidu, а затем игнорируйте влияние преобразования смещений.
Конечно, у этого метода есть и большой недостаток: он требует, чтобы эти две точки находились в одной и той же смещенной базе данных; если метод находится в двух разных библиотеках смещения, ошибка может быть относительно большой.
Кроме того, в настоящее время готовится ещё один метод для дальнейших исследований — создание офсетной библиотеки и использование этой офсетной библиотеки для дальнейшего устранения этого воздействия: она ещё предстоит изучить.
Вот недостаток онлайн-конвертации: инструмент онлайн-конвертации API Baidu фактически имеет ограничение на объём конвертируемых данных: каждый ключ может конвертировать около 5 000 единиц данных, а аккаунт может подать заявку на до 20 ключей, поэтому если объём данных большой, не рекомендуется использовать такой вид онлайн-конвертации, что также является первоначальной целью изучения локальной офсетной библиотеки. Кроме того, поскольку веб-сторона может быть более ограничена, скорость сети, параллельные запросы и т.. могут влиять на результаты и пользовательский опыт, поэтому вышеуказанные методы используются только для справки.





Предыдущий:Javascrip{filter}tmodule — загрузка модуля require.js
Следующий:Используйте метод Ajax для POST JSON-данных в фоновый режим
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com