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;
3.2 Select
3.3 Identify
[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