事情多了不发愁,领导安排的事情有点多,难度也大,一时完不成,干脆转去做数据处理。事多做不走,一身轻松,做数据处理便要来点难度。
不上难度还不知道,一上来才知道不简单。难度主要是因为数据体量大,称得上海量数据,数据量达到十gb,图斑数量——可以理解为多边形,数量达到一千两百万之多。而我以前处理数据量级都在几十万,处理起来都比较轻松。写程序之前,我按以往惯例,先是走一遍同事小龚写的手动操作流程。刚走到第二步,我只是看到文档,就很后悔,当初在小龚面前夸下的海口。
第二步的操作,专业术语为聚合面分析。通俗来讲,就是遍历一千两百万个图形,只要发现图形周边有临近小于8米的图形,就合并为一个图形。单个图形来看,操作倒也不算复杂, 可一千两百万个放到一起处理,就成了大问题,遍历完一个图形,融合之后形成新图形,还要再搜索新图形周边,如此一来便,计算量就远不止一千两百万次。
一上来,我仗着电脑配置还可以,强行运行分析功能。一开始运行,四分钟完成百分之一,以此类推,我猜测需要四百分钟完成分析,干脆下班回家,让电脑自己跑。原先小龚倒也说过,他运行聚合面分析时,经常挂机两三天,然后崩溃。当时我还在笑他电脑性能不行,软件也不行。本以为在强劲电脑加持下,一晚上怎么也能完成任务。第二天一来,一看进度条,卡在百分之二,一直没有动。
空间分析卡住,按以往经验分析,很有可能已经溢出。无奈之下,我只有去翻看官方文档。还真让我找到了原因,文档中说聚合面分析处理时,图形数量最好不要超过五万个。我现在处理的数据已经达到官方文档要求的两百多倍,是不是意味着无法处理。我感觉有点挂不住,真处理不了,对不住数据处理高手的称号。不过内心深处来说,什么称号倒也无所谓,关键是我遇到难以处理的数据,就会像登山爱好者,看到一座高山,不登顶不足以过瘾的感觉。
从没完成过的数据量级,必须要拿下。我接着细看官方文档,又点开软件,反复看各类参数。忽然看到有个参数制图分区,看到四个字,我马上联想到可以载入一个分区文件,进行分区处理。我大概计算下数据量,分为两百多个网格,然后重新运行分析。
一番操作下来,屏幕上的进度条,总算开始变化,百分比数字不断跳动,转眼之间,就完成20多个分区。照此算下来,到不了中午就可以完成处理。想象总是很美好,打击总是来得太快。处理到第25个分区时,进度条卡在95%,一动不动的卡了一个多小时。我立刻反应过来,图形分布不均匀,很有可能有的网格超过五万个。既然不均匀,最简单粗暴的方式就是加密网格,降低要素超限的可能性。先是加到一千多个网格,结果还是卡住,一直加到一万个网格,还是会卡住。
看来此路不通,中午我也没什么心思吃饭,继续折腾电脑。一番了解下来,知道有个服务器版软件,可以并行计算,问题是远水解不了近渴。服务器部署下来不但需要很长时间,最主要的是服务器版软件并不便宜,花大价钱才能解决问题,显示不出来本事,我非要用小米加步枪,打下一架飞机来。
不换装备,只有换思路。我又想起万能助手AI来,直接下个指令,让AI提供一个实现类似聚合面分析的功能。AI也真不含糊,不到一分钟,给出答案。这次我学聪明了点,先用一个小数据测试方法。思路其实很简单,先缓冲再融合,然后再用原图斑裁剪一次,计算量果真减少很多。小数据没用到两分钟,便得到分析结果,完全符合要求。
遇到困难的时候,不要和困难硬刚,硬刚一会儿实在过不去,可以换个思路,或许就可以绕过去。
网友评论