Maison  >  Article  >  développement back-end  >  Python implémente la lecture des informations d'altitude dans DEM en utilisant les coordonnées des points de latitude et de longitude (exemple détaillé)

Python implémente la lecture des informations d'altitude dans DEM en utilisant les coordonnées des points de latitude et de longitude (exemple détaillé)

WBOY
WBOYavant
2022-02-24 17:35:055136parcourir

Cet article vous présente des problèmes connexes sur la façon d'utiliser 10 lignes de code pour lire les informations d'altitude dans DEM en utilisant les coordonnées des points de latitude et de longitude. L'idée principale est d'utiliser GDAL pour lire les données DEM, obtenir la première bande et la lire comme. tableau, puis calculez les numéros de ligne et de colonne en utilisant la longitude et la latitude, et utilisez les numéros de ligne et de colonne pour lire les informations d'altitude. J'espère que cela sera utile à tout le monde.

Python implémente la lecture des informations d'altitude dans DEM en utilisant les coordonnées des points de latitude et de longitude (exemple détaillé)

Apprentissage recommandé : Tutoriel vidéo mysql

Conditions d'implémentation : 1. La bibliothèque nécessaire est GDAL 2. DEMdonnées

1. À récupérez les données DEM, obtenez d'abord la première bande et lisez-la sous forme de tableau. La fonction utilisée est :

ds.GetRasterBand(1)和band.ReadAsArray();

(2) Calculez le numéro de ligne et de colonne en fonction de la longitude et de la latitude

(3) Vous pouvez lire directement ; les informations d'élévation en fonction du numéro de ligne et de colonne.

2. Code

Le code et les commentaires sont les suivants :

from osgeo import gdal

gdal.UseExceptions()
#以湖北DEM数据为例
ds = gdal.Open('./data/hubei_wgs84.tif')

band = ds.GetRasterBand(1)
elevation = band.ReadAsArray()
nrows, ncols = elevation.shape

x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()
#指定经纬度点坐标
latitude,longitude=31.15,111.24
#根据经纬度计算行列号,dx=dy为分辨率,不相等的时候(y0-latitude)/dx改为(y0-latitude)/-dy
new_ncols,new_nrows=int((y0-latitude)/dx),int((longitude-x0)/dx)

#根据行列号读取并打印输出指定坐标点高程
print(elevation[new_ncols][new_nrows])

3. Résultat

932, c'est-à-dire que l'élévation est de 932m

4.Vérification Arcgis

Utilisez l'outil Go To XY, l'outil sur à l'extrême droite de la barre d'outils

Entrez les coordonnées de latitude et de longitude pour localiser le point :

Ajoutez le point à la carte

Utilisez Identité pour afficher les attributs du point :

Les résultats sont cohérents.

Apprentissage recommandé :

Tutoriel vidéo mysql

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer