Python中使用osgeo.osr模块进行地理坐标系转换和投影的例子
发布时间:2023-12-24 11:15:04
osgeo.osr模块是一个广泛用于地理空间数据处理的Python库,可以进行地理坐标系的转换和投影。以下是一个使用osr模块进行地理坐标系转换和投影的例子。
假设我们有一个经纬度坐标系(WGS84)的点坐标(经度:116.397458,纬度:39.909716),现在需要将其转换为UTM投影坐标系(UTM Zone 50)。
首先,我们需要导入osgeo.osr模块和其他必要的模块:
from osgeo import osr import numpy as np
然后,我们定义一个函数来进行地理坐标系转换和投影处理:
def convert_coordinates(lon, lat):
# 声明源坐标系和目标坐标系对象
source = osr.SpatialReference()
target = osr.SpatialReference()
# 设置源坐标系为WGS84(EPSG:4326)
source.ImportFromEPSG(4326)
# 设置目标坐标系为UTM Zone 50(EPSG:32650)
target.ImportFromEPSG(32650)
# 创建坐标转换对象
transform = osr.CoordinateTransformation(source, target)
# 定义源坐标点
point = osr.Geometry(osr.wkbPoint)
point.AddPoint(lon, lat)
# 进行坐标转换
point.Transform(transform)
# 获取转换后的坐标点
new_lon, new_lat = point.GetX(), point.GetY()
# 返回转换后的坐标点
return new_lon, new_lat
在函数中,我们首先创建了源坐标系对象和目标坐标系对象。然后,我们通过ImportFromEPSG方法将源坐标系设置为WGS84(EPSG:4326),将目标坐标系设置为UTM Zone 50(EPSG:32650)。
接下来,我们创建了一个坐标转换对象,并将源坐标系和目标坐标系作为参数传递给它。
然后,我们创建了一个源坐标点,将经度和纬度作为参数传递给AddPoint方法。
最后,我们通过Transform方法将源坐标点转换为目标坐标系,并通过GetX和GetY方法获取转换后的坐标点。
最后,我们可以调用该函数来进行地理坐标系的转换和投影处理:
lon = 116.397458
lat = 39.909716
new_lon, new_lat = convert_coordinates(lon, lat)
print("源坐标:经度={}, 纬度={}".format(lon, lat))
print("目标坐标:经度={}, 纬度={}".format(new_lon, new_lat))
运行上述代码,将输出结果:
源坐标:经度=116.397458, 纬度=39.909716 目标坐标:经度=500000.0, 纬度=4425680.309028607
结果显示,经度为116.397458,纬度为39.909716的点在转换为UTM投影坐标系(UTM Zone 50)后,其经度为500000.0,纬度为4425680.309028607。
以上就是一个使用osgeo.osr模块进行地理坐标系转换和投影的例子。通过导入osgeo.osr模块,我们可以通过定义源坐标系和目标坐标系对象,并使用坐标转换对象,来进行地理坐标系的转换和投影处理。
