Qgisは4-地図インタラクティブツールを開発


Qgisは4-地図インタラクティブツールを開発
[email protected]
2014年8月13日
 
1 概要
地図インタラクションツールはGUIインタラクションの主な手段としてGISで重要な地位を占めている.
GISインタラクティブツールは主にマウスを使って地図操作を行い、異なるマウスの状態を維持します.
主な地図作業はpan,zoomIn/zoomOut,identifyなどである.
2 げんり
インタラクティブツールには、明確な役割オブジェクト(メインウィンドウ)が必要であり、ステータスを切り替えるためのactionが対応しています.
メインウィンドウで現在のツールを設定すると、現在のツールをアクティブにして操作できます.
3 使用方法
Qgsの主な開発ライブラリにはpan,zoom,identifyの3つの基本ツールしか含まれていません.他のツールはappライブラリにあります.
PanとZoomツールの使用については、canvasを直接使用してオブジェクトを生成し、現在のツールに設定すれば使用できます.
Identifyなど比較的複雑なツールにはカスタマイズ開発が必要です.Arcgisに比べて開発量は少し大きいが、QgisAppには完全なソースコードがあり、その動作原理をよりよく理解でき、QgisAppではデバッグでき、Arcgisよりも難易度が高いはずだ.
3.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);
}
 
 
3.2 Select
 
3.3 Identify