ฉันจะแสดงโลกทั้งโลกเป็นรูปหลายเหลี่ยมได้อย่างไร


11

นี้จะเกี่ยวข้องกับการกำหนดตกแต่งภายในของรูปหลายเหลี่ยม

ความยากลำบากของฉันคือถ้าฉันระบุรูปหลายเหลี่ยมที่ปกคลุมโลกจากตะวันออกไปตะวันตกมันจะยังคงมีขอบเขตตามแนว antemeridian ตัวอย่างเช่นใน GeoJSON:

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

มีวิธีมาตรฐานในการระบุรูปหลายเหลี่ยมทั้งทรงกลมโดยไม่มีขอบเขตหรือไม่?

ฉันคิดจะใช้วงแหวนภายนอกที่ว่างเปล่า:

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

เหตุผลที่ฉันสามารถระบุวงแหวนเพิ่มเติมเป็นหลุมเพื่อเจาะลงในรูปหลายเหลี่ยมทั้งทรงกลม

น่าเสียดายที่ GeoJSON กำหนดให้ LinearRings ต้องมีอย่างน้อย 4 คะแนนดังนั้นนี่จึงเป็นสิ่งที่หลงทางจากข้อกำหนด อย่างไรก็ตามฉันยังคงสนใจที่จะเข้าใจว่าวิธีการนี้ถูกนำไปใช้ที่อื่นหรือไม่


ในส่วนคำตอบนั้นต้องขึ้นอยู่กับ GIS อย่างไรก็ตามคุณกำลังมีปัญหาตั้งแต่เริ่มต้น: หากรูปหลายเหลี่ยมไม่มีขอบเขตดังนั้น - โดยไม่ต้องระบุข้อมูลเพิ่มเติมที่ไม่ปรากฏใน linestring - ไม่มีวิธีใดที่ซอฟต์แวร์จะแยกความแตกต่างของทรงกลมทั้งหมดจากชุดที่ว่างเปล่า (รูปหลายเหลี่ยมที่ว่างเปล่ามีการใช้งานที่สำคัญแม้ว่า GIS จำนวนมากจะไม่นำไปใช้หรือนำไปใช้อย่างไม่ถูกต้อง)
whuber

1
ขอบคุณ เราตัดสินใจที่จะกำหนดประเภทวัตถุของเราเอง "Sphere" เพื่อจัดการกับสถานการณ์นี้เนื่องจาก LineString ที่ว่างเปล่าจะเป็นตัวแทนของชุดที่ว่างเปล่า ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุดที่คุณสามารถให้กับคำถามนี้ได้
Jason Davies

1
ฉันคิดว่าคุณสามารถพูดคุยทั่วไปเกี่ยวกับวิธีแก้ปัญหาของคุณ Jason ในราคาเพียงเล็กน้อยและได้รับประโยชน์ เนื่องจากคุณอุทิศหนึ่งบิตเพื่อแยกชุดว่างออกจากทรงกลมทำไมไม่ใช้บิตนั้นกับรูปหลายเหลี่ยมทุกอันเพื่อระบุทิศทางของมัน สำหรับรูปหลายเหลี่ยมที่ไม่สร้างมันจะเป็นการบ่งบอกว่าภายในของรูปหลายเหลี่ยมควรถูกพิจารณาว่าเป็นทางด้านขวาหรือทางซ้ายในขณะที่ข้ามเขตแดนของมัน สำหรับรูปหลายเหลี่ยมที่แย่ลงมันจะบ่งบอกว่าขอบเขตนั้นเกิดขึ้นพร้อมกับรูปหลายเหลี่ยมหรือส่วนประกอบนั้น ตอนนี้คุณก็รู้ว่าข้างในนั้นอยู่ที่ไหน
whuber

ความคิดที่ดี! โดยทั่วไปเราต้องการยอมรับ GeoJSON มาตรฐานเป็นอินพุต วัตถุทรงกลมนั้นเป็นกรณีพิเศษเล็กน้อยดังนั้นเราจึงไม่รังเกียจที่จะกำหนดประเภทของเราเองเนื่องจากมันจะถูกใช้งานแทบจะไม่ สำหรับรูปหลายเหลี่ยมเราได้ตัดสินใจที่จะใช้ระเบียบแบบสั่งซื้อ (กฎมือขวาเพื่อให้สอดคล้องกับข้อกำหนด ESRI)
Jason Davies

คำตอบ:


2

เนื่องจากดูเหมือนจะไม่มีวิธีมาตรฐานในการแสดงสถานการณ์ที่ค่อนข้างหายากของรูปหลายเหลี่ยมที่ไม่มีขอบเขตครอบคลุมทั่วทั้งโลกเราจึงตัดสินใจที่จะเพิ่มของเราเอง{type: "Sphere"}ซึ่งทำงานได้ดีมากสำหรับจุดประสงค์ของเรา

เราตัดสินใจที่จะไม่ใช้รูปหลายเหลี่ยมที่มี LinearRing ที่ว่างเปล่าเนื่องจากรูปแบบนี้เป็นรูปหลายเหลี่ยมที่ว่างเปล่าและสามารถนำไปสู่ความสับสนและการสร้างรูปหลายเหลี่ยมทั้งโลกโดยไม่ตั้งใจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.