ArcGIS API for JavaScript开发笔记(二)GP服务REST调用

上一节(GP模型创建及服务发布)中,用一个简单的例子介绍了GP模型的制作及GP服务的发布,接下来讨论如何对发布的服务进行REST调用。

REST,Representational State Transfer,表述性状态转移,是现在一种较为常用的WebService软件架构风格(另一种是SOAP风格)。最基本的思想是将互联网上所有的资源视为URI。

发布服务之后,便可以在ArcGIS Server Manager中查看
这里写图片描述

打开服务的REST网址,点击查看最下面的Execute Task(如果是异步执行则为Submit Job)
这里写图片描述

中间是填写参数的地方,由于模型中只设置了三个参数,所以只需要填写三个参数(参数的类型需要参照ArcGIS JavaScript API中ParameterValue的值)
这里写图片描述

点击Execute Task执行
这里写图片描述

啊噢,貌似我们遇到问题了!!!

在Manager的日志里面看一看
这里写图片描述
很清楚的可以看到,Python代码的16行出问题了,回头一看,不对啊,代码根本就没有16行!

去服务器里面看一看,代码是这样的:

# Esri start of added imports
import sys, os, arcpy
# Esri end of added imports

# Esri start of added variables
g_ESRI_variable_1 = u'InsertPt\\point'
# Esri end of added variables

import arcpy
dataResource=arcpy.GetParameterAsText(0)
jd = arcpy.GetParameterAsText(1)
wd = arcpy.GetParameterAsText(2)
name=arcpy.GetParameterAsText(3)
cur = arcpy.InsertCursor(dataResource)
pnt = arcpy.CreateObject(g_ESRI_variable_1)
pnt.X = jd
pnt.Y = wd
row = cur.newRow()
row.shape = pnt
row.Name=name
cur.insertRow(row)

原来发布服务的时候,Python代码被更改了,前六行代码都是新增的,第16行代码是:pnt = arcpy.CreateObject(g_ESRI_variable_1)而原来的代码是pnt = arcpy.CreateObject("Point")

仔细想一想,查询相关资料,得出结论:发布GP服务时所有ArcPy函数中双引号内的内容都会被当成是路径,即使有时候它不是路径!而且系统会自动为双引号内的内容添加临时目录。所以这个时候就需要通过os.path.join(OutputRaster,"P_Raster")(路径)或者其他方法来处理这样的情况。

譬如对代码进行更新为如下:

import arcpy
dataResource=arcpy.GetParameterAsText(0)
jd = arcpy.GetParameterAsText(1)
wd = arcpy.GetParameterAsText(2)
name=arcpy.GetParameterAsText(3)
cur = arcpy.InsertCursor(dataResource)
pnt = arcpy.Point()
pnt.X = jd
pnt.Y = wd
row = cur.newRow()
row.shape = pnt
row.Name=name
cur.insertRow(row)

替换服务器中的代码,就可以运行成功了。
这里写图片描述

查看服务器中的运行结果,点已经被插入
这里写图片描述

注意:由于这里是使用本地的数据发布服务,发布服务时数据会被传入到数据库。所以这里的修改也是针对服务器中的点数据,本地的点数据是不会改变的!如果希望本地的点能够通过这种方式被改变,就需要将数据存入ArcSDE,并注册到ArcGIS Server,详见ArcGIS with Oracle安装及直连

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值