Also, ich entwickle eine Flask-Anwendung, die die GDAL-Bibliothek verwendet, wo ich eine .tif-Datei durch eine URL streamen möchte.Wie öffne ich eine Remote-Datei mit GDAL in Python durch eine Flask-Anwendung
Im Moment habe ich eine Methode, die eine .tif-Datei mit gdal.Open (Dateipfad) liest. Wenn es außerhalb der Flask-Umgebung (wie in einer Python-Konsole) ausgeführt wird, funktioniert es sowohl durch Angabe des Dateipfads zu einer lokalen Datei als auch durch eine URL.
from gdalconst import GA_ReadOnly
import gdal
filename = 'http://xxxxxxx.blob.core.windows.net/dsm/DSM_1km_6349_614.tif'
dataset = gdal.Open(filename, GA_ReadOnly)
if dataset is not None:
print 'Driver: ', dataset.GetDriver().ShortName,'/', \
dataset.GetDriver().LongName
Wenn jedoch der folgende Code im Inneren des Kolbens environement ausgeführt wird, erhalte ich die folgende Meldung: ERROR 4: `http://xxxxxxx.blob.core.windows.net/dsm/DSM_1km_6349_614.tif 'ist nicht im Dateisystem vorhanden ist, und nicht als unterstützt anerkannt Dateiname.
Wenn ich stattdessen die Datei auf das lokale Dateisystem des App Flask herunterladen und den Pfad die Datei einfügen, wie folgt aus:
block_blob_service = get_blobservice() #Initialize block service
block_blob_service.get_blob_to_path('dsm', blobname, filename) # Get blob to local filesystem, path to file saved in filename
dataset = gdal.Open(filename, GA_ReadOnly)
Das funktioniert gut ... Die Sache ist, da Ich fordere einige große Dateien (200 MB), ich möchte die Dateien mit der URL statt der lokalen Dateiverweis streamen.
Hat jemand eine Idee von was könnte dies verursachen? Ich habe auch versucht, "/ vsicurl_streaming /" vor die URL zu setzen, wie an anderer Stelle vorgeschlagen.
Ich verwende Python 2.7, 32-Bit mit GDAL 2.0.2
Dank Gary, das funktioniert wie ein Charme! – thallium
Für zukünftige Besucher: Ich sollte beachten, dass dieses Update scheint nicht mit Dateien der Erweiterung .ECW zu arbeiten. – thallium