@betasy
2015-03-13T03:00:22.000000Z
字数 1478
阅读 1353
未分类
import numpy
import random
import math
import arcpy
from arcpy import env
env.workspace = r'D:\Documents\ArcGIS\tmpdata'
from arcpy import da
def add_points(array,idlist):
dx = []
dy = []
for i in xrange(1, array.shape[1]):
dx.append(array[0][i] - array[0][i - 1])
dy.append(array[1][i] - array[1][i - 1])
dx.append(array[0][array.shape[0] - 1] - array[0][0])
dy.append(array[1][array.shape[1] - 1] - array[1][0])
dx_avg, dy_avg = sum(dx) / len(dx), sum(dy) / len(dy)
plx = []
ply = []
idlist2=[]
for i in xrange(len(dx)):
plx.append(array[0][i])
ply.append(array[1][i])
idlist2.append(idlist[i])
if dx[i] > dx_avg:
num = int(dx[i] / dx_avg)
for j in xrange(num):
x = array[0][i] + (j + 1) * dx[i] / num
y = array[1][i] + (j + 1) * dy[i] / num
plx.append(x)
ply.append(y)
idlist2.append(idlist[i])
plx.append(array[0][array.shape[1] - 1])
ply.append(array[1][array.shape[1] - 1])
idlist2.append(idlist[len(idlist)-1])
plx.append(array[0][0])
ply.append(array[1][0])
idlist2.append(idlist[0])
return map(lambda a, b: (a, b), plx, ply),idlist2
cur = da.SearchCursor('new3.shp', "Shape")
plist = []
idlist=[]
for row in cur:
plist.append(row[0])
a, b = map(lambda p: p[0], plist), map(lambda p: p[1], plist)
points = numpy.array([numpy.array(a), numpy.array(b)])
cur2 = arcpy.SearchCursor("new3.shp","","","Id")
for row2 in cur2:
idlist.append(row2.Id)
pp, ppidlist = add_points(points)
point = arcpy.Point()
array = arcpy.Array()
polygonArray = arcpy.Array()
for p in pp:
point.X = p[0]
point.Y = p[1]
array.add(point)
new4 = arcpy.Polygon(array)
arcpy.CopyFeatures_management(new4, "new4.shp")
arcpy.AddField_management("new4", "Id", "LONG", "", "", "",
"", "NULLABLE")
