ЛИДЕР В СФЕРЕ СПУТНИКОВОГО МОНИТОРИНГА
RU EN

Космоснимки: Пересечение 180-ого меридиана или “широка страна моя родная”

10 Сентября 2014
В СМИ

Источник: ГИС-Ассоциация

В блогах "Космоснимки" опубликована статья М. Потанина «Пересечение 180-ого меридиана или “широка страна моя родная”».
Публикуем текст полностью; оригинал находится здесь.

Есть ли стандарт, или устоявшийся подход при работе с координатами географических объектов, которые пересекают 180-ый меридиан? 

Представим, что нужно передать координаты прямоугольника, изображенного на рисунке 1а. Как нужно записать координаты, чтобы не получилось прямоугольника, изображенного на рисунке 1б?

 

180problem 1a

Рис. 1а. Прямоугольник, охватывающий о. Врангеля и пересекающий 180-ый меридиан

180problem 1b
Рис. 1б. Нежелательное отображение прямоугольника, пересекающего 180-ый меридиан

Если координаты объектов, пересекающих 180-ый меридиан, некорректно записаны, или программное обеспечение неправильно обрабатывает (интерпретирует) координаты таких объектов, то на карте получаются некрасивые “разрывы” как на картинках ниже:

180problem 2a
Рис. 2а. Неправильное отображение контуров снимков Landsat8, пересекающих 180-ый меридиан
 
180problem 2b
Рис. 2б. “Разорванные” границы Чукотского автономного округа

На первый взгляд кажется, что с растровыми данными в виде тайлов нет таких проблем, поскольку тайл не может пересекать 180-ый меридиан по определению (по крайней мере в наиболее используемых системах нарезки на тайлы). Но, во-первых, есть проблема, как перепроецировать растровые данные до тайлинга из локальной проекции в глобальную в районе 180-ого меридиана и, во-вторых, как корректно описывать в метаданных то, что называется “bounding box” (bbox — прямоугольная граница) такого слоя. 

Могут быть “разрывы” и с растровыми данными. Например, космический снимок, пересекающий 180-ый меридиан, записан в зональной проекции UTM-60 и для отображения на веб-картах должен быть перепроецирован в глобальную проекцию Меркатора. В таком случае могут возникнуть артефакты: либо отрезание части растра по 180-ому меридиану (рис. 3а.) или “растягивание” растра на весь мир (рис 3б.) и заполнением пустых областей значением “nodata”.

180problem 3a
Рис. 3а. “Отрезание” части растра по 180-ому меридиану
 
180problem 3b
Рис. 3б. “Растягивание” растра через весь мир

Для российских гис- и веб-картографов проблема особенно актуальна, потому что самая восточная часть России находится в Западном полушарии, и наша страна единственная, которую по суше пересекает 180-ый меридиан. 

С технической точки зрения все дело в том, что в глобальных проекциях, которые охватывают весь мир, по 180-ому меридиану проходит граница, разделяющая положительные и отрицательные координаты по оси X (= точки с восточной и западной долготой). 

Проблемы не ограничиваются только визуализацией. Допустим, есть сервис поиска каких-либо объектов по заданному полигону на карте. Если полигон пересекает 180-ый меридиан, то, какую выборку объектов мы получим: внутри правильной «маленькой» области, на часть этой области или на ее «дополнение» по оси X?

Варианты решения
Какой-то исчерпывающей и оптимальной методики по этому вопросу на все случаи жизни нам не встречалось, и мы, в свою очередь, такую не обещаем :) Но есть решения на уровне различных приемов. Убедиться, что специалисты и разработчики с такой проблемой сталкиваются достаточно часто, можно, изучив результаты поиска в Google по запросу: “polygons crossing 180 longitude”.

Мы используем два подхода:
1) записывать координаты точек с “перехлестом”. Например:

  • {“type”:LINESTRING, “coordinates”: [[170,60],[190,60]]} — отрезок в “короткую сторону” между 170° восточной долготы и 170° западной долготы
  • {“type”:POLYGON, “coordinates”:[[[170,70],[190,70],[190,50],[170,50],[170,70]]]} — прямоугольник между 170° восточной долготы и 170° западной долготы

2) разрезать геометрию на две части по 180-ому меридиану. В этом случае указанные геометрии будут записана так:

  • {“type”:MULTILINESTRING, “coordinates”: [ [[170,60],[180,60]],[[-180,60],[-170,60]]] } — разрезанный на две части отрезок
  • {“type”:MULTIPOLYGON, “coordinates”:[ [[[170,70],[180,70],[180,50],[170,50],[170,70]]],
    [[[-180,70],[-170,70],[-170,50],[-180,50],[-180,70]]] ]}
     — разрезанный на две части прямоугольник

Плюс первого метода — простота преобразования координат, минус — в проблемах экспорта-импорта координат, поскольку не любое программное обеспечение для работы с пространственными данными, будет правильно обрабатывать географические координат вида “190° восточной долготы”. 

Плюс второго метода — аккуратность и максимальная совместимость, минус — накладные расходы (сложность вычислений) по преобразованию геометрических объектов: разрезание и склеивание геометрии.

Не только в теории, но и на практике используем оба подхода:

Disclaimer
Несмотря на приобретенный опыт все равно возникают отдельные случаи, когда спотыкаемся об эту проблему. Но в целом благодаря описанным приемам удалось с ней справиться. И добавим, что все скриншоты взяты из наших различных проектов.

http://gisa.ru/105307.html

Все новости
Наверх