Qgis地理实体抽象
2014年8月25日
2014年9月4日添加对属性的相关描述
地理实体抽象是指点、线、面及其组合而成的,用于描述实际地物的数据结构。
其中包含几何实体和属性数据。
GIS中进行几何操作,以各种实体类为基础进行操作。
在OGC中,地理实体可以由WKT表示。在Qgis中使用GEOS和WKT两种方式表示,并在逐步将GEOS全部转化为WKT表示。在内存中,以WKB格式存储。
WKT:使用文本存储几何对象。
WKB:使用结构进行存储。
属性数据一般与几何数据分开存储,两者通过相应的id进行联系,属性数据在QGIS中使用QVector进行存储。
WKT与WKB参见:..\wkb与wkt.docx
参考:http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/wkt-wkb.html
点、线、面等几何类型,具有相似的功能,点组成线、线组成面、部分组成整体。不同的几何类型之间还要进行分析。在处理上,可以使用独立的类表示,但要为每种类构造各自操作。可以使用一个相同的操作类,以各种数据类型为参数,统一进行操作。
Qgis就使用了一个统一的操作类QgsGeometry。
QGIS中的将所有的类型,以QgsVector
QgsVector
QgsPoint:点抽象,实现点的功能。如:距离,方位角,运算,测试与线的关系等。
QgsRectangle:矩形抽象,实现缩放,测试(包含等),合并,融合等。
/** polyline is represented as a vector of points */
typedef QVector
/** polygon: first item of the list is outer ring, innerrings (if any) start from second item */
typedef QVector
/** a collection of QgsPoints that share a common collectionof attributes */
typedef QVector
/** a collection of QgsPolylines that share a commoncollection of attributes */
typedef QVector
/** a collection of QgsPolygons that share a commoncollection of attributes */
typedef QVector
QgsGeometry:所有实体的抽象,用于将上述所有实现进行几何操作的统一平台。并与GEOS库交互,进行几何分析功能。
QgsFeature用于抽象一个带有属性的地理实体,由其联系几何和属性两部分。几何部分由QgsGeometry抽象。属性部分由QgsFields和QgsAttributes抽象。
QgsField:属性名抽象,可以操作属性名的各个成员。
QgsFields:是QgsField的集合操作类,。
QgsFeatureIds:QgsFeatureId的集合。
QgsFeatureId:用于唯一标准一个QgsFeature的id。当前是64位Int。
QgsFeatureMap: typedef QMap
QgsGeometryMap: typedef QMap
QgsAttributes:QVector
QgsAbstractFeatureIterator: QgsFeature迭代器的虚基类,由DataProvider驱动实现。用于进行元素获取。
QgsFeatureIterator:QgsFeature迭代器的包装类,用于操作QgsAbstractFeatureIterator。
QgsAbstractFeatureSource:由驱动实现,提供元素获取。
QgsAbstractFeatureFromSource
QgsVectorLayerFeatureIterator:QgsFeature迭代器的矢量图层实现,每个矢量图层必须实现本类。
参见:Qgis相关类参考.docx