o método spline ogr2ogr TPS cria erro progressivo

8

Estou tentando ajustar um shapefile usando a transformação de spline ogr2ogr com 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

Eu tenho mais de 1000 pontos de controle (então eles estão em um arquivo separado ). E eu tenho problemas estranhos com a precisão desse método. Eu já vi nessa pergunta que o método spline ogr2org não é realmente exato. Mas com o meu número de GCP e a extensão do meu conjunto de dados, vejo que a precisão diminui drasticamente de norte a sul. Como isso: erro de spline

No norte, o método é quase exato (erro de 0,001 m), depois perde suavemente a precisão e no sul cria um erro de cerca de 60 m.

Calculei o RMSE para cada GCP e o plotei em relação às coordenadas e ao número de identificação do ponto de controle (eu estava criando o GCP começando principalmente do norte). E eu tenho:

erro y x erro erro de identificação

Tentei encontrar e ler o código fonte do gdal (encontrei os módulos gdal_tps , thinplatespline e ogr2ogr_lib ), mas não conheço essa linguagem (C ++?) E não entendo como o método funciona. A ordem dos polinômios 1, 2 e 3 de ogr2ogr está funcionando bem (eles não são métodos exatos, mas o erro não está progredindo).

Então, por que a precisão da spline diminui logaritmicamente, dependendo da coordenada Y? (Para a coordenada X, vejo saltos com precisão a cada 16000 m). Como isso é possível? Como esse método de ajuste funciona? Como posso resolver este problema? (Eu tenho o Windows 7, 64 bits)

nadya
fonte
2
O desenvolvedor do GDAL fez uma análise preliminar em lists.osgeo.org/pipermail/gdal-dev/2017-June/046816.html . Talvez você deva participar dessa discussão.
user30184
Você é capaz de compartilhar os GCPs? Revisará os resultados, verificará os coeficientes, etc. Pensando que isso pode ser explicado e a instabilidade minimizada. Obrigado!
david

Respostas:

4

A resposta do desenvolvedor da GDAL Even Rouault realmente me ajudou a dar a direção correta.

Sabendo que esse é um caso de instabilidade numérica e sabendo (pela minha experiência em CFD) que a instabilidade pode ser causada por valores muito pequenos nos dados, analisei meus pontos de controle. Construí TIN, calculei as distâncias entre o GCP e constatei que 2 pontos por engano foram colocados extremamente próximos um do outro (quase coincidente, a 3 m de distância entre eles). Quando removi um deles, o spline funcionou perfeitamente.

Esse par de pontos ficava no norte, então a instabilidade começou de norte a sul.

nadya
fonte