7 votos

¿Hay una diferencia en los resultados entre Simplificar una geometría por diferentes proyecciones?

Hemos geometrías en una base de datos PostGIS proyectado en srid 4326. Necesitamos tener estas geometrías simplificado con ST_SimplifyPreserveTopology.

Mi pregunta es si esta geometría necesita ser transformada a una proyección diferentes-como 3400 en Alberta, Canadá, para simplificar de forma precisa por los metros en lugar de grados: si simplificado por grados, sería quitar los puntos con más frecuencia en las partes de la geometría más lejos del ecuador (debido a la forma curva de los grados alrededor de la tierra)?

O a la función de eliminar los puntos en la misma frecuencia y los lugares, no importa la proyección, si se les da la misma región como una prueba?

5voto

Patrick Puntos 20392

Como el Douglas Peucker algoritmo trabaja de forma iterativa la eliminación de los puntos que están dentro de un rango de tolerancia de algunas de línea entre dos puntos en una determinada unidad de introducción de datos, se puede asumir que si usted tiene una geometría que cubre una gran norte-sur de la distancia, se puede obtener una mayor cantidad de simplificación para un rango de tolerancia en grados como usted se mueve más hacia el sur. Yo creo que esto va de la escala con la secante aproximadamente, como con el factor de escala en la proyección de Mercator, como, esencialmente, si el uso de grados de esta manera, el algoritmo se comporta como si la entrada se proyecta como las distancias que se utiliza para calcular la tolerancia de un punto de una línea entre dos puntos será Euclidiana.

Entonces, sí, sería mejor usar un sistema de coordenadas proyectadas. Yo no sé mucho acerca de los 3400 proyección, pero he trabajado con el reino unido 27700, que es también Transversal de Mercator, y por lo tanto ha de escala constante en la dirección Norte-Sur, y el aumento de (pero pequeño) distorsión de ambos lados del meridiano central de la proyección sería ideal-ideal para ST_Simplify.

Algo así como:

SELECT ST_SimplifyPreserveTopology(ST_Transform(geom, 3400), tolerance) 
FROM sometable;

debería funcionar.

En última instancia, siempre se puede probar la diferencia con medidas como ST_Area o ST_Npoints uno con 4326 y uno con 3400 para tener una idea de las diferencias.

Como un aparte, hay una alternativa simplificación del algoritmo que podría estar interesado en, llamado visvalingam-whyatt, que podría ser de interés de los que están haciendo un montón de trabajo en la simplificación. Los links anteriores al código fuente del formulario de Mike Bostock el creador de D3.js. También mapshaper para un ejemplo de trabajo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X