QGIS的地图交互工具

QGIS的地图交互工具

2019-08-09 作者: bukun 浏览: 5177 次

摘要: 1.概述 地图交互工具作为GUI交互的主要手段,在GIS占用重要地位。 GIS交互工具主要是使用鼠标进行地图操作,维护不同的鼠标状态。 主要的地图工作有pan,zoomIn/zoomOut,identify等。 2.原理 交互工具要有明确的作用对象(主窗口),...

1.概述

地图交互工具作为GUI交互的主要手段,在GIS占用重要地位。

GIS交互工具主要是使用鼠标进行地图操作,维护不同的鼠标状态。

主要的地图工作有pan,zoomIn/zoomOut,identify等。

2.原理

交互工具要有明确的作用对象(主窗口),并且有一个action与之对应,用于切换状态。

主窗口设置当前工具时,可以激活当前的工具,进行操作。

3.使用方法

Qgs主要开发库中只包含pan,zoom,identify三个基本工具。其它工具在app库中。

对于Pan和Zoom工具的使用,可以直接使用canvas生成对象,设定为当前工具就可以使用了。

对于Identify等相对来说比较复杂的工具就需要进行一些定制开发了。相对于Arcgis来说,开发量大了一点,但好处是QgisApp中具有完整的源码,可以更好的理解其工作原理,而且在QgisApp中可以调试,难度较Arcgis应该不能算高。

(1)Pan和Zoom

    //addmaptool

    QgsMapTool*pPanTool=newQgsMapToolPan(pMapCanvas);//setconnectcanvas

    pPanTool->setAction(ui->actionPan);//adddisplayaction

    QgsMapToolZoom*pZoomOutTool=newQgsMapToolZoom(pMapCanvas,true);//setconnectcanvas

    pPanTool->setAction(ui->actionZoomOut);//adddisplayaction

    QgsMapToolZoom*pZoomInTool=newQgsMapToolZoom(pMapCanvas,false);//setconnectcanvas

    pPanTool->setAction(ui->actionZoomIn);//adddisplayaction

    m_pPanTool  =pPanTool;

    m_pZoomOutTool=pZoomOutTool;

m_pZoomInTool=pZoomInTool;



    createActions();



    m_pMapCanvas->setMapTool(m_pPanTool);//initializemapcanvastool

voidMainWindow::createActions(void)

{

    connect(ui->actionPan,SIGNAL(triggered()),this,SLOT(pan()));

    connect(ui->actionZoomOut,SIGNAL(triggered()),this,SLOT(zoomOut()));

    connect(ui->actionZoomIn,SIGNAL(triggered()),this,SLOT(zoomIn()));

    connect(ui->actionSelect,SIGNAL(triggered()),this,SLOT(select()));



}



voidMainWindow::pan()

{

    m_pMapCanvas->setMapTool(m_pPanTool);

}



voidMainWindow::zoomOut()

{

    m_pMapCanvas->setMapTool(m_pZoomOutTool);

}



voidMainWindow::zoomIn()

{

    m_pMapCanvas->setMapTool(m_pZoomInTool);

}

(2)Select

(3)Identify

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © from 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org