Bagaimana cara saya mewakili seluruh Bumi sebagai Poligon?

11

Ini terkait dengan menentukan interior suatu Poligon .

Kesulitan saya adalah bahwa jika saya menentukan Poligon yang menutupi Bumi dari Timur ke Barat, ia akan tetap memiliki batas di sepanjang antemeridian, yang akan muncul dalam proyeksi azimut. Misalnya, di GeoJSON:

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

Apakah ada cara standar untuk menentukan Poligon seluruh bola, tanpa batas?

Saya sudah memikirkan menggunakan cincin eksterior kosong:

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

Logikanya adalah bahwa saya dapat menentukan cincin lebih lanjut sebagai lubang yang akan ditinju ke seluruh-bola Polygon.

Sayangnya, GeoJSON menetapkan bahwa LinearRings harus memiliki setidaknya 4 poin, jadi ini akan menyimpang dari spesifikasinya. Namun, saya masih tertarik untuk memahami apakah pendekatan ini dilakukan di tempat lain.

Jason Davies
sumber
Sebagian jawabannya harus bergantung pada GIS. Namun, Anda berada dalam masalah sejak awal: jika poligon tidak memiliki batas , maka - tanpa menentukan informasi tambahan yang tidak ada di linestring - tidak ada cara bagi perangkat lunak untuk membedakan seluruh bola dari set kosong. (Poligon kosong memiliki kegunaan penting, meskipun banyak GIS tidak mengimplementasikannya atau mengimplementasikannya dengan tidak benar.)
whuber
1
Terima kasih. Kami memutuskan untuk mendefinisikan tipe objek kami sendiri "Sphere" untuk menangani situasi ini, karena LineString kosong akan paling intuitif mewakili set kosong. Saya pikir ini adalah "jawaban" terbaik yang dapat Anda berikan untuk pertanyaan ini.
Jason Davies
1
Saya pikir Anda bisa menggeneralisasi solusi Anda, Jason, dengan sedikit biaya dan dengan beberapa manfaat. Karena Anda mendedikasikan satu bit untuk membedakan set kosong dari bola, mengapa tidak menggunakan bit itu dengan setiap poligon untuk menunjukkan orientasinya? Untuk poligon yang tidak teregenerasi, ini akan menunjukkan apakah bagian dalam poligon harus dianggap ke kanan atau ke kiri saat melintasi batasnya. Untuk poligon yang berdegenerasi, ini akan menunjukkan apakah batas bertepatan dengan poligon atau komplemen yang dimaksudkan. Sekarang Anda selalu tahu di mana bagian dalam.
whuber
Ide bagus! Secara umum kami ingin menerima GeoJSON standar sebagai input. Objek Sphere adalah sedikit kasus khusus, jadi kami tidak keberatan mendefinisikan jenis kami sendiri, karena hampir tidak akan digunakan. Untuk Polygons, kami telah memutuskan untuk mengadopsi konvensi pemesanan (aturan kanan agar konsisten dengan spesifikasi ESRI).
Jason Davies

Jawaban:

2

Karena tampaknya tidak ada cara standar untuk mewakili situasi yang agak jarang ini dari poligon tanpa batas yang mencakup seluruh Bumi, kami memutuskan untuk menambahkan milik kami {type: "Sphere"}, yang telah bekerja sangat baik untuk tujuan kami.

Kami memutuskan untuk tidak menggunakan Polygon yang mengandung LinearRing kosong, karena ini lebih intuitif mewakili poligon kosong dan dapat dengan mudah menyebabkan kebingungan dan pembuatan tak sengaja poligon seluruh Bumi.

Jason Davies
sumber