hi
i have problem executing my tools in REST API. When I create tools and I run on the desktop, the tools work. However, when I published the service and I tried to execute it, an error appeared. Can anyone help?
import arcpyimport pandas as pdfrom math import radians, cos, sin, asin, sqrtfrom sklearn.cluster import DBSCANfrom scipy.spatial.distance import pdist, squareformimport matplotlib.pyplot as pltimport numpy as npif __name__ == "__main__":arcpy.env.overwriteOutput = Truein_file = arcpy.GetParameterAsText(0)output = arcpy.GetParameterAsText(1)epsilon = float(arcpy.GetParameterAsText(2))min_sample = int(arcpy.GetParameterAsText(3))#Convert the feature class to a pandas DataFramearray = arcpy.da.FeatureClassToNumPyArray(in_file, ["SHAPE@X", "SHAPE@Y"])df = pd.DataFrame(array)#Extract the X and Y coordinates from the DataFramecoords = df[["SHAPE@X", "SHAPE@Y"]].values#Get the spatial reference of the input feature classdescribe = arcpy.Describe(in_file)#create spatial objectSR = describe.spatialReference#Create a spatial reference objectSR = arcpy.SpatialReference(SR.FactoryCode)def haversine(lonlat1, lonlat20) :# convert decimal degrees to radianslat1, lon1 = lonlat1lat2, lon2 = lonlat2lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])# haversine formuladlon = lon2 - lon1dlat = lat2 - lat1a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2b = 2 * asin(sqrt(a))r = 6371 # Radius of earth in kilometers. Use 3956 for milesreturn (b * r) * 1000distance_meter = squareform(pdist(coords, (lambda u,v: haversine(u,v))))arcpy.AddMessage(epsilon)arcpy.AddMessage(min_sample)#Function DBSCANdb = DBSCAN(eps=epsilon, min_samples=min_sample, metric='precomputed').fit(distance_meter)y_db = db.fit_predict(distance_meter)#visualization of db_scanplt.scatter(distance_meter[:,0],distance_meter[:,1],c= db.labels_)plt.xlabel("X")plt.ylabel("Y")plt.title("Grafik Data compound DBscan")plt.showprint("Jumlah Kluster:{}".format(len(set(db.labels_[np.where(db.labels_!=-1)]))))print(db.labels_)labels = db.labels_#Export feature classarcpy.env.overwriteOutput = Trueout = arcpy.da.NumPyArrayToFeatureClass(array, output, ["SHAPE@X", "SHAPE@Y"],spatial_reference=SR)#Add field cluster into feature class outputcluster = arcpy.AddField_management(output,"CLUSTER","Short")with arcpy.da.UpdateCursor(output,["CLUSTER"]) as cusor:for i, row in enumerate(cusor) :row[0] = labels[i]cusor.updateRow (row)