Saya telah membuat skrip Python yang memanggil skrip R dan kemudian membaca hasilnya kembali menjadi Python. Saya dapat menjalankan alat ini di ArcGIS Desktop (10.2.1) dan berfungsi dengan baik. Ketika saya menerbitkan sebagai layanan geoproses, gagal setelah mencapai skrip R. Saya telah memeriksa path file dan semuanya baik-baik saja. Apakah mungkin untuk memanggil skrip eksternal dari layanan geoprocessing? Ini kode saya.
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)
python
arcgis-server
r
geoprocessing-service
Jeremy Hamm
sumber
sumber
Rscript test.R arg1 arg2 arg3
? Kalau-kalau Anda tidak mengetahui opsi itu, berikut adalah contoh sederhana dari apa yang terlihat dalam praktiknya.Jawaban:
Saya menemukan artikel ini: Mengintegrasikan program eksternal di dalam ModelBuilder , ini lebih tua dan awalnya terlihat seperti di luar topik, tetapi jika Anda melihat ini :, Anda dapat melihat bahwa itu secara eksplisit menetapkan path ke script R.
Ketika skrip geoproses Anda berjalan di server, skrip berjalan di folder awal di dalam
jobs
direktori. Bergantung pada proses penerbitan, skrip R Anda mungkin tidak ada di sana. Setiap kali saya merujuk ke skrip eksternal dalam layanan geoprocessing saya, saya selalu merujuk secara eksplisit pada mereka dari folder yang telah terdaftar sebagai sumber data .sumber
Anda perlu menggunakan struktur alat ESRI dan memasukkan file dalam folder skrip Anda jika Anda ingin merujuknya langsung dengan nama seperti yang Anda lakukan dalam kode Anda. http://resources.esri.com/help/9.3/ArcGISDesktop/com/Gp_ToolRef/sharing_tools_and_toolboxes/a_structure_for_sharing_tools.htm
Jika tidak, Anda harus menambahkan lokasi skrip di sys.path Anda. Contoh di bawah ini merujuk file "\ myFolder \ myModules \ myExtFile.py". Setelah Anda memiliki referensi yang valid ke file Anda, Anda dapat menggunakan fungsi kustom Anda di layanan GP selama Anda menerbitkan memiliki akses ke jalur folder.
sumber