APP下载

基于ArcEngine的闪电强度等值线的自动绘制

2012-11-22朱传林范宏飞段振中杨仲江余红李玉照

湖北大学学报(自然科学版) 2012年3期
关键词:等值线栅格插值

朱传林,范宏飞,段振中,杨仲江,余红,李玉照

(1.湖北省防雷中心,湖北 武汉 430074;2.南京信息工程大学大气物理学院,江苏 南京 210044;3.南京市气象局,江苏 南京 210008)

ArcGIS Engine是ESRI公司ArcGIS 9系列软件中新增加的GIS开发组件,是一个完整的嵌入GIS组件库和工具,开发人员可以用来创建新的应用程序或者在自定义的软件应用中扩展GIS的功能.使用ArcGIS Engine,开发人员可以嵌入GIS功能到已经存在的应用中,比如自定义的工业软件和商用软件,这样的应用程序就可以让很多用户都实现GIS功能.ArcGIS Engine同时提供了空间分析的相关方法,在空间插值方面支持常用的反距离加权法插值、样条函数插值、克里金插值等常用的插值方法[1-3].目前一些学者已利用ArcEngine对降雨量的空间插值及等值线的绘制做了分析[2-4],但国内利用ArcEngine处理闪电数据少见报道.闪电强度分布是表征雷电破坏程度的重要指标之一,快速、精确地绘制闪电强度等值线,可以有针对性的对闪电强度较强的地区加强雷电防护.闪电强度等值线是闪电活动规律中最基本的参数之一.闪电强度等值线绘制的关键部分是用闪电定位数据进行空间插值,生成连续的闪电强度栅格图,再将闪电强度值相等的点连成强度等值线.本文中使用ArcEngine控件,基于已有数据进行空间插值,获得全局空间范围内各个点位的闪电强度.在Eclispe RCP的平台上,主要通过闪电数据的加载、反距离加权插值、等值线提取等方法,搭建了闪电强度等值线的自动绘制模块,将绘制的图形导出.

1 基于ArcEngine闪电强度等值线的自动绘制流程

图1 闪电强度等值线自动绘制流程

将闪电原始数据经Java语言处理后导入到Oracle数据库,利用sql语句从数据库中查询出某区域的闪电强度数据,该数据包含经度、纬度、电流强度,然后将闪电数据加载到shp图层,绘制闪电强度等值线的技术流程图如图1所示.

其中:①利用Java语言处理闪电数据时要对数据进行质量控制,剔除小于10 kA以及大于300 kA的正闪电数据;②Oracle数据库按省份建立了全国的闪电资料数据库,在数据的导入与输出的过程中,选中江苏省,然后利用南京地区的经纬度初步筛选出南京地区的闪电数据;③将统计出的数据转换成ArcGIS支持的dbf文件,有经度、纬度、电流强度3个字段;④将基数据加载到闪电强度数据图层;⑤选用反距离加权插值方法,对关联后的闪电强度数据图层的电流强度字段进行插值,生成闪电强度等值线[4-5].

2 反距离加权插值法

2.1反距离加权插值法的含义反距离加权插值IDW(Inverse Distance Weighted Interpotation),也可以称为距离倒数乘方法.

距离倒数乘方格网化方法是一个加权平均插值法,可以进行确切的或者圆滑的方式插值.方次参数控制着权系数如何随着离开一个格网结点距离的增加而下降.对于一个较大的方次,较近的数据点被给定一个较高的权重份额,对于一个较小的方次,权重比较均匀地分配给各数据点.

(1)

(2)

IDW通过对邻近区域的每个采样点值平均运算获得内插单元值.IDW是一个均分过程,这一方法要求离散点均匀分布,并且密集程度足以满足在分析中反映局部表面变化[5].

距离倒数法的特征之一是在格网区域内产生围绕观测点位置的“牛眼”.用距离倒数格网化时可以指定一个圆滑参数.大于零的圆滑参数保证,对于一个特定的结点,没有哪个观测点被赋予全部的权值,即使观测点与该结点重合也是如此.圆滑参数通过修匀已被插值的格网来降低“牛眼”影响.

2.2ArcGISEngine中反距离加权插值法中的参数设置在ArcGIS Engine中实现反距离加权插值主要分为以下4步:

1)设置插值的字段名.通过IDW接口的setZField方法设置需要插值的字段.

2)设置栅格分析环境,即输出结果的栅格大小,默认情况下为插值的点图层所占据范围的宽度或高度(取宽度和高度中的较小值)的1/250,也可以根据实际情况手动设置输入输出栅格大小.需要用到IDW接口的setCellSize()方法[5-6].

