如何在功能编辑器QGIS中从3D多边形获取坐标?

时间:2019-01-25 20:57:25

标签: python python-2.7 qgis

我在QGIS字段编辑器中的一个功能中工作,该编辑器使用来自多边形Z的X,Y和Z坐标来计算DIP。

代码尚不完善,但是可以。 表情:

degrees( asin(dip($x_at( 0),$x_at( 1),$x_at( 2),$y_at( 0),$y_at( 1),$y_at( 2),z(point_n($geometry ,1)),z(point_n($geometry ,2)),z(point_n($geometry ,3)))))

代码:

from qgis.core import *
from qgis.gui import *
from qgis.utils import*
from qgis.analysis import*
import math

@qgsfunction(args='auto', group='Custom')  
def dip(x1,x2,x3,y1,y2,y3,z1,z2,z3,feature, parent):
    v1= ((y1-y2)*(z3-z2)-(y3-y2)*(z1-z2))
    v2= -((x1-x2)*(z3-z2)-(x3-x2)*(z1-z2))
    v3= ((x1-x2)*(y3-y2)-(x3-x2)*(y1-y2))

    if v1==0 and v2==0 and v3==0:

        di=0
    else:
        di=asin((((v1**2)+(v2**2))**0.5)/((v1**2)+(v2**2)+(v3**2))**0.5)  
    return di

目标是使用要素几何并在所有内部代码中工作。 为了避免在Expression中传递很多变量。

例如:

geom=feature.geometry() 

x1=geom.x(1)
y1=geom.y(1)
z1=geom.z(1)

依此类推...

你能帮我吗?

谢谢。

0 个答案:

没有答案