[关闭]
@betasy 2015-03-13T03:00:22.000000Z 字数 1478 阅读 1353

add_points

未分类


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")
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注