当前位置:   article > 正文

【ArcGIS之AI写Python代码】(2)添加投影信息及属性字段_arcgis添加投影

arcgis添加投影

        你能想到吗?原来AI还可以这么玩。在零Python编程基础的情况,是否能在ChatGPT等AI的加持下,写出适合Arcgis软件运行的脚本代码?

        因为这个突发奇想,本人开启了零Python编程基础用AI编写适合ArcGIS运行的脚本代码的挑战之路,本期挑战对shapeflie文件添加投影信息及属性字段。

一、基本要求

        用AI编写一段Python代码,通过运行,实现对shapeflie文件添加投影信息及属性字段。

二、实现过程

1、设置工作空间和输入/输出文件路径

  1. arcpy.env.workspace = r"C:\path\to\workspace"
  2. input_shapefile = r"C:\path\to\input.shp"
  3. output_shapefile = r"C:\path\to\output.shp"

2、 定义国家2000投影坐标信息

projection = arcpy.SpatialReference("China Geodetic Coordinate System 2000")

3、 添加投影坐标信息到.shp文件

arcpy.DefineProjection_management(input_shapefile, projection)

4、添加字段和属性

  1. fields = [
  2. ["DKBH", "LONG", 9],
  3. ["DKMC", "TEXT", 50],
  4. ["XMMC", "TEXT", 255]
  5. ]

5、添加字段到.shp文件

  1. for field in fields:
  2.     field_name = field[0]
  3.     field_type = field[1]
  4.     field_length = field[2]
  5.     arcpy.AddField_management(input_shapefile, field_name, field_type, field_length)

三、代码解读

完整代码如下:

1、添加投影信息

  1. import arcpy
  2. # 设置工作空间和输入/输出文件路径
  3. arcpy.env.workspace = r"C:\path\to\workspace"
  4. input_shapefile = r"C:\path\to\input.shp"
  5. output_shapefile = r"C:\path\to\output.shp"
  6. # 定义国家2000投影坐标信息
  7. projection = arcpy.SpatialReference("China Geodetic Coordinate System 2000")
  8. # 添加投影坐标信息到.shp文件
  9. arcpy.DefineProjection_management(input_shapefile, projection)
  10. # 创建输出文件的副本(以保存投影坐标信息)
  11. arcpy.CopyFeatures_management(input_shapefile, output_shapefile)
  12. print("投影坐标信息已成功添加到.shp文件!")

        此脚本使用`arcpy`库来访问ArcGIS功能,并使用`DefineProjection_management`函数将投影坐标信息添加到.shp文件中。然后,使用`CopyFeatures_management`函数创建具有投影坐标信息的输出.shp文件。

2、添加字段

  1. import arcpy
  2. # 设置工作空间和输入/输出文件路径
  3. arcpy.env.workspace = r"C:\path\to\workspace"
  4. input_shapefile = r"C:\path\to\input.shp"
  5. output_shapefile = r"C:\path\to\output.shp"
  6. # 添加字段和属性
  7. fields = [
  8. ["DKBH", "LONG", 9],
  9. ["DKMC", "TEXT", 50],
  10. ["XMMC", "TEXT", 255]
  11. ]
  12. # 添加字段到.shp文件
  13. for field in fields:
  14. field_name = field[0]
  15. field_type = field[1]
  16. field_length = field[2]
  17. arcpy.AddField_management(input_shapefile, field_name, field_type, field_length)
  18. # 创建输出文件的副本(以保存添加字段后的.shp文件)
  19. arcpy.CopyFeatures_management(input_shapefile, output_shapefile)
  20. print("属性字段已成功添加到.shp文件!")

        此脚本使用`arcpy`库来访问ArcGIS功能,并使用`AddField_management`函数来添加字段到.shp文件中。您可以根据需要修改`fields`列表来定义更多的字段及其属性。

四、代码改进

        以上是分两个代码实现,也可以通过整合优化代码,将两段代码结合起来,另外添加字段还可以进一步优化,比如,如果字段已存在,可能会报错。这时可以增加一个读取shapeflie字段名称的代码,如果发现字段已存在,可以不再执行添加,或者先删除后添加。

  1. # 遍历要添加的字段列表,检查是否已存在
  2. for field in fields:
  3. field_name = field[0]
  4. if arcpy.ListFields(input_shapefile, field_name):
  5. arcpy.DeleteField_management(input_shapefile, field_name)

        最后合成的代码:

  1. import arcpy
  2. # 设置工作空间和输入/输出文件路径
  3. arcpy.env.workspace = r"C:\path\to\workspace"
  4. input_shapefile = r"C:\path\to\input.shp"
  5. output_shapefile = r"C:\path\to\output.shp"
  6. # 定义国家2000投影坐标信息
  7. projection = arcpy.SpatialReference("China Geodetic Coordinate System 2000")
  8. # 添加投影坐标信息到.shp文件
  9. arcpy.DefineProjection_management(input_shapefile, projection)
  10. # 创建输出文件的副本(以保存投影坐标信息)
  11. arcpy.CopyFeatures_management(input_shapefile, output_shapefile)
  12. # 添加字段和属性
  13. fields = [
  14. ["DKBH", "LONG", 9],
  15. ["DKMC", "TEXT", 50],
  16. ["XMMC", "TEXT", 255]
  17. ]
  18. # 遍历要添加的字段列表,检查是否已存在
  19. for field in fields:
  20. field_name = field[0]
  21. if arcpy.ListFields(input_shapefile, field_name):
  22. arcpy.DeleteField_management(input_shapefile, field_name)
  23. # 添加字段到.shp文件
  24. for field in fields:
  25. field_name = field[0]
  26. field_type = field[1]
  27. field_length = field[2]
  28. arcpy.AddField_management(input_shapefile, field_name, field_type, field_length)
  29. # 创建输出文件的副本(以保存添加字段后的.shp文件)
  30. arcpy.CopyFeatures_management(input_shapefile, output_shapefile)
  31. print("投影坐标信息和属性字段已成功添加到.shp文件!")

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号