Как построить минимально выпуклый корпус, пересекающий линию 180 градусов?


13

Я строил выпуклые корпуса для видов, населяющих Индо-Тихоокеанский регион (~ от 20 до -65 градусов долготы). Проблема, с которой я столкнулся, состоит в том, что для видов, которые можно найти по обе стороны от линии 180 градусов по долготе, восстановленный корпус расширяется по всему слою, а не включает точки в многоугольнике намного меньшего размера, содержащем оба конца слоя. Причиной такого поведения является то, что эта линия представляет край слоя, а QGIS не переносит векторные карты (см. Изображение ниже ... моя «репутация» сейчас «достаточно хороша, чтобы включить ее, спасибо).

введите описание изображения здесь

После некоторого размышления и поиска в Google это некоторые из возможных подходов к проблеме, с которой я столкнулся; однако я не слишком уверен в их достоинствах или реализации:

  1. Измените центральный меридиан с 0 (т. Е. По Гринвичу) на 150 градусов. Как это может быть сделано? Изменит ли это просто отображение карты (полезно само по себе), или это также будет способствовать построению правильного выпуклого корпуса?

  2. Измените систему координат с формата +/- 180 градусов на формат от 0 до 360 градусов. По-видимому, чего-то подобного можно достичь с помощью функции «ST_Shift_Longitude» в PostGIS, которая добавляет 360 градусов к отрицательным долготам. Есть ли более простой способ сделать это? Также эта функция создает карту на 180 градусов, которая не будет концом света, но карта на 150 градусов будет лучше (~ центр Индо-Тихоокеанского региона).

    Спасибо за ваше время и помощь, и извините за длинный пост.


1
Выпуклые оболочки имеют смысл только при использовании проецированной системы координат

2
Хотя в целом вы правы, @Dan, во многих случаях выпуклая оболочка имеет смысл - и это, вероятно, один из них. Мы можем определить выпуклую оболочку любого набора точек на сфере, построив их конус (который представляет собой объединение лучей, исходящих из центра Земли и проходящих через точки) и пересекающих выпуклую оболочку этих лучей (рассматриваемых как подмножество пространство) со сферой.
whuber

Связанный вопрос на gis.stackexchange.com/questions/17788 просит вычислить ограничивающие рамки точек, которые могут пересекать меридиан + -180 градусов. В данном случае, однако, либо решение в проецируемых координатах (как предложено @Dan Patterson), либо 3D-решение выглядят как лучшие ставки. Однако будьте осторожны: у большинства ГИС все еще есть проблемы с данными, которые охватывают этот меридиан. Проводите тесты с простыми наборами данных, прежде чем принимать какое-либо решение.
whuber

Ответы:


4

Вы можете использовать GRASS GIS (в QGIS, доступной через панель инструментов GRASS или лучше, плагин Sextante), которая может обрабатывать глобальные изменения в строке даты.

Вот пример со случайными точками в этой зоне с многоугольником выпуклой оболочки, сгенерированным с помощью v.hull :

введите описание изображения здесь


0

Если вы хотите переместить центральный меридиан карты мира с Гринвича на что-то другое, вы получите те же места, с которыми вы столкнулись, но с фоном карты, если он построен на векторных многоугольниках.

Посмотрите этот Q & A для обхода этого:

Репроектирование набора природных данных Земли в World Eckert I

Несмотря на то, что она написана для проекции Эккерта, она должна работать для всех мировоззрений, сосредоточенных на меридианах, отличных от Гринвича.

Использование растрового фона, такого как Blue Marble, позволит избежать этой проблемы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.