阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ArcGIS 10.1 让GP服务变得更简单

174次阅读
没有评论

共计 5315 个字符,预计需要花费 14 分钟才能阅读完成。

我们知道 ArcGIS 以强大的空间分析而获得 GISER 的口碑(不仅仅如此),在桌面软件中已经有了 800 多个空间分析工具,并且这些空间分析工具可以根据我们的业务需要而组合使用,使得我们在工作中能够流程化的处理问题,为我们的工作带来了方便。

ArcGIS Server 作为一个企业级的 GIS 平台,能够将我们的 GIS 资源作为服务发布出去,供客户端使用,在 ArcGIS Server 中有一种服务类型我们称之为地处理服务或者 GP 服务,该服务简单的说就是可以在 Web 端使用 ArcGIS 提供的空间分析,而这些分析的能力是和桌面中的一样的。使用 GP 可以让我们用很少的代码就可以完成一个复杂的操作。

=====================================================

Linux 上安装 ArcGIS 10 安装系列文章

Linux 上安装 ArcGIS 10_01 安装 Linux 虚拟机及 yum 源配置 http://www.linuxidc.com/Linux/2014-04/99796.htm

Linux 上安装 ArcGIS 10_02 安装 Oracle11gR2 http://www.linuxidc.com/Linux/2014-04/99797.htm

Linux 上安装 ArcGIS 10_03 安装 ArcSDE 10 http://www.linuxidc.com/Linux/2014-04/99798.htm

Linux 上安装 ArcGIS 10_04 安装 ArcGIS Server 10 http://www.linuxidc.com/Linux/2014-04/99799.htm

Linux 上安装 ArcGIS 10.1_01 安装 ArcGIS Server 10.1 http://www.linuxidc.com/Linux/2014-04/99800.htm

=====================================================

在 Web 使用这些 GP 工具和桌面端使用这些工具,在功能上是一样的,但是在数据类型上就有限制了,比如我们在桌面端可以将要素类作为参数,但是 Web 端就不行,所以在 10 或者之前的版本中,我们发布的 GP 服务不能正常运行很多是因为参数类型导致,在这里我将这些参数类型对比下:

输入参数数据类型

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素集

记录集

要素类

否(但可通过要素集数据类型 间接支持 要素类输入。)

否(但可通过记录集数据类型 间接支持 表输入。)

栅格

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

文件(如.zip.xml 文件)

图层(任何类型的图层;如,要素图层、栅格图层和网络分析图层)

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

 

 

输出参数:

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素类

要素图层

栅格

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

栅格图层

地理数据集(除要素类或栅格外)

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否(含有表数据类型作为输出参数的服务不会显示在可用任务列表中。)

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

是(在 结果 窗口的服务结果中查看)

是(在“任务结果”窗口中查看)

文件

在 10.1 中发布 GP 服务已经不能像以前那样,建立一个模型然后右键 share,地理处理服务的发布将由运行成功的地理处理工具结果产生。

创建一个地理处理的模型(计算缓冲区分析),模型如下图:

ArcGIS 10.1 让 GP 服务变得更简单

填写模型参数,细心的读者会发现这里有所变化(发现了没?):

ArcGIS 10.1 让 GP 服务变得更简单

模型运行结果:

ArcGIS 10.1 让 GP 服务变得更简单

填写工具的描述信息,如果不填写,那么发布服务的时候也会出错:

ArcGIS 10.1 让 GP 服务变得更简单

发布服务,在运行后的模型中,右键:

ArcGIS 10.1 让 GP 服务变得更简单

填写一些描述信息,如下,然后发布:

ArcGIS 10.1 让 GP 服务变得更简单

发布成功后会在 Manager 中看到。