3)设置搜索半径类型,提供了可变值和固定值两种方式,用来确定进行插值的样本点的个数,即确定用待插点周围多少个样本点进行插值.当选择可变值时,需要为其设置插值的样本点个数,其取决于插值单元周围样本点的密度,密度越大,半径越小,实现可变搜索半径需要用到IDW接口的setVariable()方法.当选择固定值时,给搜索半径设置一个固定的值和搜索半径.搜索半径是一个常数,对每一个插值单元来说,用于寻找样本点的圆形区域的半径都是一样的.如果搜索半径距离内的点个数小于插值点个数的最小整数值,则搜索半径自动增大,实现固定搜索半径需要用到IDW接口的setFixed()方法[5-6].

4)设置栅格分析环境和搜索半径后就可以对样本点进行插值.用IInterpolationOp的IDW 方法实现反距离加权插值.该方法需要的参数分别为:IGeoDataset geoData,geoData为进行插值的点状要素,需要为其指定插值的字段;Double power,power 为距离的幂,幂是一个正整数,一般设置为2.IDW方法返回一个IGeoDataset地理数据集,然后将其转成IRaster,即得到插值后的闪电强度栅格图[7].

3 基于ArcGIS Engine闪电强度等值线的自动绘制的关键步骤

3.1闪电强度数据加载生成shp文件将从闪电数据库中查询出的闪电数据加载生成shp文件,在点数据的加载过程中主要用到了BufferedReader、IFeatureCursor、IFeatureBuffer等接口,BufferedReader从文件中读出数据,先将点数据加载IFeatureBuffer的对象,然后把其加载到IFeatureCursor的对象,最后该对象调用flush()方法刷空.其关键代码如下:

IFeatureCursor featureCursor = featureClass.IFeatureClass_insert(true);

IFeatureBuffer featureBuffer = featureClass.createFeatureBuffer();

IFields fields = featureBuffer.getFields();

int lngIndex = fields.findField("Longitude");

int latIndex = fields.findField("Latitude");

int valIndex = fields.findField("Value");

featureCursor.insertFeature(featureBuffer);

featureCursor.flush();

3.2闪电强度数据的插值闪电强度数据加载后,利用ArcGIS Engine IInterpolationOp接口的IDW方法实现反距离加权插值,关键代码如下,其中参数inFeatures为加载后的shp文件的路径;Output 为栅格文件的输出路径;Value为闪电强度数据的闪电强度值,CellSize参数由图片的大小决定,根据前面的分析将power参数设置为2.

interpolationOp.setInPointFeatures(inFeatures);

interpolationOp.setOutRaster(Output);

interpolationOp.setZField("Value");

interpolationOp.setCellSize(new Double(LightningData2Image.cellsize));

interpolationOp.setPower(2);

3.3等值线的提取利用ArcGIS Engine的Contour接口对插值后的栅格图生成等值线,关键代码如下,其中的参数inFeatures为插值后得到的闪电强度栅格图,ContourInterval设置等值线的间隔,Output为输出的等值线,BaseContour代表等值线从0开始绘制.

contour.setInRaster(inFeatures);

contour.setContourInterval(10);

contour.setOutPolylineFeatures(Output);

contourtool.setBaseContour(0);

3.4等值线的出图利用ArcGIS Engine的PageLayoutControl、IMapGrid、IGridLabel等接口完成图形的自动输出,IMapGrid用于添加经纬度网格,IGridLabel用于添加标签.部分关键代码如下,其中的参数deviceRect用于设置图片的大小,pageLayoutControl获取当前活动的视图,export对象负责闪电强度等值线图片的输出.

tagRECT deviceRect = pageLayoutControl.getActiveView().getScreenDisplay().getDisplayTransformation().getDeviceFrame();

IEnvelope pDeviceEnvelope = new Envelope();

pDeviceEnvelope.putCoords(deviceRect.left deviceRect.bottom, deviceRect.right deviceRect.top);

export.setPixelBounds(pDeviceEnvelope);

ITrackCancel pCancle=new CancelTracker();

