He estado reflexionando (y haciendo codificación de prototipo) para una base de código geográfico 'sin proyección' con sus primitivas básicas de punto, línea y polígono.
Sin embargo, en lugar de lidiar con todos los sacrificios que conlleva la proyección al plano, estoy escribiendo algoritmos que funcionan directamente en la superficie del elipsoide.
Una de las posibles complicaciones es que existen diferentes tipos de "líneas":
- (arcos de) círculos grandes: la distancia más corta a lo largo de la superficie (elevación cero constante) entre dos puntos; debe corresponder exactamente a las rutas de la línea de visión.
- Líneas de rumbo: conecta los dos puntos con un camino de dirección constante; por ejemplo, algunas fronteras estatales siguen líneas de latitud (que no son grandes círculos).
- curvas: arcos circulares (caminos de distancia constante desde un punto central dado); Bezier (no estoy seguro de una correcta reinterpretación en el contexto de una superficie curva), etc.
¿De los diferentes tipos de rutas (incluidas las que me perdí), que son lo suficientemente importantes como para tener una representación "exacta", frente a la representación dentro de los límites de error por segmentos cortos de una ruta más simple (por ejemplo, segmentos de arco geodésico cortos)?
Ediciones de aclaración: por "exacto" arriba, quiero decir paramétrico. En otras palabras: computable a cualquier precisión deseada, sin un paso de densificación en la importación.
Una edición , mucho más tarde, para agregar una cita que he encontrado que es muy similar a mis propios pensamientos sobre el uso de vectores de unidades 3D como primitivo geográfico: una representación de posición horizontal no singular ( enlace alternativo ). ¿Mejor parte? ¡No tuve que escribirlo todo yo mismo!
Respuestas:
La pregunta se refiere a qué tipos de curvas merecen una representación implícitamente exacta en lugar de una aproximación discreta. El quid de la cuestión es este: para tener éxito, la clase de curvas que admite de esta manera debe cerrarse bajo la clase de operaciones de creación de curvas y polígonos admitidas en el SIG.
Estas operaciones incluyen:
Buffering. En este proceso, debe construir curvas paralelas a las entidades. ("Paralelo" significa en el sentido de mantener una distancia fija). Esto incluye círculos y porciones de los mismos (para puntos de amortiguación), paralelos oblicuos (que son curvas equidistantes a las geodésicas en el esferoide, y pueden reducirse a puntos aislados en casos especiales) y círculos concéntricos. En la esfera (pero no, generalmente, en un elipsoide), los paralelos oblicuos son en sí mismos círculos.
Polígonos de influencia (polígonos de Thiessen; polígonos de Voronoi; células de Dirichlet). Para construir los polígonos de Thiessen para una colección de entidades de puntos, necesitamos encontrar líneas bisectantes, que son geodésicas (son rectas); pero para una colección de otros tipos de características, como puntos y segmentos, los límites de los polígonos de Thiessen incluyen porciones de parábolas (en el plano). Tal vez no quieras apoyar esto ...
Superposiciones teóricas de conjuntos (intersección, unión, diferencia, complemento). Estas operaciones no crean nuevos tipos de curvas.
Traslación paralela y rotación . Por lo general, no es posible realizarlas exactamente en un elipsoide (porque no es un espacio homogéneo ), pero son sencillas en la esfera. En la esfera, estas operaciones no crean nuevos tipos de curvas.
La clase de curvas realmente problemática que propone consiste en las líneas generales de rumbo (loxodromos). Las líneas de latitud son líneas de rumbo pero (al menos en la esfera) también son círculos, por lo que no presentan ningún problema adicional. Pero las líneas generales de rumbo son bestias complicadas: si no son meridianos o paralelos, se enrollan en espiral en un polo u otro. Los buffers y las traducciones paralelas de líneas de rumbo serán tipos de curvas realmente nuevos. Tendría que representar estos resultados como segmentos rotos de líneas y círculos, lo que frustraría su propósito (y sería bastante difícil de calcular). Por lo tanto, sugiero no tratar de soportar exactamente las líneas de rumbo.
En resumen, parece que puede tener éxito en su programa si (a) trabaja en un modelo esférico de la tierra en lugar del modelo elipsoidal ("esferoidal") más general y (b) limita ciertas construcciones como los polígonos de Thiessen (y ejes mediales, que están estrechamente relacionados) con colecciones de puntos.
fuente
Dan
Quizás te interese parte del trabajo que he estado haciendo sobre geodésicas. Esto se describe en este preprint . En particular, tenga en cuenta:
Los problemas geodésicos directos e inversos pueden resolverse con precisión de máquina. Esto significa unos 15 nm para doble precisión. Puedo cambiar a dobles largos, agregar un término adicional en la serie y obtener una precisión de 6 pm. Tenga en cuenta, en particular, que la solución al problema inverso siempre converge (a diferencia del método de Vincenty). La velocidad es comparable al método de Vincenty (la solución directa es algo más rápida, la solución inversa es algo más lenta).
Calculo la longitud reducida y las escalas geodésicas. Estas cantidades dan las propiedades diferenciales de la geodésica y permiten resolver varios problemas geodésicos (intersecciones, líneas medias, etc.) de manera rápida y precisa utilizando el método de Newton. La curvatura de los límites de las regiones de amortiguación se puede expresar en términos de estas cantidades. Vea esta nota que envié a la lista de correo del proyecto 4.
Defino una proyección gnomónica elipsoidal en la que las geodésicas son casi rectas. Esto permite que los problemas en la superficie del elipsoide se asignen a problemas en la geometría plana. Por ejemplo, la intersección de dos geodésicas se puede encontrar exactamente estimando un punto de intersección, realizando una proyección gnomónica sobre ese punto, volviendo a estimar la intersección e iterando.
Doy expresiones para el área de un polígono geodésico. No es necesario subdividir los bordes largos para obtener un resultado preciso.
GeographicLib (en sourceforge) implementa los algoritmos.
Finalmente, observo que, para muchos propósitos, la geodésica es preferible a cualquier otro tipo de curva (en particular, grandes elipses o líneas de rumbo) porque obedecen a la desigualdad del triángulo. Esto tiene varias consecuencias:
fuente
Esta es la respuesta a la pregunta de @ Dan sobre el uso de la esfera auxiliar para resolver problemas de intersección.
No, la esfera auxiliar no te permite resolver las intersecciones directamente. El problema es que el mapeo desde el elipsoide a la esfera depende de la geodésica (por ejemplo, su acimut en el ecuador). Por lo tanto, la esfera auxiliar es buena para resolver una única geodésica pero no para resolver ningún problema que implique más de una geodésica.
Mi forma recomendada de hacer intersecciones e intercepciones geodésicas (la ruta más corta entre un punto y una geodésica) es usar la proyección gnomónica. La geodésica en un mapa de esfera a líneas rectas en la proyección gnomónica y, por lo tanto, siempre que su problema se limite a un hemisferio, la proyección gnomónica convierte estos problemas en 2d.
No hay proyección que preserve la rectitud de las geodésicas para un elipsoide (porque su curvatura no es constante). Sin embargo, GeographicLib proporciona una generalización de la proyección gnomónica en la que las geodésicas son casi rectas. Esto conduce a algoritmos que convergen rápidamente para la intersección e intercepciones geodésicas (una vez más, siempre que los puntos estén bien dentro del hemisferio). Vea mis respuestas (¡con código!) A gpesquero en
https://sourceforge.net/projects/geographiclib/forums/forum/1026621/topic/4085561
Finalmente, me gustaría señalar que recientemente he convertido las rutinas geodésicas de GeographicLib a Javascript, para que pueda jugar con ellas en Google Maps. Ver
http://geographiclib.sourceforge.net/scripts/geod-google.html
http://geographiclib.sourceforge.net/scripts/geod-calc.html
(Todavía no convertí la proyección gnomónica a Javascript. Eso sería razonablemente sencillo. También convertiría la proyección equidistante azimutal al mismo tiempo, ya que es una forma conveniente de resolver otra clase de problemas geodésicos que involucran "líneas medianas" .)
ADENDA (2014-08-19)
También es posible resolver el momento de aproximación más cercana para dos embarcaciones que viajan a velocidad constante a lo largo de geodesia. Como conocemos las propiedades diferenciales de la geodésica, es posible utilizar el método de Newton para obtener una solución precisa en unas pocas iteraciones. El código para implementar esto se publica en
https://sourceforge.net/p/geographiclib/discussion/1026620/thread/33ce09e0
fuente