<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      行走的蓑衣客

      導航

       

        面的節點夾角大于30并且小于150,距離外界矩形左上角最近的點為第一個點,對于多部件每一個都修改,修改面的開始點位置,運行界面如圖14-10所示。

       

       

      #coding=utf8
      import arcpy
      
      import os
      import sys
      import math
      isEdit=False
      def getdis(x1,y1,x2,y2): #獲得兩個點距離
          return math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
      ###############
      def getXYAngle(x1,y1,x2,y2):#點x1,y1和點x2,y2的角度
          if (math.fabs(x1 - x2) < 0.00001):
              if (y1 < y2):
                  return 90
              else:
                  return 270;
          else:
              k = (y2 - y1) / (x2 - x1);
              k = math.atan(k) * 180 / math.pi
              if (x2 < x1):  #二、三象限
                  return k + 180;
              elif (y2 >= y1): #//一象限
                  return k;
              else:#四象限
                  return k + 360
      
      def getAngle(pt1,pt2):#獲得兩個點的角度
          x1=pt1.X
          y1=pt1.Y
          x2=pt2.X
          y2=pt2.Y
          return getXYAngle(x1,y1,x2,y2)
      
      
      
      def getLineAngle(pt1, pt2, pt3,mydir):#mydir是true順時針,false是逆時針
          if (pt1==None):
              #arcpy.AddMessage("pt1為空")
              return -1
          if (pt2==None):
              #arcpy.AddMessage("pt2為空")
              return -2
          if (pt3==None):
              #arcpy.AddMessage("pt3為空")
              return  -3
      
          A1 = getAngle(pt1, pt2)
          A2 = getAngle(pt2, pt3)
          angle = 0;
          if mydir:
              angle = 180 + A2 - A1
          else:
              angle = 180 + A1 - A2
          if (angle >= 360):
              angle = angle - 360
          if (angle < 0):
              angle = angle + 360
          return angle
      
      
      def getintersectionAnge(pt1, pt2, pt3):#獲得夾角
          a=getLineAngle(pt1, pt2, pt3,True)
          if a>180:
              a=a-180
          return a
      def getminXmaxY(array):#獲得最小的X和最大Y
          num=len(array)
          minx=999999999999
          maxy=0;
      
          for i in range(num):
              pt=array[i]
              if pt:
                  if pt.X<minx:
                      minx=pt.X
                  </minx:
      if pt.Y>maxy:
                      maxy=pt.Y
          return minx,maxy
      
      ###########
      def splitNgeometry(mgeometry):
          num=mgeometry.count
          Sumarray = arcpy.Array()
          parray = arcpy.Array()
          for i in range(num): #pntcount
              pt=mgeometry[i]
              if pt:
                  parray.add(pt)
              else:#內邊形
                  Sumarray.add(parray)
                  parray.removeAll()
          Sumarray.add(parray)
          return Sumarray
      
      ################
      def MINPoint(partgeometry):#按照左上點,修改圖形
          global isEdit
      
          Topx,Topy=getminXmaxY(partgeometry)
          num=partgeometry.count
      
          #arcpy.AddMessage("partgeometry.extent:"+str(Topx)+":y="+str(Topy))
          maxd=99999999999;
          idx=0;
          for i in range(num):
      
              pt=partgeometry[i]
      
              x=pt.X
              y=pt.Y
      
              d= getdis(x,y,Topx,Topy)
              #arcpy.AddMessage("KKK"+str(i)+",坐標x="+str(x)+",y="+str(y)+",d="+str(d))
              if (d<maxd):
                  </maxd):
      #計算夾角
                  if (i>1):
                      p1=partgeometry[i-1]
                  else:
                      p1=partgeometry[num-1]
      
                  if i<(num-1):
                      p2=partgeometry[i+1]
                  else:
                      p2=partgeometry[0]
                  myAngle= getintersectionAnge(p1, pt, p2)
      
                  #arcpy.AddMessage("i:"+str(i)+",myAngle="+str(myAngle))
      
                  if myAngle>=30 and myAngle<=150:
                      idx=i
                      maxd=d
          #arcpy.AddMessage("idx============:"+str(idx)+",min="+str(maxd))
          if idx<1:
      
              return partgeometry
          else:
              isEdit=True
      
              array = arcpy.Array()
              for i in range(idx,num):
                  #arcpy.AddMessage("i===========:"+str(i))
                  if partgeometry[i]:
      
                      array.add(partgeometry[i])
              for i in range(idx):
                  #arcpy.AddMessage("i++++++++++:"+str(i))
                  if partgeometry[i]:
                      array.add(partgeometry[i])
              return array
      
      inFeature  = arcpy.GetParameterAsText(0)
      outFeature  = arcpy.GetParameterAsText(1)
      arcpy.Select_analysis(inFeature, outFeature, '')
      desc = arcpy.Describe(outFeature)
      shapeName = desc.ShapeFieldName
      OIDField=desc.OIDFieldName
      
      result = arcpy.GetCount_management(inFeature)
      count= int(result.getOutput(0))
      if count < 1:
          arcpy.AddMessage(inFeature+u"沒有數據")
      else:
      
          rows = arcpy.UpdateCursor(outFeature)
      
          n=1
      
          try:
              for row in rows:
                  isEdit=False
                  arcpy.SetProgressorPosition()
                  arcpy.SetProgressorLabel(u"正在等待,完成"+str(round(1.0*n*100/count,1))+"%...")
                  geometry = row.getValue(shapeName)
                  FID=row.getValue(OIDField)
                  part_count = geometry.partCount #有幾部分
                  #arcpy.AddMessage("FID:"+str(FID)+",part_count:"+str(part_count))
                  Sumarray = arcpy.Array()
                  for i in range(part_count):
                      partgeometry=geometry.getPart(i)
                      SpliArray=splitNgeometry(partgeometry)
                      N=SpliArray.count
                      #arcpy.AddMessage("NNNNN=====:"+str(N))
                      for j in range(N):
                          Splitgeometry=SpliArray[j]
      
                          array=MINPoint(Splitgeometry)
                      #if (part_count>1):
                          try:
                              Sumarray.add(array)
                          except Exception as err:
                              arcpy.AddError(u"錯誤=============j:"+str(j)+","+err.message)
      
                  if isEdit:
                      #row.setValue(shapeName, array)
                      row.setValue(shapeName, Sumarray)
                      rows.updateRow(row)
                      arcpy.AddMessage("FID:"+str(FID)+u"修改")
                  n=n+1
      
          finally:
              arcpy.ResetProgressor()
              #del row
              del rows

       

      posted on 2022-12-22 14:16  行走的蓑衣客  閱讀(583)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 国产日本一区二区三区久久| 亚洲一区二区av观看| 国产一区二区三区小说| 激情伊人五月天久久综合| 免费无码一区二区三区蜜桃大| 国产精品一二三区蜜臀av| 波多野结衣免费一区视频| 开心五月激情五月俺亚洲| 韩国免费a级毛片久久| 你懂的亚洲一区二区三区| 精品视频在线观看免费观看| 国产玩具酱一区二区三区| 欧美牲交a欧美牲交aⅴ免费| 在线观看无码av免费不卡网站| 2022最新国产在线不卡a| 国产精品永久在线观看| 好看的国产精品自拍视频| 色欲综合久久中文字幕网| 疯狂做受XXXX高潮国产| 日本无码欧美一区精品久久| 一二三四中文字幕日韩乱码| 天堂一区二区三区av| 依依成人精品视频在线观看| 亚洲中文字幕久久精品码| 亚洲精品无码人妻无码| 桃花岛亚洲成在人线AV| 日韩一级伦理片一区二区| 国产成人啪精品视频免费软件| 免费看黄色亚洲一区久久| 国内精品久久久久影院网站| 精品国产一区二区三区av片| 国产亚洲一区二区三区啪| 男人下部进女人下部视频| 国产精品国产三级国产av剧情| 日日躁狠狠躁狠狠爱| 精品国产大片中文字幕| 国产一区二区av天堂热| 色老板精品视频在线观看| 久久99精品久久久久久齐齐| 成年视频人免费网站动漫在线| 亚洲丰满熟女一区二区蜜桃|