在 Silverlight 中使用该服务,核心代码如下:

  private void _map_MouseClick(object sender, Map.MouseEventArgs e)
        {
            FeatureSet pFeature = new FeatureSet();

            Graphic pGraphic = new Graphic();

            pGraphic.Geometry = e.MapPoint;
            pFeature.Features.Add(pGraphic);

            pGraphicsLayer2.Graphics.Add(pGraphic);

            List<GPParameter> parameters = new List<GPParameter>();
            parameters.Add(new GPFeatureRecordSetLayer(“Input_Features”, e.MapPoint));
            parameters.Add(new GPDouble(“Distance__value_or_field_”, 1000));

            tStart2 = new TimeSpan(DateTime.Now.Ticks);
            pTask2.ExecuteAsync(parameters);

        }

 

 

 pTask2 = new Geoprocessor();
            initGP(pTask2, “http://localhost:6080/arcgis/rest/services/MyBuff/GPServer/MyBuff”);

 

 

  void initGP(Geoprocessor pGpro,string pUrl)
        {

 

            pGpro.Url = pUrl;

 

            pGpro.ExecuteCompleted += new System.EventHandler<GPExecuteCompleteEventArgs>(pTask_ExecuteCompleted);

            pGpro.Failed += new System.EventHandler<TaskFailedEventArgs>(pTask_Failed);

          // pGpro.OutputSpatialReference = MyMap2.SpatialReference;
        }

 

 

 

 

 

  void pTask_Failed(object sender, TaskFailedEventArgs e)
        {
            return;
        }

        void pTask_ExecuteCompleted(object sender, GPExecuteCompleteEventArgs e)
        {
                          foreach (GPParameter gpParameter in e.Results.OutParameters)
                {
                    if (gpParameter is GPFeatureRecordSetLayer)
                    {
                        GPFeatureRecordSetLayer gpLayer = gpParameter as GPFeatureRecordSetLayer;
                        foreach (Graphic graphic in gpLayer.FeatureSet.Features)
                        {
                            graphic.Symbol = Layout.Resources[“ResultsFillSymbol”] as Symbol;
                            pGraphicsLayer2.Graphics.Add(graphic);

                         
                        }
                    }
                }

                                 
        }

运行结果:

ArcGIS 10.1 让 GP 服务变得更简单

总结:ArcGIS 10.1 中 GP 的发布方式发生了变化,但是这种变化给我们带来了方便,我们可以将任何一个运行成功的工具进行发布,这样可以避免我们在输入和输出参数的时候发生困扰,只有 GP 运行成功才能发布,这也为我们模型的准确性做了保证。

我们知道 ArcGIS 以强大的空间分析而获得 GISER 的口碑(不仅仅如此),在桌面软件中已经有了 800 多个空间分析工具,并且这些空间分析工具可以根据我们的业务需要而组合使用,使得我们在工作中能够流程化的处理问题,为我们的工作带来了方便。

ArcGIS Server 作为一个企业级的 GIS 平台,能够将我们的 GIS 资源作为服务发布出去,供客户端使用,在 ArcGIS Server 中有一种服务类型我们称之为地处理服务或者 GP 服务,该服务简单的说就是可以在 Web 端使用 ArcGIS 提供的空间分析,而这些分析的能力是和桌面中的一样的。使用 GP 可以让我们用很少的代码就可以完成一个复杂的操作。

=====================================================

Linux 上安装 ArcGIS 10 安装系列文章

Linux 上安装 ArcGIS 10_01 安装 Linux 虚拟机及 yum 源配置 http://www.linuxidc.com/Linux/2014-04/99796.htm

Linux 上安装 ArcGIS 10_02 安装 Oracle11gR2 http://www.linuxidc.com/Linux/2014-04/99797.htm

Linux 上安装 ArcGIS 10_03 安装 ArcSDE 10 http://www.linuxidc.com/Linux/2014-04/99798.htm

Linux 上安装 ArcGIS 10_04 安装 ArcGIS Server 10 http://www.linuxidc.com/Linux/2014-04/99799.htm

Linux 上安装 ArcGIS 10.1_01 安装 ArcGIS Server 10.1 http://www.linuxidc.com/Linux/2014-04/99800.htm

=====================================================

在 Web 使用这些 GP 工具和桌面端使用这些工具,在功能上是一样的,但是在数据类型上就有限制了,比如我们在桌面端可以将要素类作为参数,但是 Web 端就不行,所以在 10 或者之前的版本中,我们发布的 GP 服务不能正常运行很多是因为参数类型导致,在这里我将这些参数类型对比下:

输入参数数据类型

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素集

记录集

要素类

否(但可通过要素集数据类型 间接支持 要素类输入。)

否(但可通过记录集数据类型 间接支持 表输入。)

栅格

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

文件(如.zip.xml 文件)

图层(任何类型的图层;如,要素图层、栅格图层和网络分析图层)

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

仅支持在结果地图服务或源地图文档中找到的图层

 

 

输出参数:

在 ArcGIS Desktop 客户端上是否受支持?

在 ArcGIS Explorer 客户端上是否受支持?

在 Web 应用程序客户端上是否受支持?

要素类

要素图层

栅格

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

栅格图层

地理数据集(除要素类或栅格外)

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否;只能使用结果地图服务显示

否(含有表数据类型作为输出参数的服务不会显示在可用任务列表中。)

标准类型(如长整型、双精度型、布尔型、日期型和字符串型)和线性单位(如“1000 米”)

是(在 结果 窗口的服务结果中查看)

是(在“任务结果”窗口中查看)

文件

在 10.1 中发布 GP 服务已经不能像以前那样,建立一个模型然后右键 share,地理处理服务的发布将由运行成功的地理处理工具结果产生。

创建一个地理处理的模型(计算缓冲区分析),模型如下图:

ArcGIS 10.1 让 GP 服务变得更简单

填写模型参数,细心的读者会发现这里有所变化(发现了没?):

ArcGIS 10.1 让 GP 服务变得更简单

模型运行结果:

ArcGIS 10.1 让 GP 服务变得更简单

填写工具的描述信息,如果不填写,那么发布服务的时候也会出错:

ArcGIS 10.1 让 GP 服务变得更简单

发布服务,在运行后的模型中,右键:

ArcGIS 10.1 让 GP 服务变得更简单

填写一些描述信息,如下,然后发布:

ArcGIS 10.1 让 GP 服务变得更简单

发布成功后会在 Manager 中看到。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5315字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中