Comment représenter la Terre entière comme un polygone?

11

Cela est lié à la détermination de l'intérieur d'un polygone .

Ma difficulté est que si je spécifie un polygone couvrant la Terre allant d'est en ouest, il aura toujours une frontière le long de l'antéméridien, qui apparaîtra dans des projections azimutales. Par exemple, dans GeoJSON:

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

Existe-t-il un moyen standard de spécifier un polygone de sphère entière, sans frontière?

J'ai pensé à utiliser un anneau extérieur vide:

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

La logique étant que je pouvais spécifier d'autres anneaux comme trous à perforer dans le polygone de la sphère entière.

Malheureusement, GeoJSON stipule que les anneaux linéaires doivent avoir au moins 4 points, ce qui s'écarterait de la spécification. Cependant, je souhaite toujours savoir si cette approche est adoptée ailleurs.

Jason Davies
la source
En partie, la réponse doit dépendre du SIG. Cependant, vous êtes en difficulté dès le départ: si le polygone n'a pas de frontière , alors - sans spécifier d'informations supplémentaires non présentes dans la chaîne de ligne - il n'y a aucun moyen pour le logiciel de distinguer la sphère entière de l'ensemble vide. (Les polygones vides ont des utilisations importantes, même si de nombreux SIG ne les implémentent pas ou ne les implémentent pas correctement.)
whuber
1
Merci. Nous avons décidé de simplement définir notre propre type d'objet "Sphère" pour gérer cette situation, car un LineString vide représenterait le plus intuitivement l'ensemble vide. Je pense que c'est la meilleure "réponse" que vous puissiez vraiment donner à cette question.
Jason Davies
1
Je pense que vous pourriez généraliser votre solution, Jason, à peu de frais et avec quelques avantages. Puisque vous dédiez un bit pour distinguer l'ensemble vide de la sphère, pourquoi ne pas utiliser ce bit avec chaque polygone pour indiquer son orientation? Pour les polygones non dégénérés, cela indiquerait si l'intérieur du polygone doit être considéré comme étant à droite ou à gauche en traversant sa frontière. Pour les polygones dégénérés, cela indiquerait si la frontière coïncide avec le polygone ou si le complément est prévu. Maintenant, vous savez toujours où est l'intérieur.
whuber
Bonne idée! En général, cependant, nous voulons accepter GeoJSON standard en entrée. L'objet Sphère est un peu un cas spécial, donc cela ne nous dérange pas de définir notre propre type, car il sera à peine utilisé. Pour les polygones, nous avons décidé d'adopter une convention d'ordonnancement (règle de droite pour être conforme à la spécification ESRI)
Jason Davies

Réponses:

2

Puisqu'il ne semble pas y avoir de manière standard de représenter cette situation quelque peu rare d'un polygone sans frontière couvrant la Terre entière, nous avons décidé d'ajouter le nôtre {type: "Sphere"}, qui a remarquablement bien fonctionné pour nos besoins.

Nous avons décidé de ne pas utiliser un polygone contenant un anneau linéaire vide, car cela représente plus intuitivement un polygone vide et pourrait facilement conduire à la confusion et à la création accidentelle de polygones de la Terre entière.

Jason Davies
la source