使用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坐标,并输出转换后的坐标。
