Arcpy脚本环境运行问题工作空间与环境

2024-09-28 21:56:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做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")

但我想这与不理解设置工作环境和设置工作空间之间的区别有关


Tags: textimport脚本environment地图空间mp布局
1条回答
网友
1楼 · 发布于 2024-09-28 21:56:25

您需要传入正确类型的输入参数

对象通过传入ArcGIS Pro项目的路径(一个.aprx文件)来实例化

如果您正在ArcGIS Pro中运行此程序,并且已经打开了一个项目,那么您只需传入"CURRENT",并且附带的Python解释器理解您的意思是“此Pro项目的文件路径”。但是,这在Pycharm或类似IDE中不起作用,因为脚本没有任何关于您正在谈论的项目文件的参考:)

因此,当您想在独立脚本中创建ArcGISProject对象时,请提供特定项目文件的完整路径,而不仅仅是它所在的目录。。。e、 g

aprx = arcpy.mp.ArcGISProject(r"C:\EsriTraining\PythEveryone\Polk_County\Polk.aprx")

查看EsriHelp page about an ^{} object了解更多详细信息和参数


不过,这个问题与arcpy.env.workspace无关。根据您感兴趣的特定arcpy函数,它可能需要设置environment workspace,也可能不需要设置。但是,这些工具通常是与数据相关的工具,因此您的工作空间将是地理数据库(用于要素类)或目录(用于形状文件)。在地理数据库中处理空间数据时,工作空间是相关的;在Pro项目中使用地图布局时,工作空间不相关

在第一个示例脚本中,如果没有首先设置arcpy.env.workspace参数,arcpy.ListFeatureClasses工具将无法工作。这就是arcpy有点奇怪的地方,因为其他工具(例如arcpy.CreateFeatureClass)希望工作空间作为参数传入,而不是作为外部参数设置

需要实践和经验(和/或阅读帮助页面)才能知道工作区何时重要,何时不重要

相关问题 更多 >