Qgis解读__ 下载本文

内容发布更新时间 : 2024/12/26 19:23:53星期一 下面是文章的全部内容请认真阅读。

QGis读解。。。

1.Qgsrenderer 图层绘制器抽象基类

每个renderer只能绘制某一种适量图形对象, Qgsrenderer ::mVectorType 定义了适量图层类型(QGis::VectorType) ,Qgsrenderer定义了作为一个绘图器的基本功能接口

QgsRasterLayer 通过QgsSingleSymbolRenderer实现矢量对象的绘制 2. QgsMapLayer 地图图层 图层类型: VECTOR,RASTER 2.1 QgsVectorLayer矢量图层

与QgsVectorLayer对应的就是QgsRasterLayer , QgsMapLayer的子类图层对象仅仅这两种。

2.2 QgsMapCanvasLayer 画板图层 2.3 QgsMapLayerRegistry

存储当前所有地图层对象,提供Layer id查询MapLayer对象的功能mapLayer(layid) 2.4 QgsMapCanvasLayer

QgsMapCanvasLayer是qgis应用层的图层对象,用于村促跟用户交互的信息,它并不是Map核心数据对象 3.QgsFeature

图层特征对象。QgsFeature包含若干Attribute,一个QgsGeometry对象 QgsLine

QgsLine由2个QgsPoint构成的线段 4. QgsMapRender

QgsMapCanvasMap利用此对象实现绘制,无子类实现。当canvas产生事件,诸如大小调整、移动、缩放等等请求时,QgsMapCanvas请求QgsMapCanvasMap进行刷新绘制,后者调用QgsMapRender::render()进行绘制图层。 Render(){

QgsMapRender内部保留图层名称数组,根据图层id到

QgsMapLayerRegistry中获取图层对象,绘制图层从最底部开始。 }

5.OgsMapCanvas图层绘制板

N个图层是绘制在QgsMapCanvasMap这个对象之上的,这个对象是Qt的绘制对象

QgsMapCanvasMap其实就是提供OgsMapRender的绘制缓冲,最终还是请求QgsMapRender进行图层绘制 6. QgsProviderRegistry

Qgis的数据源作为一个provider将被登记在QgsProviderRegistry对象中

创建一个新的矢量图层

QgsProviderRegistry中查找ogr的provider,创建一个ogr的矢量数据空间createEmptyDataSource

QgsOgrProvider作为QgsVectorDataProvider的子类,QgsVectorDataProvider作为接口被其他模块访问 new QgsVectorLayer(ogr){

new QgsSingleSymbolRenderer() }

QgsMapToPixel

地图单位到屏幕像素位置的转换,这个操作非常简单,根据设定的每像素地图大小单位来计算地图单位(world)到屏幕像素的转换,反之亦然 QgsProject 、QgsProjectFileTransform、Qgsversion

这些类用于qgis项目信息管理之用,项目文件类型名.qgs,格式是xml。QgsProjectFileTransform用于不同版本的qgis的功能文件的转换 QgsSymbol

这个类一方面是实现绘制图层类型的Icon,Qgis中如果创建新的line矢量层,则这个层的图标显示在层显示树的节点的Icon就是用QgsSymbol绘制产生

另一方面,在编辑矢量图层时,添加的线段都有两端的节点点,QgsSymbol就是绘制这个节点

矢量图层类型: Point, Line, Polygon, QgsMapTip

图层地标提示。当鼠标在MapCanvas上移动时,MapTip被一个定时器驱动,这时

MapTip将当前地图坐标作为中心点,围绕这个点产生一个选择区域( double searchRadius = mpMapCanvas->extent().width() * (QGis::DEFAULT_IDENTIFY_RADIUS / 100.0 );) 这个区域作为搜寻区域提交给ogr-provider查找地图的Feature对象 再找Featrue的可显示的字段,然后用QToolTip进行显示。 QToolTip最终是

要被替换掉的

QgsFieldMap

typedef QMap QgsFieldMap;

矢量图层的对象具有多个属性,可以在添加编辑对象时设置这些属性

attributeFields[CmtAttr] = QgsField(attr[CmtAttr], QVariant::String, \

以上代码就可以添加一种属性类型

地图距离单位:

METERS,