Verwenden Sie GDAL mit Python mit Docker

Überblick

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.

Voraussetzungen

Hier denken wir über Folgendes nach.

Konstruktion

/
|-/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

Prüfung

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

abschließend

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

Verwenden Sie GDAL mit Python mit Docker
Verwenden Sie Puphpeteer mit Docker
[Docker] Wird immer mit Docker + Rails verwendet
Verwenden von cuda11.0 mit pytorch mit Docker
Verwenden Sie Symbolic Link für den mehrstufigen Build von Docker
Verwenden Sie Amazon ECR Credential Helper mit Docker Desktop
Verwenden Sie ProGuard mit Gradle
Python-Memo auf Docker
Starten Sie MariaDB mit Docker
Explodiere Docker mit WSL2
Verwenden Sie XVim2 mit Xcode 12.0.1
Verwenden von CentOS mit LXD
Bedienen Sie Emby mit Docker
Führen Sie Payara mit Docker aus
Verwenden Sie Webmock mit Rspec
Verwenden Sie WebJars mit Gradle
Verwenden Sie jlink mit gradle
Einweg-PHP mit Docker
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Führen Sie regelmäßig Python Script mit Docker Compose + Daemon (cron) aus.
Verwenden Sie Lambda-Ebenen mit Java
Verwenden Sie Thymeleaf mit Azure-Funktionen
Bereitstellung mit EC2 / Docker / Laravel
Führen Sie TAO Core mit Docker aus
Docker-Management mit VS-Code
[PHP8] Installieren und verwenden Sie die YAML-Funktion (YAML-Parser) von PECL mit Docker
Verwenden Sie die In-Container-Shell des Dockers mit cygwin [docker exec -it bash]
Verwenden Sie das pfx-Zertifikat mit Okhttp3
Richten Sie GitLab mit Docker ein
Verwenden Sie die Bulk-API mit RestHighLevelClient
Verwenden Sie SDKMAN! Mit Git Bash
Bereiten Sie die Python3-Umgebung mit CentOS7 vor
Führen Sie Rails immer im Docker aus
Docker Autostart-Einstellung mit wsl2
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Verwenden Sie mit Rails 6.0 mehrere Datenbanken
Spring Boot beginnend mit Docker
Erstellen einer Docker-Umgebung mit WSL
Verwalten Sie die CocoaPods-Version mit Docker
Verwenden Sie Spring JDBC mit Spring Boot
Mit Docker erstellte Webanwendung (1)
Ich habe BIND mit Docker ausprobiert
Verwenden Sie Ruby mit Google Colab
Verwenden Sie SpatiaLite mit Java / JDBC