La méthode spline ogr2ogr TPS crée une erreur progressive


8

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: erreur de spline

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:

erreur y erreur x erreur d'identification

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)


2
Le développeur de GDAL a effectué une analyse préliminaire dans lists.osgeo.org/pipermail/gdal-dev/2017-June/046816.html . Vous devriez peut-être vous joindre à cette discussion.
user30184

Pouvez-vous partager les GCP? Examinera les résultats, vérifiera les coefficients, etc. En pensant que cela peut être expliqué et l'instabilité minimisée. Merci!
david

Réponses:


4

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.