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:
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:
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)
fonte
Respostas:
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.
fonte