Skip to content

Error (on Windows) when moving rasters in certain projections #7

@gioman

Description

@gioman

Con questa modifca

https://github.com/geodrinx/rasmover/pull/5/files#diff-7e06dfda38ebac72bfc7a550603b78a7R228

(nella PR che ho chiuso) avevo "risolto" il problema del file "moved.vrt" che non viene correttamente creato sotto Linux. In un secondo momento poi mi sono accorto, sotto Windows, che uno stesso raster in un certo sistema di coordinate viene spostato correttamente, mentre in un altro avviene un errore python. La cosa strana é che sotto Linux, con lo stesso raster non ci sono problemi in nessun sistema di coordinate. L'errore su Windows é del tipo

Traceback (most recent call last):
File "C:/Users/giovanni/.qgis2/python/plugins\rasmover\rasmover.py", line 218, in canvasReleaseEvent
Y = float( coordY ) + dy
ValueError: invalid literal for float(): 0.0000000000000000e+000-2.0347502734837728e+000

Ho quindi capito da cosa é dovuto.

Quando il raster ha certi sistemi di coordinate, il primo valore nel tag

< GeoTransform >

puó essere negativo, per esempio:

< GeoTransform > -9.0608624274958577e+05...

il problema é che sotto Windows il comando gdalbuildvrt non mette lo spazio prima del "-", e il tag diventa

< GeoTransform >-9.0608624274958577e+05...

e questo fa in modo che poi

words = stringa.split();

non funzioni correttamente, perché per fare lo split di default é usato lo spazio.

Questo problema di mancanza di spazio avviene (su Windows) anche tra il penultimo e ultimo valore del tag < GeoTransform >, esempio

Linux:
... 0.0000000000000000e+00, -2.0347502734837728e+00</ GeoTransform>

Windows:
...0.0000000000000000e+00,-2.0347502734837728e+00</ GeoTransform>

e questo fa in modo (di nuovo) che lo split della stringa non funzioni allo stesso modo nei due sistemi operativi.

Questo secondo problema di mancanza di spazio (che crea il problema della creazione di moved.vrt non corretto su Linux) si puó risolvere aggiungendo

              if _platform != "win32":
                 stringazza = ("%s %s ") %( stringazza, words[6] )

mas ovviamente risolvendo alla radice il problema dello split della stringa risolverebbe tutto in un colpo solo.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions