import numpy as np
# 根据经纬度和地理信息返回行列号
def lon_lat_to_row_col(lon, lat, geo_information):
a = np.array([[geo_information[1], geo_information[2]], [geo_information[4], geo_information[5]]])
b = np.array([lon - geo_information[0], lat - geo_information[3]])
r = np.linalg.solve(a, b) # 使用numpy的linalg.solve进行二元一次方程的求解
# col = r[0]
# row = r[1]
# 上面注释掉的col和row是有小数点的,需要用整数,所以用int()向下取整。
col = int(r[0])
row = int(r[1])
return col, row
已知某个基础图像和一个点的经纬度,确定该点在基础图像上的像元位置(行列号)。
读取基础图像的地理信息geo_information的方法,可见python:返回图像的经纬度范围,行列数和地理信息第6、7行,或如下图。
from osgeo import gdal
file = '' # 这里设定文件的路径+文件名
dataset = gdal.Open(file)
geo_information = dataset.GetGeoTransform()