Arcpy基础方法之Tools&Toolboxes

本文详细介绍了如何在Python环境下导入并访问ArcGIS自定义工具箱中的工具,包括导入工具箱、列出所有工具箱及特定类别的工具、以及获取工具的访问方法与参数等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.csdn.net/gisinfo/article/details/6659794

 

1.引入自定义的工具箱

  1. c:\python 
  2.  
  3. >>>import arcpy 
  4. >>>arcpy.ImportToolbox("c:/PCovertL.tbx"
c:\python

>>>import arcpy
>>>arcpy.ImportToolbox("c:/PCovertL.tbx")

2.List工具箱中访问工具的方法

1)列出所有工具箱,查看别名

  1. c:\python 
  2.  
  3. >>>import arcpy 
  4.  
  5. >>> toolboxList=arcpy.ListToolboxes() 
  6. >>> for toolbox in toolboxList: 
  7. ...  print toolbox 
  8. ... 
c:\python

>>>import arcpy

>>> toolboxList=arcpy.ListToolboxes()
>>> for toolbox in toolboxList:
...  print toolbox
...

  1. 3D Analyst Tools(3d
  2.  
  3. Analysis Tools(analysis) 
  4. Cartography Tools(cartography) 
  5. Conversion Tools(conversion) 
  6. Data Interoperability Tools(interop) 
  7. Data Management Tools(management) 
  8. Editing Tools(edit) 
  9. Geocoding Tools(geocoding) 
  10. Geostatistical Analyst Tools(ga) 
  11. Linear Referencing Tools(lr) 
  12. Multidimension Tools(md) 
  13. Network Analyst Tools(na) 
  14. Parcel Fabric Tools(fabric) 
  15. Samples(samples) 
  16. Schematics Tools(schematics) 
  17. Server Tools(server) 
  18. Spatial Analyst Tools(sa) 
  19. Spatial Statistics Tools(stats) 
  20. Tracking Analyst Tools(ta) 
  21. Coverage Tools(arc) 
  22. P_Covert_L(PTL) 
3D Analyst Tools(3d)

Analysis Tools(analysis)
Cartography Tools(cartography)
Conversion Tools(conversion)
Data Interoperability Tools(interop)
Data Management Tools(management)
Editing Tools(edit)
Geocoding Tools(geocoding)
Geostatistical Analyst Tools(ga)
Linear Referencing Tools(lr)
Multidimension Tools(md)
Network Analyst Tools(na)
Parcel Fabric Tools(fabric)
Samples(samples)
Schematics Tools(schematics)
Server Tools(server)
Spatial Analyst Tools(sa)
Spatial Statistics Tools(stats)
Tracking Analyst Tools(ta)
Coverage Tools(arc)
P_Covert_L(PTL)

(自定义工具箱,最后在工具箱建立之初建立别名

作用:方便查出import自定义工具箱的工具访问方法,arcpy.ListTools("*_PTL"))

2)列出某类工具箱下工具的访问方法

  1. >>> arcpy.ListTools("*_ta"
  2. [u'ConcatenateDateAndTimeFields_ta', u'MakeTrackingLayer_ta'
>>> arcpy.ListTools("*_ta")
[u'ConcatenateDateAndTimeFields_ta', u'MakeTrackingLayer_ta']

3)列出所有工具箱下工具的访问方法与参数

  1. >>>toolList=arcpy.ListTools() 
  2.  
  3. >>>for tool in toolList: 
  4.  
  5. >>>  print tool 
  6.  
  7. >>>  print arcpy.Usage(tool) 
  8.  
  9. Script(加{}表示为非必填项) 
  10. Script(Input_Features, Output_Feature_Class, {Line_Field}, {Sort_Field}, {Close_Line}) 
  11.  

 

import arcpy import os def batch_kml_to_shp(input_folder, output_folder, keep_intermediate=False): # 环境检查 arcpy.AddMessage("=== 环境验证 ===") arcpy.AddMessage(f"ArcGIS Pro版本: {arcpy.GetInstallInfo()['Version']}") # 路径验证 if not arcpy.Exists(input_folder): arcpy.AddError("错误: 输入文件夹不存在") return if not os.access(output_folder, os.W_OK): arcpy.AddError("错误: 输出文件夹不可写") return # 许可检查 if arcpy.CheckExtension("kml") != "Available": arcpy.AddError("错误: 缺少KML转换扩展许可") return else: arcpy.CheckOutExtension("kml") try: arcpy.env.overwriteOutput = True arcpy.AddMessage("环境设置完成") # 创建临时GDB temp_gdb_path = os.path.join(output_folder, "TempKMLConversion.gdb") if arcpy.Exists(temp_gdb_path): arcpy.Delete_management(temp_gdb_path) temp_gdb = arcpy.CreateFileGDB_management(output_folder, "TempKMLConversion.gdb")[0] arcpy.AddMessage(f"临时GDB创建于: {temp_gdb}") # 获取KML文件列表 kml_files = [f for f in os.listdir(input_folder) if f.lower().endswith('.kml')] if not kml_files: arcpy.AddError("错误: 未找到KML文件") return arcpy.AddMessage(f"找到{len(kml_files)}个KML文件") for kml_file in kml_files: try: kml_path = os.path.join(input_folder, kml_file) base_name = os.path.splitext(kml_file)[0] # KML转换 output_layer = os.path.join(temp_gdb, base_name) arcpy.AddMessage(f"正在转换: {kml_file} → {output_layer}") arcpy.KMLToLayer_conversion(kml_path, output_layer, "NO_GROUNDOVERLAY") # 定位Placemarks要素类 arcpy.AddMessage("定位转换结果...") feature_classes = arcpy.ListFeatureClasses("*", "ALL", output_layer) placemarks = [fc for fc in feature_classes if "Placemarks" in fc] if not placemarks: arcpy.AddWarning(f"警告: {output_layer}中未找到Placemarks要素类") continue # 输出SHP for fc in placemarks: shp_name = f"{base_name}_{fc.split('_')[-1]}.shp" shp_path = os.path.join(output_folder, shp_name) arcpy.AddMessage(f"生成: {shp_name}") arcpy.FeatureClassToFeatureClass_conversion( os.path.join(output_layer, fc), output_folder, shp_name ) except arcpy.ExecuteError: arcpy.AddWarning(f"处理失败: {kml_file}\n{arcpy.GetMessages(2)}") except Exception as e: arcpy.AddWarning(f"未知错误: {kml_file}\n{str(e)}") finally: # 清理和许可归还 if not keep_intermediate and arcpy.Exists(temp_gdb_path): arcpy.Delete_management(temp_gdb_path) arcpy.AddMessage("临时文件已清理") arcpy.CheckInExtension("kml") arcpy.AddMessage("处理完成") if __name__ == "__main__": input_folder = arcpy.GetParameterAsText(0) output_folder = arcpy.GetParameterAsText(1) keep_intermediate = arcpy.GetParameter(2) batch_kml_to_shp(input_folder, output_folder, keep_intermediate)运行显示无kml许可但是用软件自带的kml转shp可以运行成功
最新发布
06-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值