webgis中等值面生成技术之-arcgis 用自带工具生成等值面并其发布成gp服务

  • Post author:
  • Post category:其他


相对于等值线,等值面可以更加直观地展示不同值的分布区域。在webgis中等值面生成的方法可分成2种,一种是由后台生成结果,前端获取结果进行渲染。第二种是在web前端生成,然后渲染。从格式上看,也有分2种,一种是矢量多边形,一种是图片。

本文主要记录在实现由arcgis 工具生成等值面过程中遇到的一些问题,主要是采用模型构建器,利用现有的工具构建模型,总体流程是:输入点要素(带需要计算的字段,如雨量,水深)-【IDW】生成栅格-根据分类规则用【栅格计算器】对生成的栅格进行重分类,如0-10,10-20,最后使用【栅格转多边形】生成相应的多边形并输出。详细过程见参考博客。

本次实现过程采用的arcgis版本为10.4.1。不同版本可能会遇到不同的问题,仅供参考。

1.在完成IDW计算后,使用栅格计算器时报错:Python2.7未安装。解决方法:用arcgis-desktop的安装程序重新安装或者修复python27。

2.发布后,在前端调用服务时报错:“error 000867: output cell size: contains invalid cell size or dataset”。因为参考的博客中说到IDW中可以不必特意设置cell size。确实,在arcmap中运行时确实可以通过。但发布成服务由前端调用时出现该错误。解决方法:设置cell size 重新发布服务。

3.发布后,在前端调用时报错:‘the coordinates or measures are out of bounds.’参考博客中说到”“设定的输出范围要素放到左侧图层栏,这样可以在Environment Settings—Pricessing Extent中直接选择”。而一开始考虑到通用性,不想用因为某个范围限制了计算范围,所以没有设置,在arcmap中运行没有问题,但发布成服务后出错。解决方法:在【环境设置】-【处理范围】设置中设定相应的范围,测试发现选择【输入并集】或者【输入的交集】也会出错。

4.发布时,注意选择调用方式是同步还是异步,同时在前端调用时也应该注意是以相应的方式进行调用。在测试过程中发现使用异步会报错,内容大概就是“任务失败”但没有更详细的信息,所以后面主要采用的是同步的方式。

2020-7-6更新:

1.IDW生成栅格后也可以用Reclassify栅格【重分类工具】进行重分类,相比【栅格计算器】使用更加方便。

2.

使用tif进行前端渲染

。生成多边形因为需要重分类,栅格转矢量等步骤,所以相对比较耗时。而解决这个问题的一个办法就是把重分类及渲染都放在前端进行,即只需要将IDW工具发布成服务,然后调用IDW的服务生成插值后的tif,之后获取对应的tif,在前端根据要求进行动态重分类,并进行渲染。这边需要用到前端tif解析的库,详情参考tiff.js官网。具体渲染步骤是:

a.使用tiff.js获取栅格并将栅格转成png;因为生成的tif为单波段,而png为4波段,所以png中RGB的值一般相同,且A波段为255。

b.根据分类需求对png的值进行重新分类,比如当rgb的值在区间[0,10)内时,设置其颜色设置为蓝色。则只需判断0<=r=g=b<10,时,设置r=0;b=255;g=0;这样png中该点就由原来的值变成了相应的颜色值,还可以通过设置不同的a实现半透明效果。

c:将该图片作为图层加载到地图中,当然需要有相应的范围坐标,一般这个范围可以是固定的。将图片图层在常见的地图框架中都支持。最后完成将等值面叠加到地图中。


注意

:tif的像素深度不能超过8位,如果超过255需要在服务中用【int】工具将其转成整形的栅格,否则tifjs无法解析。

参考博客:


https://blog.csdn.net/rrrrroy_ha/article/details/79461388


https://blog.csdn.net/rrrrroy_Ha/article/details/79451614



版权声明:本文为lh1162810317原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。