Qgis加载矢量、栅格图层

Qgis加载矢量、栅格图层


发布日期: 2015-07-20 更新日期: 2015-07-20 编辑:bukun 浏览次数: 6636

标签:

摘要: 1.原理 加载矢量数据,首先要指明此数据的类型及其驱动程序。 加载相关数据。 在主窗口中进行显示。 2.QGIS图层数据管理方式 (1)驱动 QGIS中,所有驱动由QgsProviderRegistry类统一管理(单例)。提供对当前工程中驱动的管理。 (2)数...

1.原理

加载矢量数据,首先要指明此数据的类型及其驱动程序。

加载相关数据。

在主窗口中进行显示。

2.QGIS图层数据管理方式

(1)驱动

QGIS中,所有驱动由QgsProviderRegistry类统一管理(单例)。提供对当前工程中驱动的管理。

(2)数据管理

QGIS中,所有图层数据由QgsMapLayerRgistry类统一管理(单例)。监测图层的加载、删除,维护所有图层的内存指针列表。

(3)状态管理

QGIS中,所有图层的状态,由QgsLayerTreeGroup(QgsLayerTreeNode的容器)进行管理。

(4)连接显示

所有显示都在主窗口QgsMapCanvas中进行。QgsMapCanvas通过QgsLayerTreeMapCanvas进行连接显示。

3.加载矢量地图

添加矢量图层前需要将QgsMapCanvas 先冻结,加载完成后再解冻,refresh()就可以显示了。注意,要zoomToFullExtent()才能显示全图。

注:由于vs2008的智能提示实在是不够完善,以后将改为vs2010(vs2012的相关qt-addin-1.2只支持qt5,所以用的1.1,最高支持2010)。使用方法与vs2008相同,只需在工程属性的平台工具集中选择vc9就可以使用vc2008编译了。还有Qt的引用目录有变化,要添加C:/osgeo4w/include/qt4。

在vs/qt中,在blankpro工程中加入以下代码

//loadlayer

pMapCanvas->freeze(true);

QgsVectorLayer*pVectorLayer=newQgsVectorLayer("D:/test/shapefiles/states.shp","states","ogr",true);

//managelayer

QgsMapLayerRegistry::instance()->addMapLayer(pVectorLayer);

QgsLayerTreeGroup*pGroup=newQgsLayerTreeGroup("myLayerTreeGroup",Qt::Checked);

pGroup->addLayer(pVectorLayer);

//connectanddisplay

QgsLayerTreeMapCanvasBridge*pBridge=newQgsLayerTreeMapCanvasBridge(pGroup,pMapCanvas,this);

pMapCanvas->zoomToFullExtent();

pMapCanvas->setDestinationCrs(pVectorLayer->crs());

pMapCanvas->freeze(false);

pMapCanvas->refresh();

4.加载栅格地图

栅格地图和矢量地图在Qgis中以相同的方式管理。只要将矢量中的QgsVectorLayer对象更换为QgsRasterLayer来加载栅格图像,就可以了。

在vs/qt中,在blankpro工程中加入以下代码

    //loadraster

    pMapCanvas->freeze(true);

    QgsRasterLayer*pRasterLayer=newQgsRasterLayer("D:/output/raster.tif","raster",true);

    //managerlayer

    QgsMapLayerRegistry::instance()->addMapLayer(pRasterLayer);

    QgsLayerTreeGroup*pGroup=newQgsLayerTreeGroup("myLayerTreeeGroup",Qt::Checked);

    pGroup->addLayer(pRasterLayer);

    //connectanddisplay

    QgsLayerTreeMapCanvasBridge*pBridge=newQgsLayerTreeMapCanvasBridge(pGroup,pMapCanvas,this);

    pMapCanvas->zoomToFullExtent();

    pMapCanvas->setDestinationCrs(pRasterLayer->crs());

    pMapCanvas->freeze(false);

pMapCanvas->refresh();

关注公众号
获取免费资源

随机推荐


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

Powered by TorCMS

OSGeo 中国中心 邮件列表

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

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