J'étais un peu accro à l'utilisation de geotiff, donc un mémorandum.
En conclusion, cela était dû à une mauvaise correspondance de version entre la bibliothèque "GDAL" et "libgdal-dev" dans Pyhon. ** La version stable "libgdal-dev" gérée dans le référentiel standard d'apt est v2.4.0 (au 19 novembre 2020). En conséquence, la v3.2.0 sera téléchargée si vous faites simplement "pip install GDAL" avec pip, mais "libgdal-dev" correspondant à la v3.2.0 nécessite la version 3.2.0 ou supérieure . Par conséquent, lors de l'installation, il est nécessaire de spécifier la version en définissant " pip install GDAL == 2.4.4 **". Le fichier docker, etc. basé sur cette zone est décrit ci-dessous.
Ici, nous réfléchissons à ce qui suit.
--Utilisez docker pour utiliser l'environnement. ――Je n'aime pas beaucoup l'anaconda --Parce que le coût d'apprentissage est faible, Python est utilisé. --docker-compose n'est décrit que pour le test de fonctionnement --Réglez le volume pour pouvoir changer le code
/
|-/app
| |-/image #Insérez le fichier tif
| |-test.py #Code de test
| '-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
Le code de test est le suivant.
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) #Lire tif(read only)
print(type(src)) # "osgeo.gdal.Dataset"
L'exécution utilise docker-compose, c'est donc comme suit.
docker-compose up
C'est assez courant. Si vous souhaitez utiliser la dernière version de la bibliothèque, vous devrez peut-être créer un environnement avec ubuntu car il n'y a pas de paquet dans debian (dans ubuntu, vous pouvez souvent utiliser la version de test en vous inscrivant dans le référentiel). En gros, tant que vous pouvez lire les données dans une certaine mesure, il est plus rapide de traiter vous-même les valeurs numériques, donc je pense que la version stable est suffisante.
Recommended Posts