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:
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:
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)
Respuestas:
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.
fuente