我有一个使用arcpy模型的ArcGIS脚本。我想将其与Django结合使用。该脚本已成功在控制台上运行,但是,在使用Django运行时,我发现arcpy函数未运行。因此,我对其进行了简单的测试,并获得了相同的结果。
import arcpy
import os
def test_arcpy():
tempFolder = arcpy.env.scratchFolder
tempGDBPath = os.path.join(tempFolder, 'test.gdb')
arcpy.env.overwriteOutput = True
if not arcpy.Exists(tempGDBPath):
arcpy.AddMessage('create..')
arcpy.CreateFileGDB_management(tempFolder, 'test.gdb')
return arcpy.Exists(tempGDBPath)
from django.http import HttpResponse
from . import test
def t(request):
msg = str(test.test_arcpy())
return HttpResponse(msg)
如果在控制台中运行test.py,则返回True。但是如果在django中运行,则始终返回false。如果我不能解决它,我将无法在django中编写更困难的脚本。你能帮助我吗? 我在Flask app with ArcGIS, Arcpy does not run中发现了类似的问题,但该问题没有解决方案。
答案 0 :(得分:0)
我认为我可以使用子流程模型在控制台中运行arcpy脚本,然后将控制台消息返回到django函数。 但是我真的很想知道arcpy是否可以与django一起运行。
答案 1 :(得分:0)
我在Flask中遇到了与您相同的问题。
我检查了arcpy
中的源代码,发现在我从Flask触发arcgisscripting.pyd
时arcpy.Exists()
文件中有错误。我失去了任何提示。在ESRI在线博客上搜索了一些案例之后,我当然发现这是arcpy中的错误。所以我建议你:
from multiprocessing import Queue, Process
之类的消息队列arcpy.Exists()