Python trong ArcGIS - nhờ các bạn giúp đỡ - Gấp!!



  • Mình đang học đến đoạn viết script python chạy cho ArcGIS, có bài tập như sau mà mình đang mắc quá không biết phải làm thế nào. Mình viết code như sau rồi nhưng chạy vẫn lỗi và không ra được kết quả mong muốn.
    Nhờ các bạn giúp đỡ gấp vì mình đã bị quá hạn nộp bài rồi nhưng chưa hoàn thành.
    Trân trọng.
    Đề bài:
    Write a python stand-alone script
    to get a count of all the single-family homes and multifamily structures in each of the 44
    fire response zones:(100 points)

    Each fire response zone has a corresponding feature class in the database with
    name structure “FireBoxMap_id”. There is also a building footprint feature class,
    BldgFoorprints, with a use code field named UseCode (1=single-family, 2=multi-family)

    First of all, you need to use ListFeatureClasses to create a list object that contains
    all the “FireBoxMap_id” feature classes. Then use a for loop structure to go over
    each zone.

    In the for loop structure for each zone feature class, you need to write codes to
    add two new fields to have the counts of single-family and multi-family buildings.
    (check the use of AddFieldgeoprocessing tool)

    Then select all the single-family buildings that are within the zone, get the count, assign the count to one the two new field for single-family counts; and then select all the multi-family buildings that are within the zone, get the count, assign the count to the other new field for multi-family counts.(check the use of CalculateFieldgeoprocessing tool)

    Tools you may need:
    AddFieldDelimiters
    for the where_clause
    MakeFeatureLayer
    (set the where_clause to only retrieve only single-family or multi-family buildings.
    SelectLayerByLocation
    (use “HAVE_THEIR_CENTER_IN” option)
    GetCount

    Đây là code mình đã viết, hiện đang tắc tại đoạn chọn phần giao và tính toán số điểm giao rồi in kết quả.

    import arcpy
    from arcpy import env
    env.overwriteOutput = True
    env.workspace = "C:/Users/Duong Ha Hai/Documents/Lab5_Part2/FireDepartment.gdb"

    fclist = arcpy.ListFeatureClasses()
    for fc in fclist:
    fcdesc = arcpy.Describe(fc)
    if "FireBoxMap" in fcdesc.name:
    print fcdesc.name
    fieldName1 = "Single_family"
    fieldName2 = "Multi_family"
    arcpy.AddField_management(fc, fieldName1, "LONG", field_length = 50)
    arcpy.AddField_management(fc, fieldName2, "LONG", field_length = 50)

    arcpy.MakeFeatureLayer_management("BldgFootPrints","Single","UseCode=1")
    arcpy.SelectLayerByLocation_management("Single","HAVE_THEIR_CENTER_IN",fcdesc.name)
    number_single=arcpy.CalculateField_management("Single","UseCode",1)
    print number_single

        arcpy.MakeFeatureLayer_management("BldgFootPrints","Multi","UseCode=2")
        arcpy.SelectLayerByLocation_management("Multi","HAVE_THEIR_CENTER_IN")
        number_multi=arcpy.CalculateField_management("Multi","UseCode",2)
        print number_multi

Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.