2009-07-24 8 views
5

Tengo una base de datos de puntos de polígono como pares de latitud, longitud y necesito probar si un latitud determinada, un punto de latitud está dentro de cualquiera de los polígonos.Punto en el algoritmo de polígono que maneja polígonos que se extienden a través de la antemeridiana

Existen varios algoritmos que incluyen these pero no funcionan si el polígono se extiende a ambos lados del antemeridiense (frente a la costa de Nueva Zelanda, donde la longitud cambia de +180 grados este a -180 grados oeste).

Una solución que veo es detectar si el polígono se extiende a ambos lados del antemeridiano y, si es así, divídalo en dos polígonos, uno a cada lado, luego verifique cada uno de ellos.

Respuesta

2

La otra opción (más simple), IMO, es simplemente probar para ese caso especial, y si existe, aplicar una transformación a su punto de consulta y al polígono. Por ejemplo, si abarca el anti-meridiano, simplemente traduce todo por una longitud de longitud específica para que no abarque el meridiano y haz tu prueba estándar.

1

Esto es probablemente excesivo, pero podría considerar el uso de polígonos esféricos en lugar de tratar el mapa como un avión. Aquí hay un library en Java que los maneja y puede hacer comprobaciones de puntos en polos esféricos. Aunque, si tiene polígonos que contienen más de la mitad del globo o ambos polos, es posible que tenga problemas ya que la definición del área cerrada comienza a descomponerse.

+0

De acuerdo, lo mejor es tratarlos como polys esféricos. Sin embargo, el área cerrada siempre es ambigua a menos que siga una convención de devanado (es decir, defina dentro como el área encerrada por un cruce de CCW). –

0

Gracias por las sugerencias. Al final, el polígono contra el que estoy probando es un rectángulo, de modo que si se extiende sobre el antemeridiano (tiene longitudes de diferentes signos) córtalo en dos polígonos, uno a cada lado, y busque objetos que se crucen con alguno de ellos.

0

¿No puedes simplemente hacer que todas las coordenadas de longitud se 'muevan' al lado positivo del meridiano de GW agregando 360? por ejemplo: la coordenada es -178 grados luego se convierte en + 182 grados, -1deg se convierte en 359deg, 1 grado se convierte en 361, etc. ...

No sé cómo afectará eso a los polos, pero probablemente funcionaría bien para cualquier cosa que no lo haga Toca los polos.

+0

No tengo ningún comentario en todas partes, por lo que dar una respuesta es la única forma de expresar mi opinión ... –

Cuestiones relacionadas