Время прочтения: 2 минуты
Когда речь идет о паре географических координат, геопространственное ПО все еще не может определиться в одном: в каком порядке указывать долготу и широту. Координаты часто представлены в виде массивов [-87.73, 41.83], а не объектов { long: -87.73, lat: 41.83 }. Это оставляет разработчику право определить, что такое "-87.73" — долгота или широта. Одна пара координат приведет вас в Чикаго, а другая — в Антарктиду.
В работе приходится использовать комбинации библиотек и ПО, и многие из них требуют разный порядок координат: lon/lat или lat/lon. Не существует единого установленного для всех порядка, что приводит к путанице и ошибкам.
Том МакРайт, разработчик с интересным блогом, собрал весь свой опыт в таблицу с источниками и показал, в каких программах, форматах и библиотеках используется порядок широта/долгота, а где — долгота/широта.
Долгота, широта
Форматы
javascript API
Мобильные API
- Tangram ES
Спецификации сервисов
Другое
Широта, долгота
Форматы
javascript API
Мобильные API
- Google Maps iOS/Android
- Apple MapKit
Спецификации сервисов
А как в других форматах: GPX, OSM XML и GML?
Форматы, которые представляют широту и долготу отдельными атрибутами XML, не определяют порядок координат, потому что атрибуты XML не упорядочены. GML позволяет диктовать порядок системе данных, и некоторые данные могут иметь порядок lat/lon, а другие — lon/lat.
Какой вариант правильный?
На этот вопрос нет четкого ответа, оттого и путаница. География отдает предпочтение lat/lon, а математика и IT предпочитают lon/lat. В математике упорядоченная пара x, y более привычна, чем y, x, а если добавить к координатам высоту, то lat/lon приведет к еще более непривычному виду y, x, z.
Почему в географии принято ставить широту на первое место?
Есть несколько теорий, но очень вероятно, что широта оказалась на первом месте, потому что географы смогли определить ее гораздо раньше, чем долготу.
А что говорят стандарты?
По ISO 6709, международному стандарту отображения координат, широта стоит первой. Но этот стандарт диктует только вид их записи и не относится к механизмам хранения, программному обеспечению или форматам.
Сам Том МакРайт при этом считает, что долгота должна стоять первой. Форматы данных менять сложнее и дольше, чем программное обеспечение, и многие геоформаты уже поставили долготу на первое место. Порядок долгота/широта принят еще в древнем формате WKT, в стандартном шейп-файле, в удобном GeoJSON, а также в KML. Относительно известные форматы, которые ставят широту на первое место, — это GeoRSS Simple и алгоритм Google Encoded Polyline. GeoRSS Simple встречается редко: чаще используют GeoRSS GML, а в GML нет установленного порядка координат.
Многое ПО с открытым исходным кодом сейчас использует порядок долгота/широта. Известное исключение — Leaflet, и разработчик Крис Хенрик показал на примере, как разный порядок координат библиотек Leaflet и Turf.js приводит к необычным результатам. Так что, чтобы избежать проблем, всегда проверяйте, какой порядок координат ждет от вас программа.
Источники:
- lat lon — Tom MacWright;
- longitude-latitude is the right way — Tom MacWright;
- Lat Lon or Lon Lat? — Chris Henrick, Feb 7, 2021.
Автор: Юлия Федорова