欢迎访问宙启技术站
智能推送

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模块,我们可以通过定义源坐标系和目标坐标系对象,并使用坐标转换对象,来进行地理坐标系的转换和投影处理。