Как я представляю всю Землю как многоугольник?

11

Это связано с определением внутренней части многоугольника .

Моя трудность заключается в том, что если я укажу полигон, покрывающий Землю, идущую с востока на запад, он все равно будет иметь границу вдоль антемеридиана, которая будет отображаться в азимутальных проекциях. Например, в GeoJSON:

{
  "type": "Polygon",
  "coordinates": [
    [[-180, -90], [-180, 90], [180, 90], [180, -90], [-180, -90]]
  ]
}

Есть ли стандартный способ указать многоугольник всей сферы, без границ?

Я думал об использовании пустого внешнего кольца:

{
  "type": "Polygon",
  "coordinates": [
    []
  ]
}

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

К сожалению, GeoJSON предусматривает, что LinearRings должны иметь как минимум 4 точки, так что это будет отклоняться от спецификации. Однако мне все еще интересно понять, используется ли этот подход где-либо еще.

Джейсон Дэвис
источник
Отчасти ответ должен зависеть от ГИС. Однако с самого начала у вас возникают проблемы: если у многоугольника нет границы , то - без указания дополнительной информации, отсутствующей в строке линий - программное обеспечение не сможет отличить всю сферу от пустого набора. (Пустые многоугольники имеют важное применение, хотя многие ГИС не реализуют их или реализуют их неправильно.)
whuber
1
Спасибо. Мы решили просто определить наш собственный тип объекта "Сфера", чтобы справиться с этой ситуацией, поскольку пустая строка LineString наиболее интуитивно представляет пустой набор. Я думаю, что это лучший «ответ», который вы действительно можете дать на этот вопрос.
Джейсон Дэвис
1
Я думаю, вы могли бы обобщить свое решение, Джейсон, с небольшими затратами и с некоторой выгодой. Поскольку вы посвящаете один бит, чтобы отличить пустой набор от сферы, почему бы не использовать этот бит с каждым многоугольником, чтобы указать его ориентацию? Для невырожденных многоугольников это будет указывать, следует ли считать, что внутренность многоугольника находится справа или слева при пересечении его границы. Для вырожденных многоугольников это будет указывать, совпадает ли граница с многоугольником или предполагается дополнение. Теперь вы всегда знаете, где внутри.
whuber
Хорошая идея! В общем, мы хотим принять стандартный GeoJSON в качестве входных данных. Объект Sphere - это особый случай, поэтому мы не против определить наш собственный тип, так как он вряд ли будет использоваться. Для полигонов мы решили принять соглашение об упорядочении (правило правой руки, соответствующее спецификации ESRI)
Джейсон Дэвис,

Ответы:

2

Поскольку, кажется, не существует стандартного способа представить эту несколько редкую ситуацию с многоугольником без границ, покрывающих всю Землю, мы решили добавить наш собственный {type: "Sphere"}, который замечательно работал для наших целей.

Мы решили не использовать многоугольник, содержащий пустую линейную линию, поскольку он более интуитивно представляет пустой многоугольник и может легко привести к путанице и случайному созданию многоугольников всей Земли.

Джейсон Дэвис
источник