【空間分析の2】ポイントデータセット加重平均中心統計(weighed Mean Center)
ポイントデータセット記述空間統計の2つ-重み付け平均中心統計(weighed Mean Center)原理とpython実現
1.原理
1つのポイントデータセット、例えば、各ポイントが位置するセルの人口がどれだけ少ないか、あるいはある固定場所までの距離が長いか短いかを考慮した場合、求められるポイントデータセットの平均中心は、重み平均中心である.
2.数式
X ‾ = ∑ i = 1 N W i X i ∑ i = 1 N W i\overline{X}=\dfrac{\sum_{i=1}^{N}W_{i}X_{i}}{\sum_{i=1}^{N}W_{i}} X=∑i=1NWi∑i=1NWiXi Y ‾ = ∑ i = 1 N W i Y i ∑ i = 1 N W i\overline{Y}=\dfrac{\sum_{i=1}^{N}W_{i}Y_{i}}{\sum_{i=1}^{N}W_{i}} Y=∑i=1NWi∑i=1NWiYi
3.python実装
1.原理
1つのポイントデータセット、例えば、各ポイントが位置するセルの人口がどれだけ少ないか、あるいはある固定場所までの距離が長いか短いかを考慮した場合、求められるポイントデータセットの平均中心は、重み平均中心である.
2.数式
X ‾ = ∑ i = 1 N W i X i ∑ i = 1 N W i\overline{X}=\dfrac{\sum_{i=1}^{N}W_{i}X_{i}}{\sum_{i=1}^{N}W_{i}} X=∑i=1NWi∑i=1NWiXi Y ‾ = ∑ i = 1 N W i Y i ∑ i = 1 N W i\overline{Y}=\dfrac{\sum_{i=1}^{N}W_{i}Y_{i}}{\sum_{i=1}^{N}W_{i}} Y=∑i=1NWi∑i=1NWiYi
3.python実装
SSDataObject.SSDataObject("c:/General Sample Data/BALTPOP_export.shp")
#
mycount = arcpy.management.GetCount("c:/General Sample Data/BALTPOP_export.shp")
#
ftClass = "c:/General Sample Data/BALTPOP_export.shp"
searchCursor = arcpy.da.SearchCursor(ftClass, ["SHAPE@xy", "FID", "TOTPOP"])
# X、Y list ,
listPOP = []
weightX = []
weightY = []
for row in searchCursor:
x, y = row[0]
listPOP.append(row[2])
weightX.append(x*row[2])
weightY.append(y*row[2])
#
WMeanCenterX = sum(weightX)/sum(listPOP)
WMeanCenterY = sum(weightY)/sum(listPOP)
#
out_path = "c:/General Sample Data/"
out_name = "wmeanCenter_test.shp"
geometry_type = "POINT"
template = "study_quads.shp"
has_m = "DISABLED"
has_z = "DISABLED"
env.workspace = out_path
env.overwriteOutput = True
MClyr = arcpy.CreateFeatureclass_management(out_path, out_name, geometry_type, None, has_m, has_z)
#
inCursor = arcpy.da.InsertCursor(out_name, ["SHAPE@"])
wMCpnt = arcpy.Point(WMeanCenterX, WMeanCenterY)
inCursor.insertRow([wMCpnt])
del inCursor
del searchCursor