In che modo diversi sistemi GIS determinano l'interno di un poligono?


11

Sono interessato a capire come i sistemi GIS del mondo reale e i loro dati codificano i poligoni.

In particolare, come risolvono l'ambiguità degli interni di un poligono su una sfera?

Sfondo: in 2D, è banale scegliere il lato del confine che ha un'area finita, poiché il piano 2D è infinito. Tuttavia, una sfera è finita, quindi è impossibile sapere da che parte sta dentro senza fare ipotesi aggiuntive.

Possibili approcci che conosco:

  1. Regola della mano destra : i confini esterni sono sempre specificati in senso orario e i fori sono specificati in senso antiorario. (Naturalmente esiste anche la regola della mano sinistra).
  2. Area più piccola : per ogni dato anello, scegli sempre il lato con l'area più piccola. Non sono sicuro di come specificare un poligono ad ampio raggio: forse un anello esterno vuoto seguito da buchi?
  3. Equirettangolare : basta considerare la proiezione equirettangolare su un piano 2D infinito. Tuttavia, ciò presuppone che le caratteristiche siano troncate nell'antemeridiano, altrimenti sarebbe richiesto un fallback a uno dei due metodi sopra.

La mia preferenza personale è il primo approccio, ma sono interessato a capire se questo è comune nei sistemi GIS standard.

Risposte:


3

Principali sistemi GIS e loro metodi per risolvere l'ambiguità intrinseca:

  • ESRI : regola del piede destro.
  • ArcGIS : regola del piede destro.
  • SQL Server 2012 : regola del piede sinistro. Prima di SQL Server 2012, i poligoni più grandi dell'emisfero generavano un errore.

GeoJSON non specifica un ordine.


1
La specifica GeoJSON rivista ( tools.ietf.org/html/rfc7946 ) specifica che "Gli anelli poligonali DEVONO seguire la regola della mano destra per l'orientamento (anelli esterni in senso antiorario, anelli interni in senso orario)".
perrygeo,

1

Se capisco correttamente la tua domanda, vuoi sapere come GIS esegue un punto nel test poligonale sferico. Ecco un algoritmo che ho trovato su geospatialmethods.org :

  1. Collegare il punto al punto esterno noto con un grande arco circolare.
  2. Per ogni grande arco circolare che è un lato del test poligonale sferico se interseca l'arco costruito nel passaggio n. 1 e conta il numero di intersezioni.
  3. Se il numero totale di intersezioni è dispari, il punto dato si trova all'interno del poligono sferico. se il numero totale di intersezioni è pari, il punto si trova all'esterno del poligono sferico.

Immagino sia ancora basato sull'algoritmo planare di costruire un raggio di prova dal punto in questione a un punto noto al di fuori del poligono, seguito dal conteggio di quanti bordi attraversa il raggio che hai citato.

Viene anche discusso in modo approfondito in un documento JPL della NASA sugli algoritmi sui poligoni su una sfera . È a pagina 11. Ci sono ovviamente alcune ottimizzazioni:

Innanzitutto, evita di eseguire i calcoli della trigonometria sferica computazionalmente costosi, quando possibile, controllando il raggio di prova contro un riquadro di delimitazione precalcolato prima di guardare uno qualsiasi dei bordi del poligono. Se il raggio di prova interseca il riquadro di delimitazione, Q viene controllato su ciascuno dei vertici del poligono. Non ha senso verificare se Q è su un bordo a questo punto, perché ciò verrà rivelato quando vengono eseguiti i test di intersezione e il resto dei bordi può essere saltato in quel momento.

Penso che troverai l'articolo più interessante :)


Questo sembra rispondere a una domanda diversa. Una polilinea chiusa non autointersecante suddivide una sfera in due componenti collegati. L'OP chiede come determina il GIS - o come viene detto - quale di questi componenti deve essere considerato "dentro" e quale "fuori"? Il sito Web che citi tratta questo problema sotto l'intestazione "Indovina punto esterno", sottolineando che si tratta semplicemente di indovinare quale componente è destinato ad essere all'interno.
whuber

Oh ... drat. Ha frainteso la sua domanda. L'ho combinato con la versione sferica del punto nel test poligonale. Lo revisionerò non appena trovo una risposta.
RK,

Bene, ho apprezzato i riferimenti che hai trovato, quindi spero che tu riesca a includerli nella tua risposta rivista :-).
whuber

Lo spero anch'io. O forse farò solo una domanda e risponderò da solo ;-) Sarebbe un peccato sprecarli.
RK,

1
Grazie per la risposta dettagliata! Sfortunatamente, come sottolinea @whuber, questo non risponde alla mia domanda specifica. :) Ho delineato possibili approcci per risolvere l'ambiguità intrinseca di dove si trova l'interno di un poligono, ma sono interessato a sapere quali approcci adottano il software GIS nel mondo reale.
Jason Davies,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.