Excel中计算不规则地区或流域面积

分类:代码, 博客, 水文, 资源 标签:, ,

利用Excel计算地区或流域面积时,可根据边界情况选取结点,使结点连线与边界偏离较小,采用网格纸或直尺、三角板确定边界结点坐标(两步可同时进行),最后把计算面积(计算不规则多边形面积的方法如下面所述)乘以地图比例尺的平方即为地区或流域面积。如果图幅较大时可分为几部分,然后分别计算求和。

(1)以多边形任一顶点(或不规则图形的边界一点)作为第一个点,然后按顺时针方向依次选取各顶点(或不规则图形的边界结点)。注意逆时针方向选取,最终结果为负,绝对值相等。

(2)确定各顶点(或各结点)的坐标,按步骤(1)的顺序依次填人Excel表格的X,Y栏内,再把第一点的坐标填入最后一行。

(3)计算Sum( (X(i+1)-X(i)) * (Y(i+1)+Y(i)) )/2,即为所求面积。

VBA实现的计算不规则多边形面积

Public Type POINTAPI
    X As Long
    Y As Long
End Type
Public m_NumPoints As Integer
Public m_Points() As POINTAPI

Private Function SignedPolygonArea() As Single
Dim pt As Integer
Dim area As Single

    ' Add the first point to the end.
    ReDim Preserve m_Points(1 To m_NumPoints + 1)
    m_Points(m_NumPoints + 1) = m_Points(1)

    ' Get the areas.
    For pt = 1 To m_NumPoints
        area = area + _
            (m_Points(pt + 1).X - m_Points(pt).X) * _
            (m_Points(pt + 1).Y + m_Points(pt).Y) / 2
    Next pt

    ' Return the result.
    SignedPolygonArea = area
End Function

' Find the polygon's area.
Public Function PolygonArea() As Single
    ' Return the absolute value of the signed area.
    PolygonArea = Abs(SignedPolygonArea())
End Function


分类:代码, 博客, 水文, 资源 标签:, ,

发表评论

You must be logged in to post a comment.