在 QGIS 中,QgsPoint 类是用于表示二维或三维点的类。它由 X、Y 和 Z 坐标组成,并且可以带有一个可选的 M 值(也称为测量值)。以下是 QgsPoint 类的主要参数介绍:
- x:表示点的横向坐标值。
- y:表示点的纵向坐标值。
- z:表示点的垂直(高程)坐标值,通常在三维场景下使用。
- m:表示点的测量值,用于存储关于该点的附加信息,例如距离、高程差等。
除了这些基本参数外,QgsPoint 类还提供了许多其他的方法和属性,例如:
- distance(other):计算该点与另一个点之间的欧几里得距离。
- is3D():判断该点是否包含 Z 坐标。
- setX(x):设置该点的横向坐标。
- setY(y):设置该点的纵向坐标。
- setZ(z):设置该点的垂直坐标。
- setM(m):设置该点的测量值。
QgsPoint 类还可以和其他的 QGIS 类型进行交互,例如 QgsGeometry 类和 QgsFeature 类等。通过使用这些类,可以实现更加灵活和强大的空间数据处理和分析功能。
- QgsPoint和QgsPointXY的区别
QgsPoint和QgsPointXY都是在QGIS中用于表示点的类,它们的区别在于坐标系的不同。
QgsPoint类将点的坐标存在X,Y,Z三个属性中,其中X和Y表示点在地理坐标系中的经度和纬度,而Z则表示高程值。这种方式适用于经纬度坐标系或地理坐标系。
QgsPointXY类仅将点的X,Y坐标存储在一个对应属性中,不包含Z坐标。这种方式适用于投影坐标系,其中X和Y都是平面坐标值。
因此,如果需要处理经纬度等地理坐标系下的点,则应使用QgsPoint类;如果要处理投影坐标系下的点,则应使用QgsPointXY类。
-
p = QgsPoint() p.setZ(30)和p.addZValue(30)区别
p.setZ(30)
是将点对象p
的高程值设置为30,即在三维坐标系下,该点的高程值为30个单位。而
p.addZValue(30)
是给点对象p
的高程值增加30个单位(如果之前未设置高程值,则默认为0)。这通常用于处理三维数据,例如在地图上显示海拔高度等信息,或者在3D模型中显示物体的高度等信息。因此,这两个方法适用于不同的场景和目的。
setZ()
方法可以精确地设置点的高程值,而addZValue()
方法则改变了点的高程值,使其更具有空间感,并可以在地图或3D场景中展示出来。
from qgis.core import QgsPoint
p = QgsPoint() # 创建一个点对象
p.isValid() # 判断点对象是否有效 (True, '')
p.geometryType() # 'Point' 返回几何对象的类型
p.wkbType() # 1 返回WKB类型,1表示点类型
p.dimension() # 0 返回点的维度,因为点是0维对象,所以返回0
p.isEmpty() # True
p.setX(30)
p.isEmpty() # True 只设置了X或Y坐标而未设置另一个坐标,则点对象仍然被视为为空
p.setY(20)
p.isEmpty() # False
p.addZValue(3.3) # 将点的高程值增加3.3个单位
p.swapXy() # 交换点的X坐标和Y坐标
p.dropZValue() # 移除点的高程值
p.setZ(2) # 设置点的高程值为2
p.asWkt() # 将点对象转换成WKT格式的字符串
p.asKml() # 将点对象转换成KML格式的字符串
p.fromWkt('Point(4 6)') # True 从WKT格式的字符串中重建点对象
p1 = QgsPoint(3, 4) # 创建一个二维的点
p2 = QgsPoint(3, 4, m=12) # 创建一个有M值的二维点
p3 = QgsPoint(3, 4, z=7) # 创建一个三维点
p4 = QgsPoint(3, 4, 5, 6) # 创建一个有M值的三维点
参考:pyqgis2.01