|
首先代码主要是这个页面来的https://community.esri.com/t5/sp ... -within/td-p/408977
大概这样:
def main():
import arcpy
arcpy.env.overwriteOutput = True
fc=arcpy.GetParameterAsText(0)
fc_out=arcpy.GetParameterAsText(1)
#fc = r'D:\Documents\ArcGIS\Default.gdb\Export_Output'
#fc_out = r'D:\Documents\ArcGIS\Default.gdb\cv'
# get polygon
polygon = arcpy.da.SearchCursor(fc, ('SHAPE@')).next()[0]
sr = polygon.spatialReference
# determine outline, extent and diagonal
polyline = polygon.boundary()
extent = polygon.extent
diagonal_length = getPythagoras(extent.width, extent.height)
are=0
lst_rectangles = []
lst_rectangles.append('')
# first loop for start point of first side
for i in range(10):
perc_p1 = float(i) / 10
pntg1 = polyline.positionAlongLine(perc_p1, True)
# second loop end point of first side
for j in range(10):
frac = float(j) / 20
perc_p2 = perc_p1 + 0.1 + frac
if perc_p2 > 1:
perc_p2 -= 1
pntg2 = polyline.positionAlongLine(perc_p2, True)
print perc_p2
# process as side
# - get angle between points
angle = getAngle(pntg1, pntg2)
# - create perpendicual lines at start and end
pntg1a = pntg1.pointFromAngleAndDistance(angle + 90, diagonal_length, 'PLANAR')
pntg1b = pntg1.pointFromAngleAndDistance(angle - 90, diagonal_length, 'PLANAR')
line1 = createStraightLine(pntg1a, pntg1b)
pntg2a = pntg2.pointFromAngleAndDistance(angle + 90, diagonal_length, 'PLANAR')
pntg2b = pntg2.pointFromAngleAndDistance(angle - 90, diagonal_length, 'PLANAR')
line2 = createStraightLine(pntg2a, pntg2b)
# - intersect by polygon (asume single parts)
不过原始代码老出错,所以还可以修改的…看看我修改过的视频,【求凸多边形内最大矩形-哔哩哔哩】https://b23.tv/X4f86c,看情况把代码放出来
|
|