Esri西安分公司:严瑞
以一个小示例说明:准备一个点图层数据,有Name字段,完成任务:插入点到图层,并给Name字段属性值。
目录
1.准备数据
2.准备python脚本
3.制作GP工具
4.GP工具测试
5.制作模型
6.发布服务
6.Rest服务测试
7.js调用
1.准备数据
Point点图层,增加一个属性Name字段
2.准备python脚本
将如下脚本复制到一个记事本中:
import arcpy;
dataResource=arcpy.GetParameterAsText(0)//获取第0个参数
jd = arcpy.GetParameterAsText(1)
wd = arcpy.GetParameterAsText(2)
name=arcpy.GetParameterAsText(3)
cur = arcpy.InsertCursor(dataResource)
pnt = arcpy.Point("Point")
pnt.X = jd
pnt.Y = wd
row = cur.newRow()
row.shape = pnt
row.Name=name
cur.insertRow(row)
将记事本另存为后缀名为.py的文件,这里我命名为InsertPoint,如下:
3.制作GP工具
在ArcCatalog中选中你的存放文件夹,点击鼠标右键:新建“工具箱”
选择“工具箱”,点击鼠标右键
添加脚本:
下一步,选择InserPoint.py
下一步,设置输入输出参数:(红框中选择参数类型:输入还是输出,这里我们都是输入参数)
点击“完成“。
4.GP工具测试
双击上一步制作好的工具,并输入参数:
点击确定,执行成功如下:
打开point图层的属性表,查看新添加进去的数据如下:
5.制作模型
在ArcCatalog中,选择工具箱,鼠标右键新建模型
将上面制作的InsertPoint工具拖入模型中:
点击InsertPoint工具,鼠标点击右键获取参数:
获取第一个参数dataPath(当前还没有设置输入路径)
设置输入参数:双击dataPath,设置point图层路径
点击“确定“:
以同样的方式获取其他参数jd、wd、name:
jd
wd
Name:
确定,最终输入好参数的模型如下:
下面来对模型设置输入参数:这里设置jd、wd、name.(point作为固定数据,不设置),选择jd,右键点击“模型参数“,以此类推,设置wd、name
设置好参数后的模型如下:
保存模型。
6.发布服务
发布GP服务执行需要先执行一次模型,双击上一步保存的模型,如下是默认的参数
点击“确定“,执行成功如下:
接下来发布服务:在ArcMap菜单中,地理处理/结果对话框,选择刚才执行的“模型“右键,点击“共享/地理处理服务“:
发布服务:
点击“下一步“:
下一步:
继续,进入服务编辑器,如下,在编辑器中需要输入参数的描述,否则会报错
选择同步执行:
点击右上角“发布“:
发布成功提示如下:
6.Rest服务测试
打开ArcGIS Server Rest目录,可以看到刚才发布InsertPoint服务
点击
,进入下一页,页面下方有Execute Task操作
点击Execute Task,输入参数,执行后显示如下,代表已经成功插入数据
再到ArcMap中查看,已经成功插入该点。
7.js调用
输入一个点,Format选择JSON格式
点击Execute Task,弹出如下:
这时候已经将这个点插入进去了。这里要用到的是url地址,到浏览器中将地址复制如下:
http://localhost:6080/arcgis/rest/services/InsertPoint/GPServer/%E6%A8%A1%E5%9E%8B/execute?jd=109&wd=37&name=forthPoint&env%3AoutSR=&env%3AprocessSR=&returnZ=false&returnM=false&f=pjson
我们更改三个参数如下:
http://localhost:6080/arcgis/rest/services/InsertPoint/GPServer/%E6%A8%A1%E5%9E%8B/execute?jd=108.8&wd=37.6&name=fifthPoint&env%3AoutSR=&env%3AprocessSR=&returnZ=false&returnM=false&f=pjson
将如下代码写到记事本中,并另存为后缀名为.html的文件:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>JSON Content</title>
<script>var dojoConfig = { isDebug: true };</script>
<script src="http://serverapi.arcgisonline. ... gt%3B
<script>
var url = " http://localhost:6080/arcgis/r ... 3B%3B
var xmlHttp=GetXmlHttpObject();
function getContent()
{
xmlHttp.open("GET",url,true); //submit the URL request
xmlHttp.send(null);
xmlHttp.onreadystatechange= function()
{
// Here we process the response
// var responseText=xmlHttp.responseText;
//alert(responseText);
alert("ok");
}
}
function GetXmlHttpObject() {
var xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if (xmlHttp==null) {
alert ("Your browser does not support AJAX!");
return;
}
return xmlHttp;
}
</script>
</head>
<body style="font-family: Arial Unicode MS,Arial,sans-serif;">
<p>
Enter URL here: <input type="text" disabled="true" id="url" size="75" />
<input type="button" value="GO" onclick="getContent();" />
<span id="status"></span>
</p>
<p>
</body>
</html>
另存后如下:
用鼠标双击
点击“Go”,弹出ok
代表数据已经插入进去,查看属性表:
结束。