1、说明
ArcGIS Geoprocessing提供了大量地理处理和分析工具,可根据需要对这些工具进行组合构造自己的GIS分析模型,然后发布成GP服务,以方便各种Web客户端调用。Flex API中提供了访问GP服务的接口,通过该接口和GP工具,可实现具有高级GIS分析功能的Web应用。
2、模型创建与测试
创建模型可在modelbuilder可视化环境下进行,也可使用Python脚本定义。模型创建完成需要在ArcMap环境下测试是否正常运行。
详细建模过程请参考ArcGIS的帮助文档。
3、GP服务发布
发布GP服务可使用两种资源类型:GP工具;包含结果图层的MXD文档。其中包含结果图层的MXD文档发布成GP服务时又有两种选择:一种只发布为GP服务;另一种发布成MapService和GP服务。第二种方式可预先在MXD文档中对结果图层渲染,这样可简化客户端的可视化工作。实际项目中选择使用哪一种方式,需要根据具体业务需要确定,不能一概而论。
4、GP服务测试
(1)在ArcMap中加载MapService
注意为方便测试,该MapService不能使用发布GP服务时一同发布出来的MapService。
(2)在ArcToolbox中添加GP服务
将发布的GP服务添加到ArcToolbox中,点击运行,生成的结果会自动添加到当前的地图中。
5、ArcGIS Server Flex API调用GP服务示例
上面几小节简单的介绍了GP工具的制作和GP服务的发布,本小节正式进入正题,讲讲如何使用ArcGIS Server Flex API调用GP服务。
GP服务分同步和异步两种执行模式,Flex API也提供了两种处理方式与之对应。Flex API调用GP服务使用的是Geoprocessor类。该类提供了execute(params)和submitJob(params)两个方法调用后台的GP服务进行数据处理,其中execute(params)对应的是同步执行模式,执行完成触发executeComplete事件。submitJob(params)对应的是异步执行模式,执行完成触发jobComplete事件。对GP服务结果的处理我们可以定义在这些complete事件中。如果GP服务处理过程比较简单而且耗费时间少,我们可以选择同步执行模式,但如果比较耗时,为避免客户端长时间等待,常使用异步执行模式。
为保证Flex API正常调用GP服务,在GP模型定义和GP服务发布过程需要,还需要注意以下几项:
(1)在配置MXD文档时,设置临时工作空间
在MXD中添加完GP工具后,如果未设置临时工作空间,则运行GP工具生成的结果将默认保存在C盘下,该路径会导致GP服务无法读取结果图层,可通过设置临时工作空间解决。设置方法:在ArcToolbox上右键选择Environment,设置scratchworkspace的路径即可。
(2)GP工具输出路径的处理
为方便访问输出图层,一般情况下使用环境变量来指定输出路径,即使用scratchworkspace变量,该变量指向ArcGIS Server的arcgisjobs目录。例如:%scratchworkspace%\idwraster。
(3)输出图层中文字符处理
如果GP工具中输出的图层名包含中文,需要更改为英文名称,否则添加到地图上的结果图层无法正常显示。
本示例以生成等值面为例,数据使用ArcGIS自带的World地图,软件环境使用ArcGIS Server9.3.1,ArcGIS for Flex API 1.3版本。示例代码如下:
(1)发布服务
将包含GP工具的MXD文档发布成同名的地图服务和GP服务。
(2)Flex调用GP服务
<mx:Script><![CDATA[
import mx.controls.Alert;
import com.esri.ags.events.*;
import com.esri.ags.tasks.*;
import com.esri.ags.layers.*;
private function gpJobCompleteHandler(event:GeoprocessorEvent):void
{
var imageParameters : ImageParameters = new ImageParameters();
var myImageLayer2 :GPResultImageLayer = gp.getResultImageLayer(event.jobInfo.jobId,"dzhm",imageParameters);
//dzhm参数为GP工具中定义的输出文件名
baseLayer.visible = false;
map1.addLayer(myImageLayer2,0);
Alert.show("job:"+event.jobInfo.jobId);
}
]]>
</mx:Script>
<esri:Geoprocessor id="gp" url="http://xinli:8399/arcgis/rest/services/test/world_gdb/GPServer/IDW"
jobComplete="gpJobCompleteHandler(event)">
<esri:fault>
<![CDATA[
Alert.show(event.fault.message);
]]>
</esri:fault>
</esri:Geoprocessor>
<mx:Button x="10" y="10" label="执行">
<mx:click>
<![CDATA[
var params:Object = {};
gp.submitJob(params);
]]>
</mx:click>
</mx:Button>
<esri:Map id="map1" width="100%" height="100%">
<esri:ArcGISDynamicMapServiceLayer id="baseLayer" url="http://xinli:8399/arcgis/rest/services/test/world_gdb/MapServer"/>
</esri:Map>
缺省情况下使用的是动态端口,不必修改。
如果客户端要求必须使用固定TCP端口,在IPAll的TCP端口中设置(例如设成1433),同时TCP动态端口保持空。
2. 重启SQL Server(SQLEXPRESS)服务,不必重启SQL Server Browser服务
新换了机器,操作系统是windows2003的发现官方最新下载的MSN8.5也无法安装.结果发现这是一个普遍问题,通过MSI类型文件就可以安装。原文还提供了其他程序的安装。
下载单组件: 用迅雷下载
Windows Live Mail 12.0.1606 下载
Windows Live Messenger 8.5.1302.1018 下载
Windows Live 照片库 12.0.1308.1023 下载
Windows Live Writer 12.0.1366.1026 下载
Windows Live Writer 更新包 12.0.1367.1128 下载
Windows Live Toolbar 03.01.000.0146 下载
Windows Live OneCare Family Safety 2.0.5817.2 下载
Windows Live OneCare Family Safety 更新包2.0.6010.0 下载
Windows Live Login 下载
在 Windows 2003 下就可以安装了。有问题请继续跟贴。

但事实上在windows2003上运行没问题。
只是需要对安装程序进行一个小修改。
方法如下:找到安装包里面的WinBootstrapper1.cab 文件,将只读属性取消。
然后用解压工具winrar 将cab解开,找到_11_1c3517d600d57b2021fc5e7402e13a8e文件,
用编辑软件打开(记事本就可以)
改变一下2个地方:
if (1 == windowsType)
{
validOSServer2003 = false;
validOSXP = true;
}
else
{
validOSXP = false;
validOSServer2003 = true;
}
改为
if (1 == windowsType)
{
validOSServer2003 = true;
validOSXP = true;
}
else
{
validOSXP = false;
validOSServer2003 = false;
}
将








