计算任意不规则图形的面积

计算几何中的三角形面积

在计算几何里,我们知道,△ABC的面积就是“向量AB”和“向量AC”两个向量叉积的绝对值的一半。其正负表示三角形顶点是在右手系还是左手系。

计算任意不规则图形的面积_第1张图片

所以得到三角形面积:

注意:该方法得到是有向面积(有正负),有向面积A比面积S其实更本质!

由三角形推广到任意多边形

任意一个n边形可以被分成n个三角形

计算任意不规则图形的面积_第2张图片

三角形面积:

将点作为坐标原点,可以化简为

所以有如下公式:

假设有n个角点,坐标分别为(,)……(,)那角点依次连线围成的面积就是

def get_area(locations):
    area = 0.0

    for i in range(len(locations)):
        lat = locations[i][0]  # 纬度
        lng = locations[i][1]  # 经度
 
        if i == len(locations)-1:
            lat1 = locations[0][0]
            lng1 = locations[0][1]
        else:
            lat1 = locations[i+1][0]
            lng1 = locations[i+1][1]

        area += (lat*lng1 - lng*lat1)/2.0

    return abs(area)

if __name__ == '__main__':

    locations = [[116.568627,39.994879],[116.564791,39.990511],[116.575012,39.984311]]
    print(get_area(locations))

你可能感兴趣的:(计算任意不规则图形的面积)