J'ai créé un script Python qui appelle un script R et lit ensuite la sortie en Python. Je peux exécuter cet outil dans ArcGIS Desktop (10.2.1) et cela fonctionne très bien. Lorsque je publie en tant que service de géotraitement, il échoue une fois qu'il a atteint le script R. J'ai vérifié les chemins de fichiers et ils vont bien. Est-il même possible d'appeler des scripts externes à partir d'un service de géotraitement? Voici mon code.
import sys, os, arcpy
arcpy.AddMessage("Loaded Python Imports...")
try:
#User Input
lat = arcpy.GetParameterAsText(0)
long = arcpy.GetParameterAsText(1)
arcpy.AddMessage("LAT: " + "".join(lat))
arcpy.AddMessage("LONG: " + "".join(long))
#Create R Command
rScript = "test.R"
args = " ".join([lat, long])
RCMD = "R --slave --vanilla --args "
cmd = RCMD + args + " < " + rScript
#Execute
os.system(cmd)
#Render the Results
output = open("FILE PATH")
finalNumber = output.read()
print("The output is: " + " ".join(finalNumber))
arcpy.AddMessage("The output is: " + " ".join(finalNumber))
output.close()
#Delete Text File
os.remove("FILE PATH")
except Exception as e:
print e.message
arcpy.AddError(e.message)
Rscript test.R arg1 arg2 arg3
place? Juste au cas où vous ne seriez pas au courant de cette option, voici un exemple simple de ce à quoi cela ressemble dans la pratique.