写一个Python2.7的arcgis10.22工具箱脚本:删除数据除Object ID,Shape 和 Shape_Length/Shape_Area 字段外的所有字段
时间: 2023-12-14 09:36:20 浏览: 134
下面是一个Python 2.7的ArcGIS 10.2.2工具箱脚本,可以删除数据除Object ID,Shape和Shape_Length/Shape_Area字段外的所有字段:
```python
# Import arcpy module
import arcpy
# Get input feature class and output feature class
input_fc = arcpy.GetParameterAsText(0)
output_fc = arcpy.GetParameterAsText(1)
# Get field list of input feature class
fields = arcpy.ListFields(input_fc)
# Create a list of field names to keep
field_names = ["OID@", "SHAPE@", "SHAPE_LENGTH", "SHAPE_AREA"]
# Loop through input feature class fields and add field names to field_names list
for field in fields:
if not (field.name in field_names): # If the field name is not in the field_names list
field_names.append(field.name) # Add the field name to the field_names list
# Use Make Feature Layer to create a layer from the input feature class
arcpy.MakeFeatureLayer_management(input_fc, "temp_layer")
# Use Add Field Delimiters to get the correct syntax for field names
delimited_fields = arcpy.AddFieldDelimiters("temp_layer", field_names[0])
for i in range(1, len(field_names)):
delimited_fields += "," + arcpy.AddFieldDelimiters("temp_layer", field_names[i])
# Use Copy Features to create the output feature class with only the specified fields
arcpy.CopyFeatures_management("temp_layer", output_fc, delimited_fields)
# Delete the temporary layer
arcpy.Delete_management("temp_layer")
```
这个脚本首先获取输入要素类和输出要素类的路径,然后获取输入要素类的字段列表。然后,它创建一个包含要保留字段名称的列表,并将Object ID、Shape和Shape_Length/Shape_Area字段添加到该列表中。然后,它循环遍历输入要素类的字段,并将不在保留字段列表中的字段名称添加到该列表中。接下来,它使用Make Feature Layer工具创建一个临时图层,并使用Add Field Delimiters函数获取正确的语法来引用字段名称。最后,它使用Copy Features工具创建一个只包含指定字段的输出要素类,并删除临时图层。
要将此脚本添加到工具箱中,请按照以下步骤操作:
1. 在ArcMap中打开Catalog窗口。
2. 右键单击“我的工具箱”并选择“添加工具箱”。
3. 导航到脚本所在的文件夹,并选择该脚本。
4. 在“工具箱”窗口中,右键单击脚本并选择“属性”。
5. 在“属性”对话框中,添加两个输入参数(input_fc和output_fc)。
6. 单击“保存”以保存更改。现在,您可以在工具箱中使用此脚本。
阅读全文