泰森多邊形法計算流域平均降雨量,arcpy泰森多邊形法計算面雨量工具

 2023-12-25 阅读 35 评论 0

摘要:? ?在水利部門或氣象部門中面平均降水量是降雨中很重要的指標,傳統計算多用使用算術平均法,泰森多邊形法和等值線法,后兩種計算方法在傳統的計算中很難計算,但使用用GIS十分方便計算,可以是任意區域的任意一場降雨。 一、泰森多邊形介紹&#

? ?在水利部門或氣象部門中面平均降水量是降雨中很重要的指標,傳統計算多用使用算術平均法,泰森多邊形法和等值線法,后兩種計算方法在傳統的計算中很難計算,但使用用GIS十分方便計算,可以是任意區域的任意一場降雨。

一、泰森多邊形介紹:

荷蘭氣候學家A·H·Thiessen提出了一種根據離散分布的氣象站的降雨量來計算平均降雨量的方法,即將所有相鄰氣象站連成三角形,作這些三角形各邊的垂直平分線,于是每個氣象站周圍的若干垂直平分線便圍成一個多邊形。用這個多邊形內所包含的一個唯一氣象站的降雨強度來表示這個多邊形區域內的降雨強度,并稱這個多邊形為泰森多邊形。

特點:

1、每個泰森多邊形內僅含有一個離散點數據;

2、泰森多邊形內的點到相應離散點的距離最近;

3、位于泰森多邊形邊上的點到其兩邊的離散點的距離相等。

二、在ArcGIS中利用泰森多邊形法分析流域降雨量步驟(長江上游為例)沒有使用工具:

1、首先在ArcMap中加長江流域分區和雨量站點的.shp格式的數據(必須是.shp格式的)。若雨量站點信息為.xls或.txt格式的,則應該將其加載后先轉成.shp格式,再進行以下的操作。加載數據結果如圖:

2、在ArcToolbox工具中選擇Analysis Tools—Proximity—Create Thiessen Polygons工具,打開Create Thiessen Polygons窗口,在Input Features中輸入站點數據:雨量站點,在Output Features Class中設置輸出路徑,在Output Fields(optional)中選擇All(即輸出所有屬性字段)。如圖所示:

? 然后設置其環境,即選擇Create Thiessen Polygons窗口下面的Environments…按鈕,進入環境設置窗口

選擇General Settings進行設置:主要設置包括兩項,第一項對Output Coordinate System設置,選取流域面矢量數據以和其保持一致的坐標系,此處選擇Same as Layer “流域分區圖”;第二項對Extent進行設置,設置生成泰森多邊形的四周邊緣,此處選擇Same as Layer 流域分區圖,其余保持默認。如圖所示:

選擇OK后,Create Thiessen Polygons窗口再次選擇OK,則生成的泰森多邊形如圖所示:

3、因為需要對江流域范圍內的每一塊多邊形的面積進行統計,所以對新生成的泰森多邊形數據進行裁剪,由于是矢量數據,所以采用ArcToolbox工具中的Analysis Tools—Extract—Clip工具進行裁剪,設置如圖:

點擊OK,生成的Clip后的圖如下圖所示:

為了統計每一多邊形的面積,打開Clip后的數據的屬性表,并添加屬性數據:Area計算面積,在excel中計算出面平均降水量。

三、以上是熟悉GIS工具的專業人員可以很快計算出區域泰森多邊形面平均降水量,量對于水利或氣象專業的人員不一定熟悉ARCGIS,以下是本人通過arcpy編寫的小程序,只要有降水量站點及降水值和區域面積圖就可以直接計算出面平均降水量。工具如下,選擇降水量站點圖,帶有降水量數據字段。

1、添加降水量圖層,選擇年降水量字段。

2、添加區域圖層,如果流域中有多個行政區選擇行政區名稱字段

3、點確定之后就計算出區域平均降水量如下表,流域內每個縣年平均降水量計算完成

4、arcpy泰森多邊形法計算面雨量工具界面如下

?

?

5、arcpy代碼如下

# -*- coding: utf-8 -*-
import arcpy

Rian_stion = arcpy.GetParameterAsText(0)

Xzfq = arcpy.GetParameterAsText(1)

Outinter_Thiessen = arcpy.GetParameterAsText(2)

泰森多邊形法計算流域平均降雨量。filedname = arcpy.GetParameterAsText(3)

outtable = arcpy.GetParameterAsText(4)

summation = arcpy.GetParameterAsText(5)

outshp = ""
Outclp_Thiessen = ""
Thiessen = Outinter_Thiessen
outshp = Outinter_Thiessen
xzq_areas = Thiessen

# Process: 創建泰森多邊形
arcpy.CreateThiessenPolygons_analysis(Rian_stion, outshp, "ALL")

# Process: 裁剪
arcpy.Clip_analysis(outshp, Xzfq, Outclp_Thiessen, "1 Meters")

泰森多邊形的定義、# Process: 相交
arcpy.Intersect_analysis("# #;# #", Outinter_Thiessen, "ALL", "1 Meters", "INPUT")

# Process: 添加字段
arcpy.AddField_management(Outinter_Thiessen, "Thiessen_Area", "FLOAT", "", "", "", "泰森多邊形面積", "NULLABLE", "NON_REQUIRED", "")

# Process: 計算字段
arcpy.CalculateField_management(Thiessen, "Thiessen_Area", "!Shape.area!/1000000", "PYTHON", "")

# Process: 添加字段 (2)
arcpy.AddField_management(Outinter_Thiessen, "Pa", "FLOAT", "", "", "", "降水量", "NULLABLE", "NON_REQUIRED", "")

# Process: 計算字段 (2)
arcpy.CalculateField_management(outshp2, "Pa", "float(!字段名!)*!Thiessen_Area!", "PYTHON", "")

# Process: 匯總統計數據
arcpy.Statistics_analysis(outshp3, outtable, "Pa SUM", summation)

?

泰森多邊形計算例題??

?

?

?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196811.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息