标题 | 基于GIS的大庆市震害预测系统研发 |
范文 | 张云辉+张若飞+朱东旭+裴彪+黄猛 摘要:文章根据WEBGIS的工作原理,在WEBGIS基础平台上,采用计算机网络和数据库管理技术,对大庆市的基础公共设施数据进行采集、存储、管理、分析、计算和图形处理显示,以百度地图作为互联网地理系统的底图进行开发,设计大庆市灾害预测信息平台,实现对基础公共设施数据的算法分析模拟情况。该系统的构建为大庆市的震害預测情况提供可靠的数据分析。 关键词:GIS,地震,震害预测,研究 随着社会经济的高速发展,人民生活质量的提升,城市的建设也越来越趋于完善,在此社会现状和背景下,迫切需要一套评定和提高城市抗震防灾能力加强地震关键技术研究,采取有效措施减少地震损失,因此,我们决定采用IT+GIS的方式设计一套针对此情况的实时性信息系统。 廊坊市震害预测系统是本系统采用B/S系统架构,基于GIS空间数据库、坐标转换技术、GIS空间分析技术和PHP开发技术,应用震害因子算法预测不同强度地震灾害条件下城市的受损程度及空间分布并进行二维可视化显示、综合查询分析和高效的辅助决策功能,确定城市抗震薄弱环节并快速预警。本文详细介绍了本系统的开发过程。 一、系统分析 大庆市震害预测系统的系统功能结构图如图1所示。它的工作流程是根据大庆市地质灾害分布及危险度、建筑物和建筑设施的基本情况(包括名称、空间分布、结构类型、目前工作状态等),建立了大庆市地震震害预测空间数据库,采用MVC设计模式+CI框架,结合GIS空间分析应用模型和地震工作基本原理,对地震灾害破坏程度及空间分布做出预测,实现城市防震减灾工作中由静态规划到动态管理的转变。 二、系统设计与实现 大庆市震害预测系统是基于PHP CI框架+MYSQL数据库+百度地图接口+ARCGIS Shp图层(进行投影转换)进行开发的,充分利用GIS工具软件对空间数据库的处理,分析功能,提高了应用系统的开发效率,开发出的系统具有良好的外观效果,强大的底层数据库,可靠性良好,移植性强,易于维护。 (一)CI框架的选取 如果在IT系统建设过程中缺乏总体架构和规划,系统将在管理上面临众多的挑战。比如:业务越来越复杂,IT系统越来越庞大,检查一个错误就需要在整个项目中查找;不清楚IT系统中各个模块的现状,更谈不上合理规划新的功能;系统难以维护等问题。因此,一个适用的框架是非常重要的。 CodeIgniter(CI)是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。它有如下特点: 1. 小巧的框架,CodeIgniter 3包括用户手册的安装包仅有 2MB 大小。 2. 出色的性能,CodeIgniter 的性能始终优于大多数同类框架。 3. 没有大规模集成类库,CodeIgniter 不是一个大而全的框架。在保持简洁的同时提供足够强大的功能来提高你的生产力,在此基础之上也有许多第三方扩展为你提供更多功能。 4. 几乎 0 配置,CodeIgniter 奉行约定胜于配置的理念(例如把模型文件放到“models“文件夹中)。当用户希望修改配置的时候,在“config“文件夹中有许多配置项供用户修改。 5. 广泛兼容各种主机环境,CodeIgniter 3只需 PHP 5.3.7 版,几乎可以运行在任何虚拟主机或云平台上。对于需要数据库的 Web 应用来说,CodeIgniter 支持包括 MySQL 在内的大多数常见数据库。由于本系统经过测试后要部署在大庆市自己的服务器上,因此兼容性强是选择本框架的核心。 基于以上优点,CI框架非常适合本系统的开发。 基于CI框架,系统的主界面通过选择xx数据集,可以进行分类数据的相应的展示,这里用到了百度地图的BMAP.POINT对后台数据进行集成,使用icon类进行点颜色的选择,并且设置了图形的透明度等属性,以求给用户一个大方美观的界面。 系统的主界面如图2所示。 (二)空间数据库设计 基于任何一个GIS系统的核心都是数据库的建设,由于本系统要对城市的抗震能力进行分析,因此不仅要包含基础的行政区划图、建筑物统计信息表等(其中包含了建筑物类型、空间分布、结构类型、抗震设防、目前工作状态等30余项内容)基础地理信息,还要包含生命线(铁路、公路、水系、桥梁、水管、电线、煤气管线、暖气管线)等基础信息,经过半年多的前期调研,整个基础信息数据文件有13.4GB之多,这么多的数据如果不能给他们进行清晰的按类划分,对于程序员的后期开发将会产生灾难性的后果,因此项目组依据前期所调查出来的结果,把所有数据按照类型分为三大类(公共基础数据、生命线数据、地理信息数据)近200张表。如图3、图4所示。 三、数据查询 有了数据库,那么下一步就是提供给用户方便的查询功能,据百度大数据统计,在所有的IT用户中,85%以上的用户每天适用最频繁的就是查询功能。为了方便用户本系统提供了精确查询和模糊查询2个功能。尤其是模糊查询,是本系统的一个特色,为了在模糊查询时能精确查找出所有匹配的建筑,项目组对数据库中的建筑物所在位置字段进行了重新定义,把原来的一个字段分解为了5个字段(建筑物所在的(市)字段,(辖区/县/胡同)字段,(街道/乡镇)字段,(小区名/村名/单位名)字段,(楼号)字段。),并且重写了search类进行实现。虽然增加了工作量,但是对于后期的系统开发却大大提升了效率,效果如图5所示。 (一)地震烈度算法的选择 本系统提供圆形模型和线性模型两种烈度算法给用户提供选择,在进行相应的参数输入后,进行计算,然后用户选择添加想要分析的数据,系统经过一系列的比对算法之后,会给用户呈现出不同颜色的数据集。 此部分是整个系统的核心部分,在计算机行业中有一句话叫:数据的呈现是软件,程序的灵魂是算法;为此专门设计了一个烈度图的類intensityShow。 在此类中共有三个方法intensityRArray,drawOval, ovalPoint. 1. 根据烈度返回距离 intensityRArray方法 此方法根据沙海军提出的衰减模型进行距离的选择和判断,根据相应计算出的烈度,然后进行距离的选择,以确定长短轴。 2. 绘制椭圆 drawOval方法 此处调用百度地图的BMAP. Polygon方法进行覆盖物的绘制,这样就可以和百度地图进行对接,使得功能在百度地图上展示出来。 3. 计算烈度圈的点 ovalPoint方法 此方法是核心的算法,因为百度地图BMAP. Polygon方法要求的是一个装有经纬度数据点的数组,因此,计算相应的数据点就成为了此算法的核心部分,根据椭圆的标准公式和直线的点斜式公式,依次对椭圆上180度的点进行计算,分别在四个区间内进行分别处理,这样我们就可以得到经过计算的360个点。 a^2=b^2+c^2长短轴之间的关系(1) F1P+F2P=2a椭圆上任意一点到两焦点之间的距离相等(2) x^2/a^2+y^2/b^2=1 x轴的椭圆标准方程(3) y=kx+b(默认过椭圆圆心,因此b值为0) (4) 我们模拟这条线从0度开始,持续选择180度,在每一度进行计算,因此,我们没一度都可以得到第一(第二)象限,第三(第四)象限的坐标点,逐次计算,最终得到360个椭圆的边界点。 但是这里面还有两个核心的问题没有解决。 1. 如何得到这个长轴的点呢?因为它使用的是经纬度的单位,所以就得使用经纬度的坐标进行转换,但是百度地图的投影和我们日常使用的投影完全不一样,如果强行使用则会产生较大误差,所以必须利用百度的相应接口进行间接的坐标计算,因此我使用了缩进方法,每次以极微弱的经纬度差距在同一经度(纬度)进行向前寻找,以距离为限制条件,一旦搜索到和距离相匹配的点,则就选中这个点,那么这个问题就解决了 for(vari=0.0000;i var bLat = centre.lat+i; bPoint = new BMap.Point(centre.lng,bLat); if(map.getDistance(centre,bPoint).toFixed(0)==b.toFixed(0)*1000){//在这个经度下寻找距离为b的点 bPointLat = bLat; break; } } 2. 如何将绘制好的椭圆进行旋转呢? 在线性代数中,坐标相对位置的转换可以看成矩阵的变换,则使用向量法,将每一个点的坐标向同一方向进行偏移,最终实现了椭圆的旋转。 var x=Math.abs(lng*Math.cos(angle)); var y=Math.abs( lng*Math.sin(angle))。 (二)建筑物震害评估 由于大庆市有数万栋建筑,因此在计算时本系统采用基于网格计算的震害因子法。并基于不同的震级给出不同的建筑物受损情况。 如何在现有的极少的数据下进行拓展查询呢?这些数据并没有被调查到,只能最大程度的去模糊搜索这些数据,策略是若某一栋被搜索的建筑并没有数据,那么我们就查找它在哪一个区域,因为这个区域的属性应该是一样的,我们就默认这个区域的宏观属性是所查找建筑的详细属性,这样,即使数据不全,我们也可以对整个城市的建筑群,进行一个客观的评估。 图7是经过计算分析的经济损失是否达到震害损失合格线的效果图。 (三)图表绘制 经上述算法和相关计算,将各种破坏情况下的数据统计绘制出来。 此图表的绘制主要使用EChart进行实现,主要调用Echart的EChart.setOption()方法进行图标绘制, EChart.title()设置标题,EChart.tooltip()设置工具信息,EChart.legend()设置x轴坐标信息,EChart.series设置数据比例值,这样数据图表就渲染和制作完成。 (四)截图绘图PPT&&WORD快速产出 在整个系统流程中我们设计了一套流程进行模拟分析,设置模拟地震,选择分析数据集,进行饼状图绘制,导出PPT&&WORD,在此过程中,我们在关键流程位置进行自动截图,这在我们点击事件中点击触发,但是并不影响用户对本系统使用,截图时是每次成图的界面进行自动截图,然后将这些图片早生成word时自动导入到word中,这样达到快速产出的功能。 此功能需要调用office的接口,为此我们专门写了一个类,PowerPointExport进行实现,在此类中,我们把引用office如下方法getProperties.createTemplatedSlide实现每一页模版的创建;getProperties. createRichTextShape实现创建文本的样式;getProperties. setHorizontal实现创建偏移量的设定;getProperties.createTextRun实现绘制文本框;getProperties.setPath实现路径的保存;getProperties.setDescription实现背景的渲染等一系列近20种方法进行修饰,这里不再一一赘述。效果如图10所示。 四、结论与展望 本系统利用IT+GIS技术,实现了对公共数据的分享,分析,与发布,方便业内人士进行数据分析,该系统的开发希望可以让业内人士避免在数据的繁杂中寻找自己想要的可用数据,方便了人们的日常工作,同时由于本系统在数据库维护,GIS空间数据抽取算法中还有一些问题,在今后的研发过程中将做进一步的修改和优化。 参考文献: [1]汪素云.中国分区地震动衰减关系的确定[J].中国地震,2000(02). [2]姜开兴.城市抗震减灾策略[J].中国减灾,2007(11). [3]李淑贞.地震灾害评估[M].地震出版社,2006. *基金项目:2016年国家级大学生创新创业训练计划项目——基于GIS的大庆市震害分析模拟系统(201611775029);中央高校基本科研业务费专项资金创新团队资助计划项目(ZY20110102)。 (作者单位:防灾科技学院) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。