Qgis从数据库读数据到渲染当前视图

本文详细介绍了QGIS中如何从数据库读取数据并进行图层渲染。涉及的关键类包括QgsVectorLayerRenderer、QgsFeatureRendererV2及其子类,以及QgsVectorLayer、QgsVectorLayerFeatureIterator等。文章描述了从数据库获取要素、图层渲染过程,特别是如何依据视图窗口范围筛选要素,并将要素渲染到地图上。同时,还涉及到编辑要素的处理流程和数据库交互细节。
摘要由CSDN通过智能技术生成
一、有关渲染的类
QgsVectorLayerRenderer类:(渲染矢量图层要素)
      {
         drawRendererV2( QgsFeatureIterator& fit )   渲染要素遍历器中的单个要素
         setGeometryCachePointer( QgsGeometryCache* cache )   建立缓存,存储要渲染的几何对象
         render() 
         stopRendererV2( QgsSingleSymbolRendererV 2* selRenderer ) 结束渲染
        }
QgsFeatureRendererV2类:子类(QgsSingleSymbolRendererV 2、Qgs25DRenderer、QgsCategorizedSymbolRend ererV2、 QgsGraduatedSymbolRender erV2、QgsHeatmapRenderer、QgsInvertedPolygonRender er、 QgsNullSymbolRenderer、 QgsPointDisplacementRend erer )    
         QgsSingleSymbolRendererV 2类:
            {
               startRender( QgsRenderContext& context, const QgsFields& fields )
            }
QgsVectorLayer类:矢量图层类功能(图层数据调度、图层要素操作、选择要素操作、图层渲染操作、要素节点操作、添加要素操作、)

QgsVectorLayerFeatureIterator类:图层要素遍历操作()
         {
               fetchFeature( QgsFeature& f )//获取feature
               fetchNextChangedGeomFeat ure( QgsFeature& f ) //遍历编辑过的feature
               fetchNextChangedAttribut eFeature( QgsFeature& f )
               fetchNextAddedFeature( QgsFeature& f )
           }

QgsVectorLayerEditBuffer类:缓存矢量图层编辑(存储编辑的要素(要素操作、节点操作 ))
 
QgsSettingsTree类:        

QgsMapRendererSequentialJob类:画布操作(创建QImage画布、在画布渲染) 

QgsMapRendererJob类:子类(QgsMapRendererCustomPain terJob类、QgsMapRendererQImageJob类、)

QgsMapRendererCustomPainterJob类:(渲染工作的准备)

QgsOgrFeatureIterator类:
        {
           QgsOgrFeatureIterator( QgsOgrFeatureSource*source, bool ownSource, const 
           QgsFeatureRequest& request )// 根据图层索引号从数据库获取该图层及信息
           nextFeatureFilterExpress on( QgsFeature& f )
           fetchFeature( QgsFeature& feature ) //获取下个要素、
            fetchFeatureWithId( QgsFeatureId id, QgsFeature& feature ) const
            readFeature( OGRFeatureH fet, QgsFeature& feature ) // 将OgrFeatue 转QgisFeature
            rewind()// 重置以开始读取下一个要素
            getFeatureAttribute( OGRFeatureH ogrFet, QgsFeature & f, int attindex ) //将OgrFeatueAttribute 转QgisFeatureAttribute
         }    
          
QgsOgrFeatureSource类:
              {
                 virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest& request ) override//将数据库获取的数据存储到Qgs要素遍历器中
              }
   
QgsOpenVectorLayerDialog类:加载数据对话框

QgisApp类:Qgis窗口的操作(添加矢量栅格图层、设置地图窗口大小、放大缩小、移动、地图编辑操作)
            {
                 askUserForOGRSublayers( QgsVectorLayer *layer ) //
            }

QgsVectorDataProvider类:

二、操作流程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值