裴洪云
(正元地理信息有限责任公司山东分公司,山东 济南 250101)
【摘要】城市地下管线是城市建设的重要内容和城市生存和发展的生命线。触及城市的各个角落,与人民生活息息相关。具有规模大、范围广、种类繁多、空间分布复杂、变化大、增长速度快、形成时间长等特点。二维的管线系统难以对大量的管线信息进行有效的描述和表达,不能直观地描述管线的三维特征及管线间的空间关系,不能真实地反映地下管线的空间分布状况。三维管线系统可以实现管线的三维显示与管理可使系统的直观性和可操作性得到大大的改观,使得本来在平面显示下错综复杂的管线变得更加清晰明了。整合城市地下综合管线数据资源,实现了地下管线的三维可视化管理、存储、查询、分析、定位等功能,形成了一套完善的城市地下综合管线数据资源管理数字化、可视化的三维管线系统。而错综复杂的管线若采用建模的方式形成是非常耗费人力物力的,本文介绍一种基于skyline的三维地下管线自动生成技术不仅可以自动生成三维地下管线而且具备数据管理查询、管线自动生成、下水管口定位等多种空间辅助决策功能,具有较好的可行性和实用性。
教育期刊网 http://www.jyqkw.com
关键词 Skyline;管线;管点;模型
0 概述
随着城市规模不断的扩大和生活水平的日益提高,城市地下管网系统越来越庞大。如何应对社会的发展,更好地服务于社会,作为城市的重要组成部分,地下管网将面临管理上的更高要求和严峻考验。管网系统在国内部分大中城市已经应用起来,中西部地区也在加紧建设的步伐。但是,仍然有许城市应用效果并不良好。这一方面是由于各单位自身的原因,另一方面是系统本身技术落后,不够灵活,不能适应发展的需求。以实际项目经验为依据,从地下管线系统的数据结构,结合Skyline的应用,简易介绍Skylie三维GIS技术在地下管网系统中的应用,引导用户建立一个先进、灵活、实用、安全、高效、三维立体的地下管网地理信息系统。
1 生成新的数据表
(1)根据三维管线起始点、终止点位置,每条二维管线都包含起始点坐标(x1, y1)和终止点坐标(x2,y2)信息,将二维管线图层中的“起始点管线高程”和“终止点管线高程”作为三维管线的的“起始点管线高程”和“终止点管线高程”,然后借助Skyline中IPosition61接口创建管线的起始位置点position1(简称P1)和终止位置点position2(简称P2)。
(2)管线的管径值统一按照与实际管道1:2000的比例来确定,管道的高程值则采用管线的起点管线高与管径相加之和。
(3)管线长度即起始点号位置和终止点号位置之间的空间距离,其中Vdist表示管线端点的高程差, Hdist表示管线在XOY平面上的投影长,distance表示管线两端点之间的空间距离。相应地,计算公式描述如下 Hdist=(P2.X-P1.X)2+(P2.Y-P1.Y)槡2 Vdist=P2.Altitude-P1.Altitudedistance=Hdist2+Vdist槡2 } 式中,每个位置点的X属性表示该点的X坐标值;Y属性表示该点的Y坐标值;Altitude属性表示该点的绝对高程值。
(4)偏航角(Yaw) Yaw是指视点和兴趣点的偏移角度,在三维坐标系中表示绕Z轴旋转的角度。Yaw范围为0°~360°,以正北方向为0°。其中Xdist表示管线在X轴上的投影长度,Ydist表示管线在Y轴上的投影长度。相应地,计算公式描述如下 Xdist=P2.X-P1.X Ydist=P2.Y-P1.Y Yaw=arctan(Xdist/Ydist)×180÷π }
(5)倾斜角(Pitch) Pitch表示视点和兴趣点的俯仰角度,在三维坐标系中表示绕X轴旋转的角度。Pitch范围为-90°~90°,以水平方向为0°。其中Vdist表示管线起点和终点的高程差,Hdist表示管线在XOY坐标系上的投影长度。相应地,计算公式描述如下 Hdist=(P2.X-P1.X)2+(P2.Y-P1.Y) 槡2 Vdist=P2.Altitude-P1.AltitudeYaw=arctan(Vdist/Hdist)×180÷π }
(6)旋转角(Roll)Roll表示视点和兴趣点的旋转角度,在三维坐标系中表示绕Y轴旋转的角度。Roll范围为-180°~180°,0°表示与水平方向平行。
(7)管线的生成,根据skline接口连接新生成的数据表,观点表创建三维模型对象,管线表包括方形管和圆管,方形管利用createBox()接口创建管线,圆形管用createCylinder()接口创建圆柱体,然后设置管线的长度,偏航角,倾斜角,旋转角、文理文件等,设置管点的偏航角,倾斜角,旋转角。然后能保存到fly文件中即可,在数据库连通的情况下,即可看到地下管线。
(8)关于井盖贴地的问题,可以通过skyline的接口GetGroundHeight Info()获取地表的高程,然后减去井的埋深,得到井的高程值,利用这个高程值,生成的井盖管点可达到贴地的效果。
(9)把管线数据导成shape文件,导成shape文件再加载到fly中,可以脱离数据库,随时可用。在skyline的pro中导出shape,把纹理文件,模型文件放到本地,然后按照一定组织方式导入这些shape设好长度,偏航角,倾斜角,旋转角、文理文件、模型文件等(如下图 属性设置),保存fly即可。
2 Skyline的接口支持
由于管线数据的长短不一的特殊要求和Skyline中对象的支持程度,目前管线数据在三维中显示的对象主要是圆柱体对象,即Cylinder对象(Building对象也可以实现);系统可以根据不同数据种类的管线制作不同颜色的三维管线数据,以便区别管线的种类,如果管线颜色有规定,我们也可以制作一个管线颜色符号库。管点数据在三维中显示的对象主要是模型对象,即Model对象。根据系统中不同管点数据制作不同的模型;同一种类的管点,根据结构类型的不同也可制作相应的模型,下图为生成三维地下管线的模型库。
3 提高三维浏览速度
三维场景的数据量是非常大的,尤其在地上建筑模型、地下管线数据同时加载的情况下,会导致浏览速度严重下降,为了解决这个问题我们可以用处理exe扩大内存的方法解决使用VS命令提示工具(如下图)执行editbin/LARGEADDRESSAWARE “exe路径“
4 生成效果
5 示例代码
管点生成代码
layer.FeatureGroups.Point.DisplayAsTerraExplorerX.ObjectTypeCode.OT_MODEL;
layer.FeatureGroups.Point.SetProperty("Altitude Method", 1);
layer.FeatureGroups.Point.SetProperty("File Name", Application.StartupPath + "[XPLFILE]");
layer.FeatureGroups.Point.SetProperty("Yaw", "[YAW]");
layer.FeatureGroups.Point.SetProperty("Pitch", "[PITCH]");
layer.FeatureGroups.Point.SetProperty("Roll", "[ROLL]");
layer.FeatureGroups.Point.SetProperty("Altitude", "[ALTITUDE]");
layer.FeatureGroups.Point.SetProperty("Scale X", "[SCALE]");
layer.FeatureGroups.Point.SetProperty("Scale Y", "[SCALEY]");
layer.FeatureGroups.Point.SetProperty("Scale Z", "[SCALEZ]");
layer.FeatureGroups.Point.SetProperty("Tool Tip", "[TOOLTIP]");
layer.FeatureGroups.Point.SetProperty("Max.VisibilityDistance","[MAXDISTANCE]";
layer.FeatureGroups.Point.SetProperty("Min.VisibilityDistance","[MINDISTANCE]";
layer.FeatureGroups.Point.SetProperty("Ground Object", 0);
layer.StreamStatus = StreamLayerStatus.SLS_NOT_STREAMED_ LAYER;
layer.Refresh()
6 结束语
三维管线的自动生成,在很大程度上提高了错综复杂管线的可视化,查询分析风方便直接,加上浏览速度的提升,使得三维管线在实际中应用更加编辑。
教育期刊网 http://www.jyqkw.com
参考文献
[1]Skyline6中文帮助手册[Z].东方道迩GIS运营中心/技术支持部.
[2]TerraExplorer Pro二次开发用户手册V6.1[Z].东方道迩GIS运营中心/技术支持部.
[责任编辑:汤静]