免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 1096|回复: 6
收起左侧

[技术交流] 凸多边形内能裁出的最大矩形

[复制链接]

7

主题

1486

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
66
发表于 2021-7-19 14:17 | 显示全部楼层 |阅读模式
首先代码主要是这个页面来的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,看情况把代码放出来

1

主题

4470

铜板

1

好友

助理工程师

Rank: 5Rank: 5

积分
391
QQ
发表于 2021-7-20 10:24 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

6125

铜板

1

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1400
发表于 2021-7-21 17:29 | 显示全部楼层
地质人有福了,体图荒料率机算机自动处理成图代码,未来自动处理地质成图成为可能了,不过代码还未加入荒料规格的设定,目前还不能正式使用,因为地质人编程太弱了,如果又会地质又会编程,那么自动成图将很快到来...
回复 支持 反对

使用道具 举报

0

主题

4197

铜板

5

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1488
发表于 2021-7-23 08:37 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

10

主题

1万

铜板

19

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3722
发表于 2021-11-14 10:56 | 显示全部楼层
谢谢分享
回复

使用道具 举报

30

主题

2万

铜板

59

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6290
QQ
发表于 2022-1-23 20:10 | 显示全部楼层
感谢分享:mg
回复 支持 反对

使用道具 举报

1

主题

1万

铜板

2

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4857
发表于 2022-12-9 09:15 | 显示全部楼层
感谢分享!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表