在ArcGIS 10中使用python

ArcGIS 10 采用了 ArcPy,这是一种 Python 站点包,它涵盖并进一步加强了 ArcGIS 9.2/9.3中所采用的 arcgisscripting 模块的功能。ArcPy 提供了一种用于开发 Python脚本的功能丰富的动态环境,同时提供每个函数、模块和类的代码完成和集成文档。
使用以 ArcPy 编写的 ArcGIS 应用程序和脚本的优势在于,可以访问并使用由来自多种不同领域的 GIS专业人员和程序员开发的大量 Python 模块。使用 Python 中的 ArcPy 的另一个主要原因是,Python是一种通用的编程语言,易于学习和使用。通过解释和动态输入这种编程语言,用户可以在交互式环境中快速地创建脚本原型并进行测试,同时这种编程语言功能强大,可编写大型应用程序。
# Importing arcpy # import arcpy # Set the workspaceenvironment and run Clip_analysis arcpy.env.workspace ="C:/Data/Tongass" arcpy.Clip_analysis("standb4", 'clipcov","standby_clip", "1.25")
在导入 ArcPy 之后,可以运行随 ArcGIS 安装的标准工具箱中的所有地理处理工具。
导入模块
模块为通常包含函数和类的 Python 文件。有一系列模块支持ArcPy,包括制图模块(arcpy.mapping)、Spatial Analyst 模块 (arcpy.sa)和Geostatistical Analyst 模块 (arcpy.ga)。
要导入整个模块,请使用导入模块:
# Import all of arcpy # import arcpy.mapping
当然,Python 还具有很多其他核心模块和第三方模块。如果还想使用 Python 的核心 os 和 sys模块,可以使用相似的导入方式:
# Import arcpy, os and sys # import arcpy import os importsys
在很多情况下,用户可能不想使用整个模块或无需使用整个模块。如果只导入某一模块的一部分,可以使用from-import语句。在下例中,将导入 env 类(env 类包含所有地理处理环境)。现在无需以 arcpy.env 的形式访问环境,而可以将其简化为env。
# Import env from arcpy and set the workspace environment #from arcpy import env env.workspace = "c:/data"
遵循相同的思路,有时用户可能需要注意:如何对模块或模块的一部分进行标识以使脚本更具可读性,以及对于首选项来说默认名称可能过长。在上述任一情况下,均可以使用from-import-as 的形式。与先前的示例相同,下面的示例中也将导入 env 类,但会指定 ENV 作为 env类的名称:
# Import env from arcpy as ENV and set the workspaceenvironment # from arcpy import env as ENV ENV.workspace ="c:/data"
可以使用相同方式导入制图模块:
# Import the mapping module from arcpy as MAP and create aMapDocument # object # from arcpy import mapping as MAP mxd =MAP.MapDocument("C:/maps/basemap.mxd")
其他版本的导入操作使用 from-import-as-*的形式。模块的内容将被直接导入到命名空间中,这表示用户随后可以直接使用所有这些内容,而无需为它们添加前缀。例如:
# Import env from arcpy as * and set the workspace environment# from arcpy import env as * workspace = "c:/data"
但是,使用此方法存在一些风险。具有相同名称的其他对象、变量、模块等将被覆盖,另外在使用大型模块时,命名空间可能会变得异常拥挤和杂乱。可以此方式考虑该问题:在下例中,管理模块和分析模块都将被导入为*。这两个模块都具有“裁剪”工具。如果现在尝试使用“裁剪”工具,那么实际使用的会是哪种“裁剪”工具?答案是后者,但是此方法可能导致在阅读脚本时出现不确定或难以阅读的情况。
# Import the management and analysis modules from arcpy as * #from arcpy import management as * from arcpy import analysis as * #Which Clip is it? # Clip(
但是在某些情况下,from-import-* 可以简化代码,例如,在使用 ArcGIS 空间分析扩展模块的 sa模块的情况下。sa 模块的优势之一在于,可以在一行中嵌套多个类和函数以生成输出栅格对象。
许可:
以下两个实例都需要空间分析扩展模块来运行。
# Import arcpy and the sa module as * # import arcpy fromarcpy.sa import * arcpy.CheckOutExtension("spatial") # Get inputparameters # inRaster1 = arcpy.GetParameterAsText(0) inRaster2 =arcpy.GetParameterAsText(1) inRaster3 = arcpy.GetParameterAsText(2)outRaster = (Raster(inRaster1) + (Raster(inRaster2) –(Raster(inRaster3))
现在比较下一个代码块,此代码块使用常规 import-from 语句。现在假设再向代码中添加一些类和函数 -即使只为每个函数和类添加 sa.,代码的体积也将迅速增加,这将破坏可读性并且使代码行变得更加庞大。
# Import arcpy and the sa module # import arcpy from arcpyimport sa arcpy.CheckOutExtension("spatial") # Get input parameters# inRaster1 = arcpy.GetParameterAsText(0) inRaster2 =arcpy.GetParameterAsText(1) inRaster3 = arcpy.GetParameterAsText(2)outRaster = (sa.Raster(inRaster1) + (sa.Raster(inRaster2) –(sa.Raster(inRaster3))
路径和导入
使用导入语句时,Python 将在以下位置中(并按以下顺序)查找匹配该名称的模块:
在 PYTHONPATH 系统环境变量中指定的路径
一组标准 Python 文件夹(当前文件夹、c:python2xlib、c:python2xLibsite-packages等)
在 1 和 2 中找到的任意 .pth 文件中所指定的路径
如果尚未安装 Python 2.6,则此程序使用 ArcGIS 10.0产品的安装程序来安装。该安装程序还会将文件Desktop10.pth(或 Engine10.pth、Server10.pth)添加到python26Libsite-packages 中。此文件中包含的两行内容为系统的 ArcGIS 安装程序的 arcpy 和 bin文件夹的路径。在 Python 2.6 版中,要成功导入 ArcPy 需要这两个路径。
使用导入语句时,Python 将参照系统的 PYTHONPATH环境变量来查找模块文件。此变量将设置为一系列目录。
提示:
如果导入 ArcPy 的操作导致以下任一种错误,将无法找到所需模块:
导入错误:未找到名称为 arcpy 的模块(ImportError: No module namedarcpy)
导入错误:未找到名称为 arcgisscripting 的模块(ImportError: No module namedarcgisscripting)
要解决此问题,请使用 Windows 资源管理器浏览至 python26Libsite-packages文件夹,然后添加或编辑Desktop10.pth文件。此文件应包含以下两行内容(如果与实际不符,请将其更改为您的系统路径):
c:Program FilesArcGISDesktop10.0arcpy c:ProgramFilesArcGISDesktop10.0bin
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在ArcGIS使用Python追加数据通常涉及到使用ArcPy模块的工具和函数。以下是一些基本的步骤来追加数据: 1. 导入所需的模块和函数: ``` import arcpy from arcpy import env ``` 2. 设置工作空间: ``` env.workspace = "C:/data" ``` 这里将工作空间设置为 "C:/data",也可以设置为 ArcGIS 的任何路径。 3. 使用追加工具: ``` arcpy.Append_management("input_table", "target_table", "NO_TEST") ``` 这里 "input_table" 是要追加到 "target_table" 的表。 "NO_TEST" 参数指示追加工具不进行数据完整性检查,因此如果两个表的结构不完全匹配,则仍然可以执行追加操作。 还可以使用其他参数,例如 "SCHEMA_TYPE"、"FIELD_MAPPING" 等,以更精细地控制追加操作。 这是一个非常简单的示例,仅适用于将表追加到另一个表。在实际使用,可能需要处理更复杂的情况,例如将数据追加到地理数据库或要素类。可以使用 ArcPy 的其他工具和函数来完成这些操作。 ### 回答2: 在ArcGIS使用Python追加是指使用Python脚本进行数据追加操作。数据追加是指将一个数据集或表格的内容添加到另一个数据集或表格。 在ArcGIS使用Python进行数据追加的步骤如下: 1、首先,导入ArcPy模块,该模块提供了与ArcGIS进行交互的功能。 2、接下来,使用arcpy.Append_management()函数来执行数据追加操作。在函数,需要指定要追加的源数据集和目标数据集,以及任何其他的追加选项。 3、可以使用变量来存储数据集的路径,以便在脚本多次使用。 4、运行脚本并观察数据追加的结果。 例如,以下是一个简单的示例代码,用来在ArcGIS使用Python追加数据: import arcpy # 指定源数据集和目标数据集的路径 source_data = "C:/data/source.gdb/source_featureclass" target_data = "C:/data/target.gdb/target_featureclass" # 执行数据追加操作 arcpy.Append_management(source_data, target_data, "NO_TEST") 在这个示例,源数据集为C:/data/source.gdb文件夹的source_featureclass要追加到目标数据集C:/data/target.gdb文件夹的target_featureclass,函数参数"NO_TEST"表示不进行数据匹配校验。 通过使用类似的代码,我们可以根据实际需求进行数据追加操作。在ArcGIS使用Python进行数据追加可以提高工作效率和数据处理的自动化程度,为数据管理和分析提供便利。 ### 回答3: 在ArcGIS使用Python追加数据可以通过arcpy模块实现。arcpy是ArcGIS提供的用于专业级地理信息系统分析和处理的Python模块。 首先,我们需要导入arcpy模块。可以使用以下代码行实现导入: ``` import arcpy ``` 然后,我们使用arcpy的`Append_management`函数来追加数据。这个函数接受输入数据和目标数据集作为参数,并将输入数据追加到目标数据集。 下面是一个例子,假设我们要追加一个名为"points.shp"的点要素类到另一个名为"existing_data.gdb"的现有地理数据库的"points"数据集: ``` # 定义输入和输出路径 input_data = "C:/data/points.shp" output_data = "C:/data/existing_data.gdb/points" # 使用Append_management函数进行追加 arcpy.Append_management(input_data, output_data) ``` 在实际操作,可以根据具体需求设置其他参数,例如使用`field_mappings`参数来定义字段映射,或使用`schema_type`参数来控制如何处理字段结构。 此外,如果要追加多个数据集,可以在`Append_management`函数多次使用该函数进行追加,或者将所有数据集合并为一个数据集,再进行追加。 总之,ArcGISPython追加数据是通过arcpy模块的`Append_management`函数来实现的。可以根据具体需求设置参数,实现数据的追加操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值