He creado un script Python que llama a un script R y luego lee la salida nuevamente en Python. Puedo ejecutar esta herramienta en ArcGIS Desktop (10.2.1) y funciona bien. Cuando publico como un servicio de geoprocesamiento, falla una vez que alcanza el script R. He revisado las rutas de los archivos y están bien. ¿Es posible llamar scripts externos desde un servicio de geoprocesamiento? Aquí está mi código.
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? En caso de que no conozca esa opción, aquí hay un ejemplo simple de cómo se ve en la práctica.
puede ver que establece explícitamente la ruta al script R.