Daha çox

Arcpy istifadə edərək sahəyə dəyər əlavə edin

Arcpy istifadə edərək sahəyə dəyər əlavə edin


İki nöqtə arasındakı azimut bucağını hesabladım. Bucaq dəyərlərimi saxlayacağım yeni bir sahə yaratmağa çalışıram, amma sahə yaradılsa da boş qalır, amma içərisində heç bir dəyər yoxdur!

Python pəncərəsi olan ArcGIS 10.1 istifadə edirəm. Bu kod:

arcpy idxal riyaziyyatı arcpy.AddField_management ("Parcelles_class_FeatureToPoi3", "new_field", "DOUBLE") cur = arcpy.UpdateCursor ("Parcelles_class_FeatureToPoi3") cur for row: row.getValY ("POININ_ALUE" "" POININ) ) row.getValue ("end_x") row.getValue ("end_y") row.setValue ("new_field", math.atan2 ((end_y-POINT_Y), (end_x-POINT_X))) cur.updateRow (satır)

Proqramın döngənin başladığı/bitdiyini bildirmək üçün Python döngələrinin girintisi (əvvəl 2 və ya 4 boşluq) olmalıdır.

arcpy idxal riyaziyyat arcpy.AddField_management ("Parcelles_class_FeatureToPoi3", "new_field", "DOUBLE") cur = arcpy.UpdateCursor ("Parcelles_class_FeatureToPoi3") cur for row: row.getValY ("POININ_ALUE" "" POININ) ) row.getValue ("end_x") row.getValue ("end_y") row.setValue ("new_field", math.atan2 ((end_y-POINT_Y), (end_x-POINT_X))) cur.updateRow (satır)

Skriptlərimi ümumiyyətlə başqa bir proqramda (məsələn, Notepad ++) açıram və sonra bütün girintiləri düzgün hizalamaq üçün Python pəncərəsinə kopyalayıram.

Ayrıca, dəyişən üçün dəyərlər təyin etmirsinizson_y,POINT_Yvə s.

sıra sırası üçün: PointX = row.getValue ("POINT_X") çap PointX PointY = row.getValue ("POINT_Y") çap PointY EndX = row.getValue ("end_x") print EndX EndY = row.getValue ("end_y") ) EndY azimuth = math.atan2 ((EndY - PointY), (EndX - PointX)) çap azimut row.setValue ("new_field", azimuth) cur.updateRow (satır)

Orada bir çap ifadəsi də əlavə etdim ki, məlumatların düzgün əldə edildiyini yoxlaya biləsiniz; Hər şeyin işlədiyini bildikdən sonra onu silməkdən çekinmeyin və sonra kodu daha da möhkəmləndirə bilərsiniz (məsələn, tənliklərirow.setValueayrı bir dəyişən elan etmək yerinə satır). Bu, nəticədə yığcamlaşdırıla bilər:

row.setValue ("new_field", math.atan2 ((row.getValue ("end_y") - row.getValue ("POINT_Y"))), (row.getValue ("end_x") - row.getValue ("POINT_X") )))

həqiqətən yer saxlamaq istəyirsənsə :)


Videoya baxın: GIS Python: Count shape files and Select by Location 2 Real world ArcPy examples