2009-07-24 13 views
5

Ho un database di punti poligonali come coppie di latitudine, longitudine e ho bisogno di verificare se un determinato punto lat, lng è all'interno di uno qualsiasi dei poligoni.Punto nell'algoritmo poligono che gestisce i poligoni che si trovano sull'antimeridiano

Esistono diversi algoritmi in giro, incluso these, ma non funzionano se il poligono si trova a cavallo dell'antidiferico (al largo della costa della Nuova Zelanda, dove la longitudine si inverte da +180 gradi est a -180 gradi ovest).

Una soluzione che vedo è quella di rilevare se il poligono si trova a cavallo dell'antideridiano e, in caso affermativo, dividerlo in due poligoni, uno su ciascun lato, quindi controllare ciascuno di essi.

risposta

2

L'altra opzione (più semplice), IMO, consiste nel testare solo per quel caso speciale e, se esiste, applicare una trasformazione al punto di query e al poligono. Ad esempio, se si estende l'anti-meridiano, basta tradurre tutto di una quantità specifica di longitudine per farlo non attraversare il meridiano e fare il test standard.

1

Questo è probabilmente eccessivo, ma si potrebbe considerare l'utilizzo di poligoni sferici invece di trattare la mappa come un piano. Ecco uno library in Java che li gestisce e può eseguire controlli point-in-sferico-poligono. Sebbene, se disponi di poligoni che contengono più della metà del globo o di entrambi i poli, potresti avere problemi poiché la definizione dell'area racchiusa inizia a scomparire.

+0

Concordato: è meglio trattarli come poligoni sferici. Tuttavia, l'area racchiusa è sempre ambigua a meno che non si segua una convenzione di avvolgimento (cioè definire all'interno l'area racchiusa da una traversata CCW). –

0

Grazie per i suggerimenti. Alla fine il poligono su cui sto confrontando è un rettangolo, quindi se si trova a cavallo dell'antideridiano (ha longitudini di segni diversi), taglialo in due poligoni, uno su ciascun lato e la ricerca di oggetti che intersecano entrambi.

0

Non puoi semplicemente spostare tutte le coordinate di longitudine "sposta" sul lato positivo del meridiano GW aggiungendo 360? es: la coordinata è -178degrees diventa poi + 182degrees, -1deg diventa 359deg, 1 deg diventa 361 ecc ...

Non so come questo influenzi i poli, ma probabilmente funzionerebbe bene per tutto ciò che non funziona non toccare i poli

+0

Non ho commenti ovunque privilegiato, quindi fare una risposta è l'unico modo per farmi dire ... –

Problemi correlati