Daha çox

Yeri əsas götürərək kursoru yeniləyin

Yeri əsas götürərək kursoru yeniləyin


ArcGIS 10.2 / 10.3 üçün piton ssenarisi üzərində işləyirəm. İstədiyim odur ki, bir nöqtənin çoxbucaqlı təbəqə ilə əlaqəli yerləşməsinə əsasən bir nöqtə qatının sahəsini avtomatik olaraq doldurun.

İki qatım var deyin: verilənlər bazasında şəhərlər və bölgələr və şəhərlər qatında "region_name" adlı bir sahə var. O zaman istədiyim təkcə bu bölgə daxilində şəhər nöqtələrinin yerləşməsini nəzərə alaraq bu "region_adı" sahəsini doldurmaqdır. Bu sualın əvvəllər verildiyini bilirəm, amma müəyyən bir nöqtədə qalmışam: Bilirəm yeri və ya bir Məkan Qoşulmasına görə istifadə edə biləcəyimi bilirəm, amma məni narahat edən budur ki, nəticə ilə yeni bir təbəqə əldə edim Mənə eyni "şəhərlər" təbəqəsi (əlavə sahələr olmadan) yalnız "bölgə" sahəsi doldurulub.

Çox sadə səslənir, ona görə bir şeyi darıxdığımı düşünürəm. Həm də bir çox şəhərlərimə və bölgələrim olduğundan həqiqətən proqramlı (əllə deyil) edilməlidir, amma mənə deyirsən ki, Python-dan başqa bir şey istifadə edərəmsə (müəssisə geodatabase ilə işləyirəm) dəyişdirmək.


Təşəkkür edirəm Richard Fairhurst, düşünürəm ki, bizdə eyni fikir var idi (sadəcə cavab olaraq işlək vəziyyətdə yerləşdirmək):

Nəticələri ilə yeni bir təbəqə yaratmaq üçün SpatialJoin yanaşmasından istifadə edə bilərəm. Bu təbəqədə bir target_fid (hər bir şəhər nöqtəsinin orijinal FID-i olan) bir sahə var və açıq şəkildə içərisinə düşdüyü bölgənin adı var. Buna görə x bölgəsinə qoşulmuş bütün şəhərlərin target_FID-lərini ehtiva edən bir siyahı yaratmaq üçün istifadə edə bilərəm. Bu, daha sonra FID-in target_FID siyahısında olduğu şəhərlərin sahəsinə bölgə adını yazmaq üçün şəhər qatındakı yeniləmə Kursorunu istifadə etməyə imkan verir. Sonra bölgə adı y, z olan bütün şəhərlər üçün də eyni şeyi etməliyəm…

Ancaq bəlkə də daha asan bir yanaşma var


Axtarış və Yeniləmə İmleclərini istifadə edərək bu tip bir həll variantını düşündünüzmü? Bu ssenarini hazırladım, amma sınamadım.

idxal arcpy # set iş sahəsi və dəyişənlər arcpy.env.workspace = "iş sahəsi" bölgələri = "regionlar.shp" şəhərlər = "city.shp" # bölgələr üçün axtarış imleci təyin cursor_regions = arcpy.da.SearchCursor (bölgələr, ["FieldWithRegionName") ]) cursor_regions-dakı row_regions üçün: # cari bölgədə yerləşən arcpy.SelectLayerByLocation_management şəhərlərini seçin (şəhərlər, "INTERSECT", bölgələr, "", "NEW_SELECTION") # seçilmiş şəhərlər üçün yeniləmə kursorunu ayarlayın cursor_cities = arcpy.da.UpdateCursor (şəhərlər) , ["FieldWithRegionNameInCities"]) cursor_cities-də satır_ şəhərləri üçün: # ad yeniləmə satır_sırları_cities [0] = satır_ bölgələr [0] cursor_cities.updateCursor (row_cities) del row_cities del cursor_cities

Videoya baxın: GREEN CARD. СОБЕСЕДОВАНИЕ В ПОСОЛЬСТВЕ США. ПОЛУЧЕНИЕ ГРИН КАРД, ИММИГРАЦИЯ, ИНСТРУКЦИЯ2021-2022!