Ich war ein bisschen süchtig nach Geotiff, also ein Memorandum.
Zusammenfassend war es auf die falsche Versionskorrespondenz zwischen der "GDAL" -Bibliothek und "libgdal-dev" in Pyhon zurückzuführen. ** Die stabile Version "libgdal-dev", die im apt-Standard-Repository verwaltet wird, ist v2.4.0 (Stand: 19. November 2020). Infolgedessen wird v3.2.0 heruntergeladen, wenn Sie einfach "pip install GDAL" mit pip ausführen, "libgdal-dev" für v3.2.0 jedoch v3.2.0 oder höher erfordert . Daher muss bei der Installation die Version angegeben werden, indem " pip install GDAL == 2.4.4 **" eingestellt wird. Die Docker-Datei usw., die auf diesem Bereich basiert, wird unten beschrieben.
Hier denken wir über Folgendes nach.
/
|-/app
| |-/image #Fügen Sie die TIF-Datei ein
| |-test.py #Testcode
| '-Dockerfile
'-docker-compose.yaml
Dockerfile/docker-compose.yaml
Dockerfile
FROM python:3.8
ENV APP_HOME /app
WORKDIR $APP_HOME
RUN apt-get update && apt-get install -y tzdata \
libgdal-dev
RUN pip install --upgrade pip
RUN pip install gdal==2.4.4
CMD ["python", "/app/test.py"]
docker-compose.yaml
version: "2"
services:
test:
container_name: "test"
build:
context: ./app
volumes:
- ./app:/app
Der Testcode lautet wie folgt.
test.py
from osgeo import gdal, gdalconst
if __name__ == "__main__":
print("gdal version", gdal.VersionInfo())
file_name = '/app/image/1_index_ndvi.tif'
src = gdal.Open(file_name,
gdalconst.GA_ReadOnly) #Lesen Sie tif(read only)
print(type(src)) # "osgeo.gdal.Dataset"
Die Ausführung verwendet Docker-Compose, also wie folgt.
docker-compose up
Das ist ziemlich häufig. Wenn Sie die neueste Version der Bibliothek verwenden möchten, müssen Sie möglicherweise eine Umgebung mit Ubuntu erstellen, da Debian kein Paket enthält (in Ubuntu können Sie die Testversion häufig verwenden, indem Sie sich im Repository registrieren). Grundsätzlich ist es schneller, die numerischen Werte selbst zu verarbeiten, solange Sie die Daten bis zu einem gewissen Grad lesen können. Daher halte ich die stabile Version für ausreichend.
Recommended Posts