基于WebGIS的校园地下管线断面分析功能的设计与实现
作者:胥啸宇 孔维华 田鹏艳
来源:《科技风》2021年第05期
        摘 要:结合以Geodatabase模型为基础的校园地下管线数据,使用ArcGIS API for JavaScript,实现了校园地下管线的断面分析功能,给校园地下管线的建设与发展提供理论依据。
        关键词:WebGIS;地下管线;纵断面;横断面
        Abstract: Combine with campus underground pipeline data based on Geodatabase model,The article uses ArcGIS API for JavaScript to realize the section analysis function of campus underground pipeline,which provides theoretical basis for the construction and development of campus underground pipeline.
        Key words:WebGIS;Underground Pipelines;Vertical Section;Cross Section
        校园地下管线在如今校园发展中尤其关键,被誉为“生命线”[1],是维持整个校园正常运行的基础设施,给校内师生的生产生活提供重要保障[2]。紧跟校园的发展,地下管线也在不停变更与完善,管线的维护与管理面临着巨大的挑战。WebGIS在近些年得到了高速的发展,在校园地下管线中被充分运用,使用该技术得到的纵横断面图可以清晰、直观地展示地下管线的埋深情况以及管线与地面、管线与管线间相应的空间位置关系[3],给校园地下管线的管理、施工、修理与维护提供重要的理论依据[4]。
        1 管线属性数据库设计
        研究使用的数据是基于ArcGIS的Geodatabase的某校园的地下管线数据,实现了图形
数据与属性数据的一体化[5]。校园地下管线种类主要有电力、燃气、自备水、自来水等[6],各个种类的管线屬性结构并非完全一致的,但其空间结构基本相同,每一段管线的端点必须有管线点覆盖(作图时可进行拓扑检查),管线处一般为暖气、电力、水、燃气管线等[7],而管线点处一般为直通、三通、检查井等。管线和管线点关系如图1所示。
        制图创建图层的过程中,可以给每种管线点、管线建立字段。每种管线的编码可以通过字符加以区分,例如供水中管线点用ZP开头,管线用ZL开头。管线数据的属性表如表1、表2所示。
        2 地下管线纵横断面分析的设计
        2.1 地下管线纵横断面分析设计过程
        使用者在进行断面分析时,首先要制作断面线,在纵断面中断面线与管线相交的个数唯一(若断面线与多条管线相交,只提取相交的第一条管线),横断面中断面线可以与管线的交点个数不唯一,之后进行计算得到结果,并标出相关数据,直观地展示管线与地面,管线与管线的相对位置关系。纵横断面分析的流程如图2所示。
        2.2 纵断面图生成方法
        管线纵断面图纵坐标表示的是管线两个端点的高程,横坐标表示的是管线两个端点间的距离,主要流程如下:
        (1)选择图层;
        (2)用户编辑断面线;
        (3)获取相应的属性数据,包括起点编码编码、管底标高、埋深(终点也是相应的字段)等字段内容;
        (4)绘制动态坐标轴。同一类管线,他们的在地下的埋深、长度是不尽相同的,因此要根据他们的高程、管线长度动态绘制坐标轴;
        (5)绘制纵断面图。红指地面,蓝指管线,根据公式:
        2.3 横断面图生成方法
        前四步跟纵断面绘制的方法基本相同,但在第三步中还要获取管径、断面线与管线交点等字段内容。第五步,绘制横断面图。根据公式:断面高程=管径×2+管底标高,绘制横断面图,由于管径单位与高程单位不在一个数量级上,因此在作图时,管线横截面使用相对的管径长度。管线与断面线交点间的距离,可以通过坐标使用距离公式得到。横断面图结果见图4所示,其中红代表地面,管径由于是固定的几个值,我们用不同的颜表示。
        3 ArcGIS API for JS的使用
        本文使用ArcGIS API for JavaScript完成校园地下管线纵横断面分析功能,主要包括数据获取、图形绘制两个部分。
        3.1 管线属性数据的获取
        我们根据需要断面分析的图层,实例化IdentifyTask类。再使用API中的Draw类实现在graphics图层上绘制断面线,这里我们设计为纵断面的断面线由直线类(LINE)绘制,横断面线由折线类(POLYLINE)绘制。与断面线相交的管线图形参数输入到ry中,通过IdentifyTask的回调函数execute,即可访问这些管线的图形、坐标、字段等信息。
        3.2 绘制纵横断面图
        利用API中的gfx模块进行纵横断面的图形绘制。我们先设计动态坐标函数,纵断面的动态坐标根据管线的长度、地面高程设计,而横断面根据管线间的距离,地面高程最大值来设计。根据我们获取的管线字段信息,即可完成断面图。具体操作为:用户点击按钮,绘制断面线,根据相对应的管线属性数据,使用gfx模块中的createSurface方法创建画布,本系统中创建了两层画布,一层用于存放坐标信息(画布底为黑),另一层用于存放管线信息(画布底层为透明)。再分别使用createLine方法制作地面、管线线段,createText方法绘制文本,createCircle方法创建管道界面即完成纵横断面的制作。
api设计