Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Arcpy脚本环境运行问题工作空间与环境_Python_Arcgis_Arcpy - Fatal编程技术网

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

Python Arcpy脚本环境运行问题工作空间与环境,python,arcgis,arcpy,Python,Arcgis,Arcpy,所以我在做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 fo

所以我在做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")
地图布局脚本如下所示

#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")


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

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

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

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

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

aprx=arcpy.mp.ArcGISProject(r“C:\esritaining\PythEveryone\Polk_County\Polk.aprx”)
查看Esri了解更多详细信息和参数


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

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


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

非常感谢您提供了内容丰富、经过深思熟虑的答案!