-
Notifications
You must be signed in to change notification settings - Fork 3
Description
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.