在工作过程中,对于100万以下的数据,我们一般使用EXCEL进行操作,但对于大于1百万行的数据,EXCEL也无能为力。此时,解决办法有三种:(1)拆分成几个小于100万的文件,再用EXCEL操作;(2)自编程序实现数据的读写;(3)使用Surfer操作。前两种方法操作耗时较长,而第三种方法的Surfer不能进行坐标投影转换。鉴于此,本文将介绍一种由博主亲测的好用的方法,这个方法需要用到二款软件:Surfer20和GeoSoft8.4.1。下面以CARIS输出的10m格网的1000万行水深点(纬度,经度,水深点)为例说明巨量数据投影坐标转换、格网生成和裁剪和低格网数据提取。
1、投影坐标转换使用Geosoft软件。
(1)新建GeoSoft项目,新建数据库,用于存放水深数据,导入水深数据(txt)。使用导入向导(wizard),导入数据,从第一行开始,并选择间隔符号。设置每一列的属性,主要是:是否导入,列名。如果希望导入列的排序不变,可在列名前加字母顺序(a,b,c等)。
新建数据库shuishen。
使用向导导入文本文件。
指定列名。1000万行数据导入大约1分钟。
(2)坐标转换,使用Coordinates/New Projected Coordinate System菜单命令。选择要转换的列,指定源坐标系统,然后选择转换后的列和目的坐标系统,投影坐标转换完成,耗时大约30秒。
指定要转换的列。
指定源坐标系统,大地坐标系统。
指定转换后的列。
指定目的坐标系统,墨卡托投影(中央经线120度,基准纬度39度)。
(3)导出转换后的坐标。
2、使用Surfer20生成10m格网。GeoSoft生成10m格网需要至少1天,Surfer20生成10m格网,不到1个小时。有的人可能会使用Fledermaus,其生成格网的速度比Surfer20快,但是会留下一些少量空洞。
建立bln文件,裁剪格网,bln文件的格式如下:
行数
x1,y1
x2,y2
...
xn,yn
首尾坐标相同,保证闭合
使用Surfer20的Grids/Assign NoData 裁剪grd,界面见下图。
grd文件裁剪的结果见下图。
3、提取低格网水深点。最后成图的格网一般比grd低一些,因此成图数据需要从grd上提取。使用Surfer20的Grids/Residuals可提取低网格的成图数据。
由于超出测量范围的低网格水深点为空,因此,我们需要剔除这些空值,选中A、B、C和D列,使用Grids/Sort,以D进行排序,删除空值的行。
最后,使用File/Save as输出提取的水深点。
4、小结
由于处理大于100万行的数据的机会不是很多,因此,使用此方法的时间间隔会比较长。每次使用都跟第一次使用一样,都会出现各种不顺利的状况,故而将此方法记录一下,便于检索查阅。
参考文献
https://blog.csdn.net/xiaokcehui/article/details/124959914