Comment différents systèmes SIG déterminent-ils l'intérieur d'un polygone?

11

Je suis intéressé à comprendre comment les systèmes SIG du monde réel et leurs données codent les polygones.

Plus précisément, comment résolvent-ils l'ambiguïté de l'intérieur d'un polygone sur une sphère?

Contexte: en 2D, il est trivial de choisir le côté de la frontière qui a une zone finie, car le plan 2D est infini. Cependant, une sphère est finie, il est donc impossible de savoir de quel côté se trouve l'intérieur sans faire d'hypothèses supplémentaires.

Approches possibles que je connais:

  1. Règle de droite : les limites extérieures sont toujours spécifiées dans le sens horaire et les trous sont spécifiés dans le sens antihoraire. (Il y a bien sûr aussi la règle de gauche).
  2. Plus petite zone : pour un anneau donné, choisissez toujours le côté avec la plus petite zone. Je ne sais pas comment vous spécifieriez un polygone à large plage: peut-être un anneau extérieur vide suivi de trous?
  3. Équirectangulaire : il suffit de considérer la projection équirectangulaire sur un plan 2D infini. Cependant, cela suppose que les caractéristiques sont coupées à l'antéméridien, sinon une solution de rechange serait requise pour l'une des deux méthodes ci-dessus.

Ma préférence personnelle est la première approche, mais je souhaite savoir si cela est courant dans les systèmes SIG standard.

Jason Davies
la source

Réponses:

3

Les principaux systèmes SIG et leurs méthodes pour résoudre l'ambiguïté inhérente:

  • ESRI : règle du pied droit.
  • ArcGIS : règle du pied droit.
  • SQL Server 2012 : règle du pied gauche. Avant SQL Server 2012, les polygones plus grands que l'hémisphère généraient une erreur.

GeoJSON ne spécifie pas de commande.

Jason Davies
la source
1
La spécification GeoJSON révisée ( tools.ietf.org/html/rfc7946 ) spécifie que "les anneaux polygonaux DOIVENT suivre la règle de droite pour l'orientation (anneaux externes dans le sens antihoraire, anneaux internes dans le sens horaire)."
perrygeo
1

Si je comprends bien votre question, vous voulez savoir comment le SIG effectue un point dans le test de polygone sphérique. Voici un algorithme que j'ai trouvé sur geospatialmethods.org :

  1. Connectez le point au point externe connu avec un grand arc de cercle.
  2. Pour chaque grand arc de cercle qui est un côté du test du polygone sphérique s'il coupe l'arc construit à l'étape # 1 et compte le nombre d'intersections.
  3. Si le nombre total d'intersections est impair, le point donné se trouve à l'intérieur du polygone sphérique. si le nombre total d'intersections est pair, le point est en dehors du polygone sphérique.

Je suppose qu'il est toujours basé sur l'algorithme planaire de construction d'un rayon de test à partir du point en question vers un point connu pour être en dehors du polygone, suivi du comptage du nombre d'arêtes que le rayon traverse que vous avez mentionnées.

Il est également discuté en profondeur dans un article JPL de la NASA sur les algorithmes sur les polygones sur une sphère . C'est à la page 11. Il y a bien sûr quelques optimisations:

Tout d'abord, évitez d'effectuer les calculs de trigonométrie sphérique coûteux en calcul lorsque cela est possible en comparant le rayon de test à une boîte de délimitation pré-calculée avant de regarder l'un des bords du polygone. Si le rayon de test coupe le cadre de sélection, Q est comparé à chacun des sommets du polygone. Il est inutile de tester si Q est sur une arête à ce stade, car cela sera révélé lorsque les tests d'intersection seront effectués et que les autres arêtes pourront être ignorées à ce moment-là.

Je pense que vous trouverez l'article le plus intéressant :)

RK
la source
Cela semble répondre à une autre question. Une polyligne fermée non auto-entrecroisée divise une sphère en deux composants connectés. Le PO demande comment le SIG détermine - ou comment est-il dit - lequel de ces composants doit être considéré "à l'intérieur" et lequel "à l'extérieur"? Le site Web que vous citez traite de ce problème sous le titre "Devinez point externe", en soulignant qu'il s'agit simplement de deviner quel composant est destiné à être à l'intérieur.
whuber
Oh ... drat. Mal compris sa question. Je l'ai confondu avec la version sphérique du test de point en polygone. Le révisera dès que je trouverai une réponse.
RK
Eh bien, j'ai apprécié les références que vous avez trouvées, alors j'espère que vous réussirez à les inclure dans votre réponse révisée :-).
whuber
J'espère aussi. Ou peut-être que je vais juste poser une question et y répondre moi-même ;-) Ce serait dommage de les gaspiller.
RK
1
Merci pour la réponse détaillée! Malheureusement, comme le souligne @whuber, cela ne répond pas à ma question spécifique. :) J'ai décrit les approches possibles pour résoudre l'ambiguïté inhérente de l'endroit où se trouve l'intérieur d'un polygone, mais je suis intéressé à savoir quelles approches prennent les logiciels SIG du monde réel.
Jason Davies