这次我们来学习一下,关于为polygon面计算几何中心,我们指定这个中心为点对象,然后将polygon中所具有的属性一起赋值给这些点对象,最后创建相应的shapefile数据。在这个例子中,将会用到字段的创建,要素创建,游标的创建。
首先我们做一份数据,如下图所示。由几个polygon组成,相应的我们为每个polygon面要素添加属性字段,以及一些对应的值。
来看一下编码,首先是读取polygon要素,使用字段、游标来读取每个记录的属性。最后创建要素。
#encoding: utf-8
import arcpy,os
featuresList = []
in_polygon=r"C:\Users\qin\Desktop\zxy\test.shp"
polygon_fields = ['SHAPE@TRUECENTROID', 'NAME', 'NUM', 'ADDRESS']
with arcpy.da.SearchCursor(in_polygon, polygon_fields) as cursor:
for row in cursor:
# 将数据添加到集合中去
featuresList.append([row[0], row[1], row[2], row[3]])
# 结束循环
fc_name = 'Point_Layer'
output_location = r'D:\Data\test.gdb'
sr = arcpy.SpatialReference(4326)
arcpy.CreateFeatureclass_management(output_location,fc_name,'POINT',spatial_reference=sr)
point_layer = os.path.join(output_location,fc_name)
arcpy.AddField_management(point_layer,'NAME','TEXT')
arcpy.AddField_management(point_layer,'NUM','SHORT')
arcpy.AddField_management(point_layer,'ADDRESS','TEXT')
point_fields = ['SHAPE@XY', 'NAME', 'NUM', 'ADDRESS']
with arcpy.da.InsertCursor(point_layer, point_fields) as cursor:
for record in featuresList:
cursor.insertRow(record)
print "哈哈,完成了啊"
好了,我们来看一下最后成果。每个面对应一个点。
更多内容,请微信扫二维码关注公众号,或者加入arcpy开发qq学习群:487352121