J'essaie d'ajuster un fichier de formes en utilisant la transformation de spline ogr2ogr avec des commandes cmd comme:
C:\OSGeo4W64\bin\ogr2ogr.exe -f "ESRI Shapefile" C:\path\output.shp -tps --optfile C:\path\gcp.txt C:\path\input.shp
J'ai plus de 1000 points de contrôle (ils sont donc dans un fichier séparé ). Et j'ai des problèmes étranges avec la précision de cette méthode. J'ai déjà vu dans cette question que la méthode spline ogr2org n'est pas vraiment exacte. Mais avec mon nombre de GCP et l'étendue de mon ensemble de données, je vois que la précision diminue considérablement du nord au sud. Comme ça:
Au nord, la méthode est presque exacte (erreur de 0,001 m), puis elle perd en douceur la précision et au sud, elle crée une erreur d'environ 60 m.
J'ai calculé RMSE pour chaque GCP et je l'ai tracé en fonction des coordonnées et du numéro d'identification du point de contrôle (je créais le GCP en commençant principalement par le nord). Et j'ai:
J'ai essayé de trouver et de lire le code source de gdal (j'ai trouvé les modules gdal_tps , thinplatespline et ogr2ogr_lib ) mais je ne connais pas ce langage (C ++?) Et je ne comprends pas comment fonctionne la méthode. Les polynômes d'ordre 1, 2 et 3 d'ogr2ogr fonctionnent bien (ce ne sont pas des méthodes exactes mais l'erreur ne progresse pas).
Alors, pourquoi la précision des splines diminue logarithmiquement en fonction de la coordonnée Y? (Pour la coordonnée X, je vois des sauts avec précision tous les 16000 m). Comment est-ce possible? Comment fonctionne cette méthode d'ajustement? Comment puis-je résoudre ce problème? (J'ai Windows 7, 64 bits)
Réponses:
La réponse du développeur GDAL Even Rouault m'a vraiment aidé à donner la bonne direction.
Sachant qu'il s'agit d'un cas d'instabilité numérique, et sachant (d'après mon expérience CFD) que l'instabilité peut être causée par de très petites valeurs dans les données, j'ai analysé mes points de contrôle. J'ai construit le TIN, calculé les distances entre GCP et constaté que 2 points par erreur étaient placés extrêmement près l'un de l'autre (presque coïncidant, 3 m de distance entre eux). Lorsque j'ai retiré l'un d'eux, la spline a parfaitement fonctionné.
Cette paire de points était située au nord, l'instabilité a donc commencé du nord au sud.
la source