Бештар

Чӣ тавр ба даст овардани координатҳои нуқтаи муайяншудаи Polyline

Чӣ тавр ба даст овардани координатҳои нуқтаи муайяншудаи Polyline


lines_cursor = arcpy.da.UpdateCursor (сатрҳо, ["From_id", "To_id", "SHAPE @"]) барои lines_row дар сатрҳои_курсор: from_id = lines_row [0] to_id = lines_row [1] if from_id in points_dict.keys () : чоп кунед from_id барои нуқтаи inlines_row [2] .getPart (0): чопи point.X, point.Y

Ин массиви координатҳои ҳамаи объектҳои нуқтаро бармегардонад, аммо ман танҳо мехоҳам координатҳои нуқтаи аввалро (ё дуюм, сеюм ва ғ.) Ба даст оварам ва ба арзиши нав диҳам.

Ин корро ман чӣ гуна ба даст меорам?


Агар ман фаҳмам, ки шумо ин саволро чӣ гуна медиҳед, тақрибан ба ҳамон саволи GIS SE баробар аст.

Ин метавонад бо полилинҳо каме душвор бошад, зеро x, y ва z-ҳар як қулла тавассути майдони шакл фавран дастрас нестанд. Шумо бояд ба объекти геометрияи полилинӣ (майдони шакл) бо дастрасӣ пайдо кунедШАКЛИ @ва ба поён ҳаракат кунед то ба ҳар як нуқтаи геометрияи полилинӣ бирасед. Ин аст апитонваarcpyпорчаи код барои дастрасӣ ба арзишҳои x, y ва z-и қуллаҳои ҳар сатр дар синфи хусусиятҳои polyline.

shift_value = 2 бо arcpy.da.UpdateCursor ("Breaklines", ['SHAPE @']) as u_cur: for row in u_cur: geometry = row [0] pts = geometry.getPart (0) #get polyline geometry pt_array = arcpy .Array () # барои сохтани нуқтаҳои нав барои pt дар pts массив созед: pt.Z + = shift_value #shift x, y, or z value (pt.X, pt.Y, pt.Z, to shift x, y, ва z қиматҳо мутаносибан) pt_array.add (pt) #add нуқта барои массиви new_polyline_geometry = arcpy.Polyline (pt_array, None, True) # муҳим барои фаъол кардани z-value бо доштани параметри сеюм ба True, агар шумо z-ро таҳрир карда истодаед сатри қимат [0] = new_polyline_geometry #set sıra [0] ки SHAPE @ (объекти геометрия) u_cur.updateRow (сатр)

Дар пӯсти чормағз:

  • дар болои қуллаҳои геометрияи полилин давр занед
  • ҳар як x, y ва / ё z арзиши геометрияи нуқтаро навсозӣ кунед
  • нуқтаи навшударо ба массив илова кунед
  • пас аз он ки ҳамаи нуқтаҳои полилин танзим карда шуданд:
    • геометрияи нави полилиниро бо массиви нуқта эҷод кунед ва боварӣ ҳосил кунед, ки онро ба z фаъол созед, агар шумо арзиши z-ро иваз кунед
    • пас геометрияи кӯҳнаи полилинро бо геометрияи навтаъсис навсозӣ кунед

Дар айни замон, ин танҳо дар қисми якуми геометрия кор хоҳад кард, нигаредpts = geom.getPart (0)Аммо, он метавонад ба осонӣ таҳрир карда шавад, то дар хат кор кунад, агар он қисматҳои гуногун дошта бошад. Бо нав кардани рамз ва ворид кардани як ҳалқаи дигар ва истифодаи.partCountазPolylineобъект.

Усули иловагӣ, ки аз ҷониби @DWynne оид ба саволи GIS SE дар боло зикршуда пешниҳод шудааст, истифодаитаркиш_нуқтаҳохосият ҳангоми эҷодиUpdateCursor. Ин ниёз ба гардиши ҳама нуқтаҳои ҳар як полилинро аз байн хоҳад бурд.


Ман фикр мекунам, ки шумо барои ҳар як сатр дар дохили курсор чунин коре карда метавонед:

arr = arcpy.Array () барои нуқта дар lines_row [2] .getPart (0): чопи point.X, point.Y arr.add (point) polyLine = arcpy.Polyline (arr) row.setValue ("SHP", polyLine) cursor.updateRow (сатр)

ё алтернативӣ истифода баредrow.shape = polyline.


Видеоро тамошо кунед: PT518 Tj 15. Мушкилоти ҳамгироӣ дар машварати масеҳӣ. Тафовут дар намунаҳои ҷонпарасторӣ.