所以我在做esri学院的Arcpy练习,但第一个练习中有一些我无法理解的东西。 它们提供了空间参考脚本和地图布局脚本
空间引用脚本看起来像
#import modules
import arcpy
#set workspace
arcpy.env.workspace = r"C:\EsriTraining\PythEveryone\RunningScripts\Polk_County\OregonPolk.gdb"
#set up a describe object for each fc in geodatabase
fcList = arcpy.ListFeatureClasses()
for fc in fcList:
desc = arcpy.Describe(fc)
print (desc.spatialReference.name)
print (fcList)
print ("Script completed")
地图布局脚本如下所示
#import modules
import arcpy
#set environment
aprx = arcpy.mp.ArcGISProject("CURRENT")
#specify layout
lyt = aprx.listLayouts("PolkGrdWater")[0]
#list layout text elements
eleList = lyt.listElements("TEXT_ELEMENT")
#loop through list and find all text elements with "Polk County" title
for ele in eleList:
if ele.text == "Polk County":
ele.text = "Polk County, OR"
#refresh the active view
aprx.save()
del aprx
print ("Script completed")
我知道地图布局脚本更适合在ArcGISpro Python窗口中运行,但我不明白的是,为什么我不能让地图布局脚本以与运行空间参考脚本相同的方式在Pycharm中运行,我想如果我更改了
#set environment
aprx = arcpy.mp.ArcGISProject("CURRENT")
到
#set environment
aprx = arcpy.mp.ArcGISProject("Polk_County")
或
#set environment
aprx = arcpy.mp.ArcGISProject(r"C:\EsriTraining\PythEveryone\RunningScripts\Polk_County")
但我想这与不理解设置工作环境和设置工作空间之间的区别有关
您需要传入正确类型的输入参数
对象通过传入ArcGIS Pro项目的路径(一个
.aprx
文件)来实例化如果您正在ArcGIS Pro中运行此程序,并且已经打开了一个项目,那么您只需传入
"CURRENT"
,并且附带的Python解释器理解您的意思是“此Pro项目的文件路径”。但是,这在Pycharm或类似IDE中不起作用,因为脚本没有任何关于您正在谈论的项目文件的参考:)因此,当您想在独立脚本中创建
ArcGISProject
对象时,请提供特定项目文件的完整路径,而不仅仅是它所在的目录。。。e、 g查看EsriHelp page about an ^{} object 了解更多详细信息和参数
不过,这个问题与
arcpy.env.workspace
无关。根据您感兴趣的特定arcpy函数,它可能需要设置environment workspace,也可能不需要设置。但是,这些工具通常是与数据相关的工具,因此您的工作空间将是地理数据库(用于要素类)或目录(用于形状文件)。在地理数据库中处理空间数据时,工作空间是相关的;在Pro项目中使用地图布局时,工作空间不相关在第一个示例脚本中,如果没有首先设置
arcpy.env.workspace
参数,arcpy.ListFeatureClasses
工具将无法工作。这就是arcpy有点奇怪的地方,因为其他工具(例如arcpy.CreateFeatureClass
)希望工作空间作为参数传入,而不是作为外部参数设置需要实践和经验(和/或阅读帮助页面)才能知道工作区何时重要,何时不重要
相关问题 更多 >
编程相关推荐