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

Python中使用osgeo.osr模块进行地理坐标系统转换和重投影的例子

发布时间:2023-12-24 11:16:05

osgeo.osr是Python中的一个模块,用于地理坐标系统的转换和重投影。下面是一个简单的例子,展示了如何使用osgeo.osr进行地理坐标系统转换。

例子:

假设我们有一个经纬度坐标点,想要将其转换为投影坐标系下的坐标点。

首先,我们需要导入osgeo.osr模块,并创建一个SpatialReference对象表示我们要转换的坐标系。我们可以使用EPSG代码或proj4字符串来定义坐标系。

from osgeo import osr

# 定义原始坐标系:经纬度坐标系(WGS84)
wgs84 = osr.SpatialReference()
wgs84.ImportFromEPSG(4326)

# 定义目标坐标系:投影坐标系(Mercator)
mercator = osr.SpatialReference()
mercator.ImportFromEPSG(3857)

接下来,我们需要创建一个坐标转换器,用于在两个坐标系之间进行转换。我们可以使用CreateCoordinateTransformation方法创建一个转换器。

transformer = osr.CoordinateTransformation(wgs84, mercator)

然后,我们可以定义输入坐标点(经纬度),并使用坐标转换器将其转换为目标坐标系下的点。

# 定义输入坐标点
lon = 121.5
lat = 31.2

# 创建几何点
point = osr.Geometry(osr.wkbPoint)
point.AddPoint(lon, lat)

# 进行坐标转换
transformed_point = point.Transform(transformer)

现在,我们可以打印转换后的坐标点,并查看其是否在目标坐标系的范围内。

print(transformed_point.GetX(), transformed_point.GetY())

完整的代码如下所示:

from osgeo import osr

# 定义原始坐标系:经纬度坐标系(WGS84)
wgs84 = osr.SpatialReference()
wgs84.ImportFromEPSG(4326)

# 定义目标坐标系:投影坐标系(Mercator)
mercator = osr.SpatialReference()
mercator.ImportFromEPSG(3857)

# 创建坐标转换器
transformer = osr.CoordinateTransformation(wgs84, mercator)

# 定义输入坐标点
lon = 121.5
lat = 31.2

# 创建几何点
point = osr.Geometry(osr.wkbPoint)
point.AddPoint(lon, lat)

# 进行坐标转换
transformed_point = point.Transform(transformer)

# 打印转换后的坐标点
print(transformed_point.GetX(), transformed_point.GetY())

这个例子展示了如何使用osgeo.osr模块进行地理坐标系统转换和重投影。我们首先定义了原始坐标系和目标坐标系,然后创建了一个坐标转换器,并使用它将一个经纬度坐标点转换为投影坐标系下的坐标点。最后,我们打印出转换后的坐标点。