一个画布对象m_mpMapCanvas->setDestinationCrs(national2000Crs);,将其设为国家2000坐标系。现在,我继承QgsMapTool写了一个工具类,鼠标按下时候,传入的点坐标什么坐标? 然后我将点坐标做了如下处理 const QgsMapToPixel* pTransform = mcanvas->getCoordinateTransform(); QgsPointXY mPoint = pTransform->toMapCoordinates(pt.x(), pt.y()); 其中pt为鼠标传入的点坐标,我这样处理的将鼠标传入的点坐标处理为国家2000的坐标了么
时间: 2024-04-08 17:35:48 浏览: 22
根据您提供的代码片段,可以看出以下几点:
1. `m_mpMapCanvas->setDestinationCrs(national2000Crs)` 将地图画布的目标坐标系设置为国家2000坐标系。
2. 您继承了 `QgsMapTool` 并编写了一个工具类,当鼠标按下时会传入一个点坐标。
3. 通过 `mcanvas->getCoordinateTransform()` 获取到一个坐标转换对象,并使用该对象将鼠标传入的点坐标进行转换。
根据以上信息,您已经将鼠标传入的点坐标使用 `pTransform->toMapCoordinates(pt.x(), pt.y())` 进行了从屏幕像素坐标转换到地图坐标系(国家2000坐标系)的转换。
因此,您已经将鼠标传入的点坐标成功地处理为国家2000坐标系的坐标。请注意,这里的 `mPoint` 变量将包含转换后的国家2000坐标系下的点坐标。
相关问题
QGIS二次开发中如何设置画布坐标系为国家2000坐标系
在QGIS二次开发中,您可以使用以下代码将画布(MapCanvas)的坐标系设置为国家2000坐标系(EPSG:4547):
```cpp
#include <qgsproject.h>
#include <qgscoordinateutils.h>
// 设置画布坐标系为国家2000坐标系
void setCanvasCrsToNational2000()
{
QgsProject *project = QgsProject::instance();
// 获取国家2000坐标系(EPSG:4547)的坐标参考系统对象
QgsCoordinateReferenceSystem national2000Crs("EPSG:4547");
// 将国家2000坐标系设置为项目的默认坐标参考系统
project->setCrs(national2000Crs);
// 获取当前地图窗口的画布对象
QgsMapCanvas *canvas = project->mapCanvas();
// 设置画布的坐标参考系统为国家2000坐标系
canvas->setDestinationCrs(national2000Crs);
}
int main()
{
// 初始化QGIS项目
QgsApplication app(argc, argv);
QgsApplication::initQgis();
// 设置画布坐标系为国家2000坐标系
setCanvasCrsToNational2000();
// 执行其他的二次开发操作
// 释放QGIS资源
QgsApplication::exitQgis();
return 0;
}
```
上述示例代码中,首先通过`QgsProject::instance()`获取项目实例,并使用`setCrs()`方法将项目的默认坐标参考系统设置为国家2000坐标系。然后通过`QgsMapCanvas`获取画布对象,并使用`setDestinationCrs()`方法将画布的坐标参考系统设置为国家2000坐标系。
请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行适当的修改和扩展。另外,确保在使用QGIS API之前正确初始化和关闭QGIS应用程序(如示例代码中的`QgsApplication::initQgis()`和`QgsApplication::exitQgis()`)。
若我的一个图层已经设置好EPSG:900913坐标系坐标系了,现在要改为国家2000应当如何修改
如果您已经有一个图层,并且该图层已经设置为EPSG:900913坐标系,现在要将其更改为国家2000坐标系(EPSG:4547),您可以按照以下步骤进行修改:
1. 获取图层对象:
```cpp
QgsVectorLayer* layer = QgsProject::instance()->mapLayersByName("Your Layer Name").at(0);
```
2. 创建一个新的坐标参考系统对象,代表国家2000坐标系:
```cpp
QgsCoordinateReferenceSystem national2000Crs("EPSG:4547");
```
3. 将图层的坐标参考系统设置为国家2000坐标系:
```cpp
layer->setCrs(national2000Crs);
```
4. 更新图层的渲染和显示:
```cpp
layer->triggerRepaint();
```
请确保在执行上述代码之前,已经正确初始化了QGIS应用程序,并且图层名称正确地匹配您的图层名称。
通过执行上述步骤,您可以将图层的坐标参考系统从EPSG:900913更改为EPSG:4547,以适应国家2000坐标系的需求。请注意,这只是修改图层坐标参考系统的方法之一,具体的实施可能因您的需求和环境而异。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)