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

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

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

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

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

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

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

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

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

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

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

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

3а.) либо “растягивание” растра на всю землю (рис 3б.) и заполнением безлюдных областей значением “nodata”.

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

Для российских гис- и веб-картографов неприятность особенно актуальна, по причине того, что самая восточная часть России находится в Западном полушарии, и наша страна единственная, которую по суше пересекает 180-ый меридиан.
С технической точки зрения все дело в том, что в глобальных проекциях, каковые охватывают всю землю, по 180-ому меридиану проходит граница, разделяющая хорошие и отрицательные координаты по оси X (= точки с восточной и западной долготой).
Неприятности не ограничиваются лишь визуализацией. Допустим, имеется сервис поиска каких-либо объектов по заданному полигону на карте. В случае если полигон пересекает 180-ый меридиан, то, какую выборку объектов мы возьмём: в верной «маленькой» области, на часть данной области либо на ее «дополнение» по оси X?
Варианты ответа
Какой-то исчерпывающей и оптимальной методики по этому вопросу на все случаи судьбы нам не виделось, и мы, со своей стороны, такую не обещаем Но имеется решения на уровне разных приемов. Убедиться, что разработчики и специалисты с таковой проблемой сталкиваются достаточно довольно часто, возможно, изучив результаты поиска в Гугл по запросу: “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° восточной долготы”.
Плюс второго способа — максимальная совместимость и аккуратность, минус — накладные затраты (сложность вычислений) по преобразованию геометрических объектов: склеивание и разрезание геометрии.
Не только в теории, но и на практике используем оба подхода:

  • в каталоге поиска снимков координаты объектов, пересекающие 180-ый меридиан: границы поиска, контура снимков задаются “с перехлестом” (метод 1)
  • в GeoMixer:
    — объекты в векторных слоях “разрезаются” (метод 2), потому, что векторные слои в GeoMixer в принципе разбиваются на тайлы- для растровых слоев, пересекающих 180-ый меридиан, bbox записывается «с перехлестом» координат- GeoMixer API может трудиться с объектами обоих типов

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

http://gisa.ru/105307.html

180-й меридиан. Часть 1. Анадырь и Эгвекинот.


Интересные записи на сайте:

Подобранные по важим запросам, статьи по теме: