webAppbuilder微件使用教程3 地理处理微件

0
分享 2016-12-31
webAppbuilder微件使用教程
--微件使用进阶地理处理微件
By 李远祥
地理处理是GIS解决问题的关键部分,也是其灵魂所在。由于WebAppBuilder框架的限制,用户如果想要非常灵活的功能,通过简单的配置是很难实现的,尤其是在这种零代码构建应用的方式。虽然WebAppBuilder也可以开发定制,但对于没有开发基础的使用人员来说,这是相当困难的。Esri在推出WebAppBuilder的时候已经考虑到这一点,因此在WebAppBuilder中提供了地理处理微件,可以让分析人员将自己的地理处理工具在WebAppBuilder中灵活的调用,很好的解决了这些问。
地理处理微件是非常简单,它之所以能够解决绝大部分问题,那是因为它不是孤独的存在,它需要结合ArcGIS的其他产品进行辅助,需要较强的ArcMap基础及GIS理论进行支持。如果比较熟悉ArcGIS产品线及地理建模的话,地理处理微件就很容易实现丰富的分析功能。
地理处理微件的使用一般分为三个阶段,第一个阶段是制作模型;第二阶段是发布模型,第三阶段是使用模型。只有第三阶段使用模型才直接跟WebAppBuilder相关,前面的两个阶段都是ArcGIS其他产品的相关操作。
下面来看一个例子,将全国雨量站点的一张表发布出去,这张表除了基本的站点信息之外,还带有XY坐标字段。我们需要对这张表进行检索,并且按照关注点例如省份进行过滤,然后将所选省份的站点在地图上显示出来。这跟之前所说的查询微件不一样,首选数据是表格,不是传统的GIS数据,其次是需要定制一些界面,如省份的下拉列表,不是所有的数据都直接显示,只是检索表之后进行xy的上图操作。
这种功能对于开发人员来说,非常的简单,但如果不做任何的编码,很难去实现,在WebAppBuilder里面,没有任何的微件可以直接实现该功能。既不想通过编码去完成,又想在配置的过程中快速使用,最好的办法就是自己创建一个分析模型并在地里处理微件中调用。
针对上述的例子,我们要做的工作大概分为几部分。
1. 将这个表发布出去。可以将表格存放在数据库中成为数据库的表格,或者直接使用ArcMap将表格直接存到sde数据库中。我们选择了后者,因为在arcgis的框架下,使用arcgis的技术路线是最稳当,而且自我兼容良好。(这步骤就不累述了)

2. 创建分析模型。这里要涉及到的是modelbuilder的一些操作了(modelbuilder具体做法这里不;累述,属于另一个专题了)。首先我们得联系场景,先做一个表格的过滤,然后再做一个XY上图的操作,这些在ArcGIS的工具箱中可以找到对应的工具。

可以看到这里使用的是两个原生的工具,并且设置了两个参数,这两个参数一个是选择省份,一个输出的图层结果。省份这个参数(椭圆上带P为参数)是独立出来的,它是怎样跟表筛选工具的条件进行挂钩的呢?这就是设计到modelbuilder的一些使用技巧,可以双击这个Expression参数看看,如下图,使用了过滤条province=’省份’,这种方式来表达,这就是过滤条件,其中过滤的变量来自我们在modelbuilder里面的设置的【省份】这个参数。【省份】这个参数是我们在模型构建器中直接右键新建的一个字符串变量,为了方便记录,将其变量名称改为省份。

执行这个模型的结果,直接双击,会发现跟传统的模型有不一样的地方,就是省份具有下拉值,如下图

这又是modelbuilder的一些使用技巧了,工具制作好后,可以在工具的右键—属性—参数中进行更加详细的设置,如下图所示,在默认情况下,省份这个参数的过滤器是【无】,我们将其更改为【值列表】的方式,就可以设置其下拉列表

点击【值列表】后,可以输入对应的一些值,例如广东、广西等,如下图所示

3. 发布工具到ArcGIS portal或者arcgis.com 。这里就需要涉及到ArcMap的一些配置了。Arcgis发布地理处理模型的时候,一般都是需要执行一次的,执行完并确定没错之后,可以直接在发布到server中。但由于我们希望能在WebAppBuilder中直接获取,那就必须发布到portal或者arcgis.com 了。
这里以portal为例,首先需要在arcgis administrator中配置一个portal连接,在其【高级】--【管理门户连接】,添加上portal的连接地址,如下图





在ArcMap的【文件】菜单,先登录到portal中,如下图

接下来就是运行刚才制作好的模型。直接双击模型,选择其中一个省份,然后执行生成结果。如下图所示

关闭掉执行框,调出【地理处理】--【结果】,然后就可以右键发布这个模型


由于已经登录了portal,因此发布的时候会直接跳转到portal的一些设置界面,如下图,需要设置模型的必填项目以及共享的一些描述信息。


配置好后就可以发布,直到发布成功,那这些准备工作就基本完成。

4. 当分析模型已经准备并且完成发布,接下来才能进行地理处理微件的配置。打开WebAppBuilder的应用构建界面,选择使用地理处理微件,可以直接读取到门户网站中的一些已经发布的地理模型。地理处理微件只有一个设置按钮,可以直接输入来自外部的GP服务或者来自组织内部的服务。如下图

点击设置之后可以读取门户的信息,我们可以选择之前发布的地理处理服务,如下图

接下来的配置就更能体现地理处理微件的强大,它直接读取了之前配置地理处理模型的所有信息,点击下一步之后可以看到对这些处理的读取过程


同时可以给输出的图层设置渲染器和弹出窗口

整个分析的过程有后台去完成,我们在WebAppBuilder中只管调用就行。看看实际的结果,在调用前是空白的地图,执行某个省份的过滤之后,可以直接生成结果并上图显示,点击每个图形可以查看其属性。

执行前的地图

执行后的结果

这只是一个非常简单的例子,结合了模型构建,模型发布和地理处理调用。从这个例子可以看出,地理处理微件的功能是否合理和强大,完全取决于构建的模型功能。
如果觉得上述例子比较简单,那接下来的这个例子将呈现更加强大的功能。上述例子没有涉及到参数的地图交互,也没涉及到复杂的数据模型。下面我们将使用复杂的数据。现在要在一份水利数据中做一个河流追踪功能,例如选择河流上的某一点,可以追踪到河流的上游或者下游。
这里就需要涉及到更多的方面,一方面是需要对河流数据进行连通性建模,建立几何网络;另一方面要做的事情就是图形的捕捉,就是在地图上打点,然后选择将该点作为参数传入模型,第三步才是执行分析操作。也就是说,缺少数据支持是不能做这样的操作的,这些分析操作的输入条件是随意的,不是固定的点,需要跟地图进行交互。
回到根本,WebAppBuilder里面的地理处理微件不可能直接提供这些功能,那还是需要从模型入手。
1. 针对河流建立几何网络模型(具体操作自行查看arcgis的帮助),建立后如下图、

2. 构建分析模型
这是一个复杂的模型,首先使用输入的点做一个缓冲,查找河流要素,与河流的交点获取作为一个输入参数点,使用追踪几何网络工具直接分析,并从结果中提取分析的河流要素并且加入到地图中显示,工具如下,不再详细论述


关键部分在于两点,第一是输入参数必须为要素集(直接右键新建,并将其作为参数,以为除图层之外,交互的操作都必须定义为要素集,这样才能被全段读取),另一个是输出的结果必须设置为参数,并且添加至显示,不然无法设置其最终的符号。如下图


3. 配置地理处理微件。微件的调用如之前的做法无异。但可以看出明显不同的是微件读取了模型的配置,这第一个参数是要素集,可以设置以下的一些参数,例如可以与地图进行交互,在地图上打点之后还可以设置其符号

输出图层也是跟前面的差不多,只不过这次输出的数据为线,所以自动识别为线要素符号,可以设置其符号。

4. 执行操作。可以看到起具体的执行,也是非常简单,可以设置地图的交互和选择分析的类型(在模型中将分析模型设置为参数了),如下图

执行上溯追踪后返回结果如下

由此可见,地理处理微件机会可以完成所有的分析操作。在制定好分析模型后,可以基于这些强大的分析模型去完成所有的操作。
也许有人会问,如果arcgis工具箱里面的工具不能满足分析的需求怎么办。不要忘记,modelbuilder除了可以使用内置的丰富的分析工具之外,还定义了一系列的调用标准,可以通过python语言进行制作工具,python语言可以将一切现行的工具(非arcgis)像橡皮泥一样很好的粘合起来,这样模型也也可以无限的扩展。

文章来源:http://blog.csdn.net/liyuanxiang1984/article/details/52774281

0 个评论

要回复文章请先登录注册