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<int, QgsField>
QgsFieldMap;
矢量圖層的對象具有多個屬性,可以在添加編輯對象時設置這些屬性

attributeFields[CmtAttr] = QgsField(attr[CmtAttr],
QVariant::String, "text");
以上代碼就可以添加一種屬性類型
地圖距離單位:
METERS,
FEET,
DEGREES,
Mbr : 可能全稱 Max boundary Rectangle
坐標轉換:
1.空間坐標轉換: long/lat坐標投影到世界地圖坐標 【QgsCoordinateTransform實現】
2.世界坐標轉換到屏幕坐標【QgsMapToPixel實現】
//數學宏
#define PI 3.1415926
//角度轉弧度
#define DEG_TO_RAD(ang) ((ang)*PI/180.0)
//弧度轉角度
#define RAD_TO_DEG(rad) ((rad)*180.0/PI)
//取得x~y之間任意一個值
#define RAND_RANGE(x,y) ((x) + rand() % ((y) - (x) + 1)))
GPX
www.gpsbabel.org
是不同gps日志數據的通用解析和轉換工具
gps log數據分類:
l
Waypoints: 我的行徑上要路過的點。比如我去北京,順便到徐州拜訪朋友,所以途經的徐州是我要停留的waypoint
l
Routes: 是指所有WayPoint的集合構成的線路
l
Tracks: 我途經的路上所有走過的軌跡點(因該是最多的數據量)
WayPoint和route我理解為是面向應用的,而Track就是基礎數據,是物理的記錄
看看老外的注釋
> a) waypoint
A geopoint with some special tags like name, comment and the like.
Usually used to mark special locations as your home, a hotel or a
geocache. Huge collections of gas stations, post boxes, shops and the
like are called "points of interest" (aka POIs).
> b) track
A collection of geopoints recorded by your GPS device while traveling. A
trackpoint doesn't have a name or comment, but it usually has a
timestamp. This distibguishes a trackpoint from a waypoint.
> c) route
A collection of waypoints defining the route you want to pass while
traveling.