Jak mam reprezentować całą Ziemię jako wielokąt?


11

Jest to związane z określeniem wnętrza wielokąta .

Moja trudność polega na tym, że jeśli podam wielokąt pokrywający Ziemię przechodzącą ze Wschodu na Zachód, nadal będzie miał on granicę wzdłuż antemerydów, która pojawiałaby się w projekcjach azymutalnych. Na przykład w GeoJSON:

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

Czy istnieje standardowy sposób określania wielokąta z pełną kulą, bez granic?

Pomyślałem o użyciu pustego pierścienia zewnętrznego:

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

Logika polega na tym, że mógłbym określić dalsze pierścienie jako dziury, które mają zostać wybite w wielokącie całej kuli.

Niestety, GeoJSON zastrzega, że ​​LinearRings musi mieć co najmniej 4 punkty, więc odbiegałoby to od specyfikacji. Nadal jednak interesuje mnie, czy takie podejście jest stosowane gdzie indziej.


Po części odpowiedź musi zależeć od GIS. Jednak na samym początku masz kłopoty: jeśli wielokąt nie ma granicy , to - bez podania dodatkowych informacji nieobecnych w linijce - oprogramowanie nie może odróżnić całej kuli od pustego zestawu. (Puste wielokąty mają ważne zastosowania, mimo że wiele GIS nie implementuje ich lub implementuje nieprawidłowo.)
whuber

1
Dzięki. Zdecydowaliśmy się po prostu zdefiniować własny typ obiektu „Kula”, aby poradzić sobie z tą sytuacją, ponieważ pusty LineString najbardziej intuicyjnie reprezentowałby pusty zbiór. Myślę, że to najlepsza „odpowiedź”, jaką naprawdę możesz udzielić na to pytanie.
Jason Davies,

1
Myślę, że możesz uogólnić swoje rozwiązanie, Jason, przy niewielkich kosztach i z pewnymi korzyściami. Skoro poświęcasz jeden bit na odróżnienie pustego zestawu od kuli, dlaczego nie użyć tego bitu z każdym wielokątem, aby wskazać jego orientację? W przypadku wielokątów niedegenerowanych wskazywałoby, czy wnętrze wielokąta powinno być uważane za znajdujące się po prawej czy po lewej stronie podczas przekraczania jego granicy. W przypadku zdegenerowanych wielokątów wskazywałoby to, czy granica pokrywa się z wielokątem, czy też zamierzone jest uzupełnienie. Teraz zawsze wiesz, gdzie jest wnętrze.
whuber

Dobry pomysł! Ogólnie rzecz biorąc, chcemy jednak zaakceptować standardowy GeoJSON jako dane wejściowe. Obiekt Sphere jest trochę szczególnym przypadkiem, więc nie mamy nic przeciwko definiowaniu własnego typu, ponieważ prawie nie będzie używany. W przypadku wielokątów postanowiliśmy przyjąć konwencję porządkowania (reguła prawa ręka jest zgodna ze specyfikacją ESRI)
Jason Davies,

Odpowiedzi:


2

Ponieważ wydaje się, że nie ma standardowego sposobu na przedstawienie tej dość rzadkiej sytuacji wielokąta bez granic obejmujących całą Ziemię, postanowiliśmy dodać własną {type: "Sphere"}, która zadziałała wyjątkowo dobrze dla naszych celów.

Zdecydowaliśmy się nie używać wielokąta zawierającego pusty pierścień liniowy, ponieważ bardziej intuicyjnie reprezentuje pusty wielokąt i może łatwo doprowadzić do zamieszania i przypadkowego utworzenia wielokątów całej Ziemi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.