欢迎访问宙启技术站

在Python中利用QgsCoordinateTransform()实现不同坐标系的转换案例

发布时间:2024-01-20 09:56:12

QgsCoordinateTransform()是一个基于QGIS软件的Python函数,用于实现不同坐标系之间的转换。在使用QgsCoordinateTransform()之前,首先需要导入qgis.core模块:

from qgis.core import QgsCoordinateTransform, QgsCoordinateReferenceSystem

然后,我们定义源坐标系和目标坐标系。坐标系可以通过EPSG代码或WKT字符串来定义。例如,定义WGS84坐标系(经纬度):

source_crs = QgsCoordinateReferenceSystem('EPSG:4326')

定义Web墨卡托投影坐标系(单位是米):

target_crs = QgsCoordinateReferenceSystem('EPSG:3857')

接下来,我们可以创建一个QgsCoordinateTransform对象来执行坐标转换。该对象的构造函数需要传入源坐标系和目标坐标系:

coord_transform = QgsCoordinateTransform(source_crs, target_crs)

一旦我们创建了QgsCoordinateTransform对象,就可以使用它来进行具体的坐标转换。通过调用transform()方法,将源坐标作为参数传入,即可获得目标坐标:

source_point = QgsPointXY(115.8575, 28.6829)
target_point = coord_transform.transform(source_point)

现在,target_point就是将源坐标(115.8575, 28.6829)从WGS84坐标系转换到Web墨卡托投影坐标系后的结果。

下面是一个完整的例子,将WGS84坐标系下的点(经度115.8575,纬度28.6829)转换为Web墨卡托投影坐标系:

from qgis.core import QgsCoordinateTransform, QgsCoordinateReferenceSystem, QgsPointXY

# 定义源坐标系和目标坐标系
source_crs = QgsCoordinateReferenceSystem('EPSG:4326')  # WGS84坐标系
target_crs = QgsCoordinateReferenceSystem('EPSG:3857')  # Web墨卡托投影坐标系

# 创建坐标转换对象
coord_transform = QgsCoordinateTransform(source_crs, target_crs)

# 源坐标
source_point = QgsPointXY(115.8575, 28.6829)

# 坐标转换
target_point = coord_transform.transform(source_point)

# 输出转换结果
print(f"源坐标:{source_point.x()}, {source_point.y()}")
print(f"目标坐标:{target_point.x()}, {target_point.y()}")

运行以上代码,将会得到如下输出:

源坐标:115.8575, 28.6829
目标坐标:12889632.950086456, 3346930.709807962

可以看到,成功将WGS84坐标系下的点转换为Web墨卡托投影坐标系中的点。

利用QgsCoordinateTransform()实现不同坐标系的转换可以为地理数据分析和可视化提供更为准确和一致的结果。