全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
ARCGIS 10 中引入了 ArcPy,这是一个 Python 站点包,它涵盖并进一步加强了 ARCGIS 9.2 中所采用的 ARCGISscripting 模块的功能。ArcPy 提供了一种用于开发 Python 脚本的功能丰富的动态环境,同时提供每个函数、模块和类的代码实现和集成文档。
使用以 ArcPy 编写的 ARCGIS 应用程序和脚本的优势在于,可以访问并使用由来自多种不同领域的 GIS 专业人员和程序员开发的大量 Python 模块。使用 Python 中的 ArcPy 的另一个主要原因是,Python 是一种通用的编程语言,易于学习和使用。通过这一解释和动态型编程语言,用户可以在交互式环境中快速地创建脚本原型并进行测试,同时这种编程语言功能强大,可编写大型应用程序。
# Importing arcpy
#
import arcpy
# Set the workspace environment and run Clip_analysis
arcpy.env.workspace = "C:/Data/Tongass"
arcpy.Clip_analysis("standb4", "clipcov", "standby_clip", "1.25")
在导入 ArcPy 之后,可以运行随 ARCGIS 安装的标准工具箱中的所有地理处理工具。
分析工具箱
制图工具箱
转换工具箱
数据管理工具箱
编辑工具箱
地理编码工具箱
线性参考工具箱
多维工具箱
空间统计工具箱
导入模块
模块通常是一个包含函数和类的 Python 文件。ArcPy 由一系列模块支持,包括数据访问模块 (arcpy.da)、制图模块 (arcpy.mapping)、ArcGIS Spatial Analyst 模块 (arcpy.sa) 以及 ArcGIS Network Analyst 模块 (arcpy.na)。
要导入整个模块,请使用“导入”模块:
# Import only arcpy.mapping
#
import arcpy.mapping
当然,Python 还具有很多其他核心模块和第三方模块。如果还想使用 Python 的核心 os 和 sys 模块,可以使用相似的导入方式:
# Import arcpy, os and sys
#
import arcpy
import os
import sys
在很多情况下,用户可能不想使用整个模块或无需使用整个模块。如果只导入某一模块的一部分,可以使用 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 workspace environment
#
from arcpy import env as ENV
ENV.workspace = "c:/data"
可以使用相同方式导入制图模块:
# Import the mapping module from arcpy as MAP and create a MapDocument
# object
#
from arcpy import mapping as MAP
mxd = MAP.MapDocument("C:/maps/basemap.mxd")
其他版本的导入操作使用 from-import-* 的形式。模块的内容将被直接导入到命名空间中,这表示用户随后可以直接使用所有这些内容,而无需为它们添加前缀。例如:
# Import management from arcpy as *
#
from arcpy.management import *
但是,使用此方法存在一些风险。具有相同名称的其他对象、变量、模块等将被覆盖,另外在使用大型模块时,命名空间可能会变得异常拥挤和杂乱。可以此方式考虑该问题:在下例中,管理模块和分析模块都将被导入为 *。这两个模块都具有“裁剪”工具。如果现在尝试使用“裁剪”工具,那么实际使用的会是哪种“裁剪”工具?答案是后者,但是此方法可能导致在阅读脚本时出现不确定或难以阅读的情况。
# Import the management and analysis modules from arcpy as *
#
from arcpy.management import *
from arcpy.analysis import *
# Which Clip is it?
#
Clip("standb4", "clipcov", "standby_clip", "1.25")
但是在某些情况下,from-import-* 可以简化代码,例如,在使用 ArcGIS Spatial Analyst 的 sa 模块的情况下。sa 模块的优势之一在于,可以在一行中嵌套多个类和函数以生成输出栅格对象。
许可:
以下两个实例都需要 ArcGIS Spatial Analyst 来运行。
# Import arcpy and the sa module as *
#
import arcpy
from arcpy.sa import *
arcpy.CheckOutExtension("spatial")
# Get input parameters
#
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 arcpy import 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:\python2x\lib、c:\python2x\Lib\site-packages 等)
在 1 和 2 中找到的任意 .pth 文件中所指定的路径
有关这方面的详细信息,请参阅以下内容:http://docs.python.org/install/index.html#modifying-python-s-search-path。
如果尚未安装 Python 2.7,则此程序使用 ArcGIS 10.5.1 产品的安装程序来安装。该安装程序还会将文件 Desktop10.3.pth(或者 Engine10.3.pth 或 Server10.3.pth)添加到 python27\Lib\site-packages 中。此文件中包含两行内容为系统中 ArcGIS 安装程序的 arcpy 和 bin 文件夹路径。在 Python 2.7 版本中,要成功导入 ArcPy 需要这两个路径。
使用导入语句时,Python 将参照系统的 PYTHONPATH 环境变量来查找模块文件。此变量将设置为一系列目录。
提示:
如果导入 ArcPy 的操作导致以下任一种错误,将无法找到所需模块:
导入错误:未找到名称为 arcpy 的模块
导入错误:未找到名称为 arcgisscripting 的模块
要解决此问题,请使用 Windows 资源管理器浏览至 python27\Lib\site-packages 文件夹,然后添加或编辑 Desktop10.3.pth 文件。此文件应包含以下三行内容(如果与实际不符,请将其更改为您的系统路径):
c:\Program Files\ArcGIS\Desktop10.3\arcpy
c:\Program Files\ArcGIS\Desktop10.3\bin
c:\Program Files\ArcGIS\Desktop10.3\ArcToolbox\Scripts