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

使用osgeo.osrCoordinateTransformation()在Python中进行地理空间数据转换的步骤

发布时间:2023-12-23 08:21:16

在Python中使用osgeo.osrCoordinateTransformation()进行地理空间数据转换的步骤如下:

1. 导入需要的库和模块:

from osgeo import gdal, ogr, osr

2. 定义源空间参考系统(Source Spatial Reference System,SRS)和目标SRS:

source_srs = osr.SpatialReference()  # 创建源SRS对象
source_srs.ImportFromEPSG(4326)  # 根据EPSG代码导入源SRS

target_srs = osr.SpatialReference()  # 创建目标SRS对象
target_srs.ImportFromEPSG(3857)  # 根据EPSG代码导入目标SRS

3. 创建CoordinateTransformation对象:

transform = osr.CoordinateTransformation(source_srs, target_srs)

4. 定义需要转换的坐标:

lon = 21.567  # 经度
lat = 45.321  # 纬度

# 创建坐标点
point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(lon, lat)

5. 进行坐标转换:

point.Transform(transform)  # 对点进行坐标转换

6. 获取转换后的坐标:

transformed_lon = point.GetX()  # 获取转换后的经度
transformed_lat = point.GetY()  # 获取转换后的纬度

print("转换前的坐标:", lon, lat)
print("转换后的坐标:", transformed_lon, transformed_lat)

完整的例子如下:

from osgeo import gdal, ogr, osr

source_srs = osr.SpatialReference()
source_srs.ImportFromEPSG(4326)

target_srs = osr.SpatialReference()
target_srs.ImportFromEPSG(3857)

transform = osr.CoordinateTransformation(source_srs, target_srs)

lon = 21.567
lat = 45.321

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(lon, lat)

point.Transform(transform)

transformed_lon = point.GetX()
transformed_lat = point.GetY()

print("转换前的坐标:", lon, lat)
print("转换后的坐标:", transformed_lon, transformed_lat)

这个例子中将源SRS定义为WGS84(EPSG代码:4326),目标SRS定义为Web Mercator(EPSG代码:3857)。然后,将给定的经纬度坐标转换为Web Mercator坐标,并输出转换后的坐标。