El método de spline ogr2ogr TPS crea un error progresivo

8

Estoy tratando de ajustar un archivo de forma usando la transformación de spline ogr2ogr con comandos cmd como:

C:\OSGeo4W64\bin\ogr2ogr.exe -f "ESRI Shapefile" C:\path\output.shp -tps --optfile C:\path\gcp.txt C:\path\input.shp

Tengo más de 1000 puntos de control (por lo que están en un archivo separado ). Y tengo problemas extraños con la precisión de este método. Ya vi en esta pregunta que el método de spline ogr2org no es realmente exacto. Pero con mi número de GCP y la extensión de mi conjunto de datos, veo que la precisión disminuye drásticamente de norte a sur. Me gusta esto: error de spline

En el norte, el método es casi exacto (error de 0.001 m), luego pierde suavemente la precisión y en el sur crea un error de aproximadamente 60 m.

Calculé RMSE para cada GCP y lo tracé frente a las coordenadas y el número de ID del punto de control (estaba creando el GCP comenzando principalmente desde el norte). Y yo tengo:

y error x error error de identificación

Traté de encontrar y leer el código fuente de gdal (encontré los módulos gdal_tps , thinplatespline y ogr2ogr_lib ) pero no conozco ese lenguaje (C ++?) Y no entiendo cómo funciona el método. Los polinomios de orden 1, 2 y 3 de ogr2ogr funcionan bien (no son métodos exactos pero el error no progresa).

Entonces, ¿por qué la precisión de spline disminuye logarítmicamente dependiendo de la coordenada Y? (Para la coordenada X veo saltos con precisión cada 16000 m). ¿Cómo es esto posible? ¿Cómo funciona este método de ajuste? ¿Como puedó resolver esté problema? (Tengo Windows 7, 64 bit)

nadya
fuente
2
El desarrollador de GDAL ha realizado un análisis preliminar en lists.osgeo.org/pipermail/gdal-dev/2017-June/046816.html . Quizás deberías unirte a esa discusión.
user30184
¿Eres capaz de compartir los GCP? Revisará los resultados, verificará los coeficientes, etc. Pensar esto puede explicarse y minimizar la inestabilidad. ¡Gracias!
David

Respuestas:

4

La respuesta del desarrollador de GDAL Even Rouault realmente me ayudó a dar la dirección correcta.

Sabiendo que este es un caso de inestabilidad numérica, y sabiendo (por mi experiencia con CFD) que la inestabilidad puede ser causada por valores muy pequeños en los datos, analicé mis puntos de control. Construí TIN, calculé distancias entre GCP y descubrí que 2 puntos por error se colocaron extremadamente cerca uno del otro (casi coincidiendo, a 3 m de distancia entre ellos). Cuando quité uno de ellos, la spline funcionó perfectamente.

Este par de puntos estaba en el extremo norte, por lo que la inestabilidad comenzó de norte a sur.

nadya
fuente