pageLayoutControl.getActiveView().output(export.startExporting(), (int) export.getResolution(), deviceRect,pageLayoutControl.getActiveView().getExtent(), pCancle();

export.finishExporting();

4 实验结果与分析

4.1南京地区气候与环境南京地区的主要范围介于:东经118.34°E~119.24°E 、北纬31.24°N~32.61°N之间.大部分是低山丘陵,面积4 255.07 km2,江河面积752.06 km2,地处中纬,属亚热带季风气候,秋天干燥凉爽,冬季寒冷、干燥.每年6月起3~4个月内为南京的主汛期.在汛期里,强对流活动频繁,雷电活动也相对频繁.每日午后地表吸收太阳能增温至峰值,近地层空气温度也很高,暖空气膨胀上升,易产生强对流,直到傍晚太阳落山时才有所缓解.

图2 闪电数据入库

图3 闪电数据的查询

图4 闪电数据的管理

图5 闪电强度等值线

4.2闪电强度等值线的自动绘制技术的应用闪电强度分布是雷电灾害风险区划的量化指标之一.为了更好地研究闪电强度的分布,本系统使用Eclipse RCP(Rich Client Platform,富客户端平台)技术搭建,选用优秀的Java语言开发,以Eclipse开发平台为基础,建立了全国的闪电资料Oracle10 g数据库,在数据导入到数据库时,需要选择对应的省份及闪电定位仪型号,如图2所示,并加入了Job后台任务处理机制.由于在非UI线程里面不能直接进行UI处理,使用Display.getDefault().asyncExec(new Runnable())进行UI弹出对话框处理,数据在导入的过程中不会出现假死机的现象,给用户很好的体验效果.将江苏省的数据导入完毕后,利用数据库查询模块,可以查看闪电数据的起止时间,根据起止时间查看闪电数据的条数等,如图3所示.在某些特殊情况下,如某些数据重复导入了,利用闪电数据库的管理模块将该省份的所有数据删除,然后再重新导入.

绘制南京地区的闪电强度等值线时,系统会根据统计数据的起止时间查询出该地区的所有闪电数据,主要包含闪电时间、经纬度、强度等信息,并且将其写入到文本文件.数据自动加载后生成了点图层的shp文件,通过反距离加权插值方法自动绘制出闪电强度等值线,然后利用南京地区的地图掩膜出该区域的等值线,通过掩膜就可以把地图以外的数据剔除,只保留地图内部的数据.绘制出的等值线需要通过pageLayoutControl获取当前活动的视图,然后将其导出(支持jpg、tiff、emf、gif等),如图5所示,在配置项可以添加图名、图例、单位、指北针、比例尺,还可以调整网格大小,最后输出图形即可得到南京地区的闪电强度等值线.

5 结束语

本文中运用Oracle数据库统计出南京地区的闪电数据,利用ArcGIS Engine 提供的空间插值方法分析了闪电强度等值线的自动绘制步骤并给出了关键步骤的主要程序代码,其设计实现了闪电强度等值线的自动绘制模块,该模块在南京地区地理信息系统中得到应用并取得了较好的效果,该技术方法也为其他地区闪电强度等值线的自动绘制提供了较强的参考价值[8-9].

在实际的应用中,如果没有shp格式地图,等值线区域将是一个矩形区域.为了更好地结合地图绘制等值线,可以结合Google Map做进一步的开发,由Google Map提供地图,便可绘制出更漂亮的闪电强度等值线.

[1] 李井冈,姚运生,李贤华,等.在MapInfo中实现等值线图区域填充的快速算法[J].计算机工程与设计,2009,30(7):1780-1783.

[2] 宋丽琼,田原,邬伦,等.日降水量的空间插值方法与应用对比分析——以深圳市为例[J].地球信息科学,2008,10(5):566-572.

[3] 方书敏,钱正堂,李远平.甘肃省降水的空间内插方法比较[J].干旱区资源与环境,2005,19(3):47-50.

[4] 孟庆香,刘国彬,杨勤科.黄土高原降水量的空间插值方法研究[J].西北农林科技大学学报:自然科学版,2006,34(3):83-88.

[5] 汤国安,杨昕.ArcGIS地理信息系统空间分析实验教程[M].北京:科学出版社,2006:4.

[6] 范银贵.空间插值方法在绘制降水量等值线中的应用[J].水利水电科技进展,2002,22(3):48-50.

[7] 李新,程国栋,卢玲.空间内插比较[J].地球科学进展,2000,15(3):260-265.

[8] 朱求安,张万昌,余钧辉.基于GIS 的空间插值方法研究[J].江西师范大学学报:自然科学版,2004,28(2):183-188.

[9] 李朝奎,陈良,王勇.降雨量分布的空间插值方法研究——以美国爱达荷州为例[J].矿产与地质,2007,21(6):684-687.

猜你喜欢

等值线栅格插值
基于邻域栅格筛选的点云边缘点提取方法*
基于规则预计格网的开采沉陷等值线生成算法*
基于Sinc插值与相关谱的纵横波速度比扫描方法
等值线“惯性”变化规律的提出及应用
利用DEM的分层设色与明暗等值线组合立体方法研究
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析
等值线分析系统实际应用之等值线填充
不同剖面形状的栅格壁对栅格翼气动特性的影响
基于CVT排布的非周期栅格密度加权阵设计