Daha çox

ModelBuilder və ya ArcPy istifadə edərək qapalı polilin kontur məlumatlarında dəqiqliyi necə yoxlamaq olar?

ModelBuilder və ya ArcPy istifadə edərək qapalı polilin kontur məlumatlarında dəqiqliyi necə yoxlamaq olar?


ModelBuilder və ya Python skriptindən istifadə etməkdə yeniyəm. Beləliklə, bir kontur məlumatım var və yaxşı bir kontur məlumatı hər bir qapalı polyline kontur məlumatında bir diqqət * olmalıdır.

Kontur məlumatlarının hər bir qapalı polilinin eyni yüksəklikdə və ya daha yüksək olan nöqtə göstəricisini ehtiva etməsini yoxlamaq üçün hər hansı bir həll yolu varmı?

*) spotheight, yüksəklik dəyərini göstərən qapalı polyline kontur məlumatlarında yerləşən bir nöqtədir


Bu vəzifəni yerinə yetirmək üçün ümumi iş axını xətlərinizi çoxbucaqlılara çevirəcəkdir. TheXüsusiyyətToPolygonalət yalnız qapalı xətləri çevirəcək, buna görə işlədiyiniz xətləri məhdudlaşdırmaq üçün yaxşı işləyəcəkdir. Bundan sonra hər həndəsənin çox hissəli olub olmadığını yoxlayaraq bir imleclə edilə bilən bütün pişi poliqonlarını analizinizdən çıxarmaq istəyəcəksiniz. Daha sonra təsvir olunan məsələlərlə sətirləri tapmaq üçün müxtəlif seçimlərdən istifadə edə bilərsiniz. Aşağıdakı kimi bir xətt xüsusiyyətiniz olduğunu söyləyin:

Mənim sahəm olduğuna diqqət yetirinNöqtəni yoxlayın. Bu sahəyə aşağıdakı kod vasitəsilə məlumatlar daxil ediləcəkdir.

Kod:

## ---- Yerlilər #Contour xüsusiyyət sinifi inLineFC = r "C:  temp  Workspace.gdb  testlines" # Kontur Elevation Field inElevFld = "Elevation" # Contour Check results field checkFld = "Point_Check" #Point xüsusiyyət sinif pntFc = r "C:  temp  Workspace.gdb  TestPoint" #Point yüksəklik sahəsi pntElevFld = "Yüksəklik" #Workspace GDB iş sahəsiGDB = r "C:  temp  Workspace.gdb" # ---- Yerli əhalini arcpy idxalından sonlandırın * import os env.overwriteOutput = Həqiqi zibil = [] # xüsusiyyət çoxbucaqlı çapa "xətləri çoxbucaqlıya çevirmək" polygonFC = os.path.join (workspaceGDB, "tempPolys") FeatureToPolygon_management (inLineFC, polygonFC) zibil + = # polygon məkan birləşdirmə sahələrini məhdudlaşdırmaq üçün xəritə fms = FieldMappings () fm_elev = FieldMap () fm_elev.addInputField (inLineFC, inElevFld) fms.addFieldMap (fm_elev) print "polygons-a yükseklik əlavə etmək" # Yüksəklik sahəsini polygon fFC-yə köçürmək üçün məkanla birləşmək = .path.join (iş sahəsiGDB, "spatialJoin") SpatialJoin_analysis (polygonFC, inLineFC, spatialJoinFC, field_mapping = fms) zibil + = [spatialJoinFC] # Nöqtələrin, sətirlərin, çoxbucaqlıların xüsusi təbəqələrini düzəldin # Seçimin "xüsusiyyət qatlarının yaradılması" nın çap edilməsinə imkan verir (MakeFeatureLayer_management (pntFc, "pntLyr") MakeFeatureLayer_management (spatialJoinFC, "polyLyr") MakeFeatureLeLayLeLayLay, " ) zibil + = ["pntLyr", "polyLyr", "lineLyr"] # Çoxbucaqlı OID sahəsini alınFayd = Təsvir edin ("polyLyr"). OIDFieldName # Çoxbucaqlı xüsusiyyət sinifindən çörekleri çıxarın "pişi çıxartın" cursor = da.SearchCursor ( İmlecdəki sıra üçün "polyLyr", ["SHAPE @", "OID @"]): # Sətir olmasa xüsusiyyətin pişi olub olmadığını yoxlayın [0] .isMultipart: sql = '{0} = {1}' formatını davam etdirin. (AddFieldDelimiters ("polyLyr", oidFld), sıra [1]) SelectLayerByAttribute_management ("polyLyr", "ADD_TO_SELECTION", sql) del kursor # Əgər çoxbucaqlılar seçilsə, Təsvir etsəniz silin ("polyLyr"). FIDSet: Delete ") # SelectLayerByLocation_management nöqtələri olmayan çoxbucaqları təyin edin (" polyLyr "," "," pntLyr ") # Seçimi dəyişdirin - çoxbucaqlı kəsişmələr səs nöqtələri seçilib SelectLayerByAttribute_management ("polyLyr", "SWITCH_SELECTION") # Təsvir edilsə seçiminizi yoxlayın ("polyLyr"). FIDSet: # Seçilmiş çoxbucaqlı kəsişən xətləri seçin SelectLayerByLocation_management ("lineLyr", "SHARE_A_LINEND") "lineLyr", checkFld, '"NO_POINT"') # Sətir seçimi SelectLayerByAttribute_management ("lineLyr", "CLEAR_SELECTION") # nöqtələri təkrarlayın # Seçilən bütün çoxbucaqlıların nöqtə dəyərindən böyük dəyərlərə sahib olduğunu yoxlayın "təkrarlanan nöqtələr" imleci = da.SearchCursor ("pntLyr", [pntElevFld, "SHAPE @"]) imlecdəki sıra üçün: yükseklik = sıra [0] # kəsişən çoxbucaqlı seçin SelectLayerByLocation_management ("polyLyr", "", sıra [1]) # Seçimi yoxlayın, davam edin Təsvir etmədikdə seçim yoxdur ("polyLyr"). FIDSet: davamı # ədədi çoxbucaqlı, polyCursor içərisində pRow üçün polyCursor = da.SearchCursor ("polyLyr", [inElevFld, "OID @"]) dəyərlərini yoxlayın: # çoxbucaqlı yüksəkliyin olub olmadığını yoxlayın nöqtədən yüksəklikdən çox polyElev = pRow [0] əgər polyElev> yükseklik: # Uyğun olmayan sql = '{0} = {1}'. Formatlı çoxbucaq seçin. Format (AddFieldDelimiters ("polyLyr", oidFld), pRow [1]) SelectLayerByAttribute_management ("polyLyr", "" , sql) # Seçimə sətirlər əlavə et SelectLayerByLocation_management ("lineLyr", "SHARE_A_LINE_SEGMENT_WITH", "polyLyr", "", "ADD_TO_SELECTION") del polyCursor del cursor # Təsvir edərsəniz sətir qatında seçim olub olmadığını yoxlayın ("lineLyr"). çap "yüksəklik dəyəri səhvləri ilə xətləri yeniləmə" CalculateField_management ("lineLyr", checkFld, '"VALUE_ERROR"') # Zibildəki zibil üçün #Clean: Sil_management (zibil) çap "bitdi"

Nəticələr:


Videoya baxın: Model Builder Map Tutorial Arc GIS Pro