QGis软件 —— 4、QGis经纬度拾取、定位等

20 篇文章 ¥15.90 ¥99.00
本文指导如何在QGIS软件中搜索并安装latlontools插件,以便于实现经纬度拾取和定位功能,同时展示了插件工具箱的位置。
QGIS 中,可以通过编程方式将经纬度坐标转换为地图上的点位置,并实现定位功能。QGIS 使用 `QgsPointXY` 类来表示二维点坐标,而经纬度通常属于 WGS84 坐标系(EPSG:4326)。如果当前地图画布使用的是其他投影(如 Web 墨卡托 EPSG:3857),则需要进行坐标转换。 以下是一个基本流程和示例代码片段: ### 1. 定义坐标转换函数 首先,确保可以将 WGS84 经纬度坐标转换为当前地图画布使用的坐标系: ```cpp #include <qgsc CoordinateTransform.h> #include <qgsproject.h> void convertWGS84ToMapCRS(const QgsPointXY& wgs84Point, QgsPointXY& mapPoint) { QgsCoordinateTransform transform( QgsCoordinateReferenceSystem("EPSG:4326"), m_pMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() ); try { mapPoint = transform.transform(wgs84Point); } catch (const QgsCsException &e) { // 处理转换异常 } } ``` ### 2. 实现定位到指定经纬度点的功能 通过给定的经纬度(例如:经度 116.4,纬度 39.9),将其转换为当前地图 CRS 下的坐标,并设置地图中心为此点: ```cpp void CMyGIS::locateToWGS84Coordinate(double lon, double lat) { QgsPointXY wgs84Point(lon, lat); QgsPointXY mapPoint; convertWGS84ToMapCRS(wgs84Point, mapPoint); if (!mapPoint.isEmpty()) { QgsRectangle extent = m_pMapCanvas->extent(); double scale = extent.width() / 1000.0; // 调整缩放级别 extent.setCenter(mapPoint); extent.scale(scale); m_pMapCanvas->setExtent(extent); m_pMapCanvas->refresh(); } } ``` ### 3. 使用场景示例 当用户输入经纬度后,调用上述方法即可定位到对应位置。例如,在按钮点击事件中调用: ```cpp void CMyGIS::on_locateButton_clicked() { double lon = 116.4; // 示例经度 double lat = 39.9; // 示例纬度 locateToWGS84Coordinate(lon, lat); } ``` 该方法适用于大多数基于 QGIS 的二次开发项目,能够有效实现基于经纬度定位功能[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值