이것은 대답이 아니며, 관심있는 사람들을 위해 Python 솔루션을 게시한다고 생각했습니다.
# ---------------------------------------------------------------------------
# PAGE MAKER
#
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy, traceback, os, sys
from arcpy import env
width=650
height=500
try:
def showPyMessage():
arcpy.AddMessage(str(time.ctime()) + " - " + message)
mxd = arcpy.mapping.MapDocument("CURRENT")
points = arcpy.mapping.ListLayers(mxd,"points")[0]
pgons = arcpy.mapping.ListLayers(mxd,"pages")[0]
g=arcpy.Geometry()
geometryList=arcpy.CopyFeatures_management(points,g)
geometryList=[p.firstPoint for p in geometryList]
curT = arcpy.da.InsertCursor(pgons,"SHAPE@")
while True:
nPoints=len(geometryList)
small=[geometryList.pop(0)]
for p in geometryList:
small.append(p)
mPoint=arcpy.Multipoint(arcpy.Array(small))
ext=mPoint.extent
cHeight=ext.height
cWidth=ext.width
if cHeight>height or cWidth>width:
small.remove(p)
mPoint=arcpy.Multipoint(arcpy.Array(small))
ext=mPoint.extent
xC=(ext.XMin+ext.XMax)/2
yC=(ext.YMin+ext.YMax)/2
LL=arcpy.Point (xC-width/2,yC-height/2)
UL=arcpy.Point (xC-width/2,yC+height/2)
UR=arcpy.Point (xC+width/2,yC+height/2)
LR=arcpy.Point (xC+width/2,yC-height/2)
pgon=arcpy.Polygon(arcpy.Array([LL,UL,UR,LR]))
curT.insertRow((pgon,))
short=filter(lambda x: x not in small,geometryList)
arcpy.AddMessage('Grabbed %i points, %i to go' %(len(small),len(short)))
if len(short)==0: break
geometryList=short[:]
del mxd
except:
message = "\n*** PYTHON ERRORS *** "; showPyMessage()
message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
message = "Python Error Info: " + str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()
설문 조사 계획에 최근에 적용 :
최신 정보:
'스트레이 (stray)'지점을 먼저 다루는 일부 패턴의 경우가는 길인 것 같습니다. 나는 '볼록 껍질'껍질을 사용하여 그것들을 식별했습니다. whuber의 아이디어는 게시물을 찾을 수 없습니다. 죄송합니다.