0

我刚开始使用 Python,但遇到了一些问题。我已经为 ArcGIS 编写了一些脚本,并且有一些重复出现的内容。所以我认为将它放在我可以轻松再次使用的模块中会很聪明。

所以现在我有两个脚本,script.pytoolbox.py. 我的脚本工作正常,所以我复制并粘贴了我需要的部分,对其进行了一些编辑,除了使用创建的消息之外,一切都很顺利gp.Addmessage

script.py 将创建消息“Hello Stackoverflow”,但来自 toolbox.py 的消息不显示。这是为什么?它加载了工具箱,因为我以后可以使用它,所以它重新识别 gp 对象。

我有点卡在这里,希望能够从模块内部打印消息,以告知该工具的用户正在发生的事情。

script.py

import os, sys, arcgisscripting

# Create the Geoprocessor object
gp = arcgisscripting.create()

gp.AddMessage("# Hello Stackoverflow")

import toolbox
toolbox.loadToolbox

toolbox.py

def loadToolbox:
    try:
      some code
      gp.AddToolbox(path)
      gp.AddMessage("# Toolbox loaded")
    except:
      gp.AddMessage("# Toolbox not found")
4

1 回答 1

0

您的代码有两个问题:

  1. 你从不调用方法,loadToolBox你只引用它。添加()

    toolbox.loadToolbox()
    
  2. 您的loadToolbox()函数不gp作为参数。如果gp是全局变量,那么它对toolbox模块不可见(全局变量仅在当前模块中可见)。

    添加gp为参数,调用时传入loadToolbox。在script.py

    toolbox.loadToolbox(gp)
    

    并在toolbox.py

    def loadToolbox(gp):
        # rest of function
    
于 2013-04-14T13:26:25.187 回答