• 大小: 521KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: arcgis  

资源简介

arcgis实现对面数据中图形的夹角小于指定的多边形进行检查,输入的角度单位度。

资源截图

代码片段和文件信息


#  在使用过程中如有疑问请发邮件至ryx_32@126.com声明:该软件仅限中测新图内部使用,请勿用于商业用途,否则后果自负!!!
# ---------------------------------------------------------------------------

class Feature_No():
    
    pass

import sys string osmath arcgisscripting

gp = arcgisscripting.create(9.3)

gp.SetProduct(“ArcInfo“)

input_poly = gp.GetParameterAsText(0)

angle_min = long(gp.GetParameterAsText(1))

try:

    gp.Addmessage(“***********************************************“)
    
    gp.AddMessage(“本工具由中测新图(北京)遥感技术有限责任公司 任延旭编制“)

    gp.AddMessage(“使用前请做好数据备份,工具产生的不良后果请自行承担!“)

    gp.Addmessage(“***********************************************“)

    result = gp.GetCount_management(input_poly )
  
    count_n = int(result.GetOutput(0))

    if count_n <= 0:

        raise Feature_No

    str_Err = ““

    if len(gp.ListFields(input_poly“Angle_chk“)) <=0:

        gp.AddField_management(input_poly “Angle_chk“ “TEXT“ ““ ““ 255)

    str_Err = ““

    cur = gp.UpdateCursor(input_poly““““““““)
    
    row = cur.next()

    gp.SetProgressor(“step“ “正在检查图形锐角...“ 0count_n 1)
    
    angle_rj = 0

    angle_cf = 0

    num = 0
    
    while row:
        
        num += 1

        gp.SetProgressorLabel(“共有“ +str(count_n)+“个图形正在检查第“ + str(num) + “个图形的夹角还剩余“+str(count_n-num+1)+“个请稍候...“) 
        
        shapeName = gp.Describe(input_poly).shapeFieldName
    
        geom = row.getValue(shapeName)

        part_count = geom.partCount

        count = 0
     
        while count < part_count:

            p = geom.getPart(count)

            p_b = p.next()
            
            p_S = p_b
            
            p1 = p_b
            
            p2 = p.next()
            
            p3 = p.next()
            
            p_2 = p2

            while p3:

                x1 = round(p1.X3)

                y1 = round(p1.Y3)

                x2 = round(p2.X3)

                y2 = round(p2.Y3)

                x3 = round(p3.X3)

                y3 = round(p3.Y3)

                if (math.fabs(x1-x2)<0.5 and math.fabs(x2-x3)<0.5) or (math.fabs(y1-y2)<0.5 and math.fabs(y2-y3)<0.5):

                    jiao = -1

                else:
                
                    l1 = math.sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3))

                    l2 = math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3))

                    l3 = math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))

                    if l1==0 or l2==0 or l3==0:

                        angle_cf += 1

                    else:
                        
                        cj = (l1*l1+l3*l3-l2*l2)/(2*l1*l3)

                        jiao = math.cos(angle_min*3.1415926/180)
                        
                        if cj >= jiao:
                            
                            angle_rj += 1

                p1 = p2
                
                p2 = p3
                
           

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6656  2012-11-05 10:27  锐角检查工具.tbx

     文件     536604  2012-11-06 15:19  使用说明.pdf

     文件       5596  2012-11-06 16:50  jianjiao_check.py

----------- ---------  ---------- -----  ----

               548856                    3


评论

共有 条评论