Skyline根据适量数据生成三维管线

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Skyline在三维管线中的应用

(北京东方道迩信息技术有限责任公司事业部skyline业务部)

摘要:随着数字城市在管理和应用中的不断发展,城市管网系统也在国内部分大中城市中也已经应用起来,广泛应用于城市规划、市政、供排水、燃气、通讯、园林绿化等行业。城市管网为城市建设的规范化、科学化、数字化、智能化及其信息管理、信息共享建设,提供了有效的进行科学化的管理手段。基于Skyline的数字地下管线建设,可以更直观的展示各种管线在城市管网系统中位置,如果遇到突发事件,它能对事故做出更加形象的三维可视化展示,并且能及时、准确地对进行中事态发展的做预测演示,能为决策者果断采取有效控制措施提供三维空间展示功能,使损失降到最低。

关键词:skyline三维管线生成;城市管网;管线;地下管线;数字城市

1、概述

随着城市规模不断的扩大和生活水平的日益提高,城市地下管网系统越来越庞大。如何应对社会的发展,更好地服务于社会,作为城市的重要组成部分,地下管网将面临管理上的更高要求和严峻考验。管网系统在国内部分大中城市已经应用起来,中西部地区也在加紧了建设的步伐。但是,仍然有许多城市应用效果并不良好。这一方面是由于各单位自身的原因,另一方面是系统本身技术落后,不够灵活,不能适应发展的需求。

以实际项目经验为依据,从地下管线系统的数据结构,结合Skyline的应用,简易介绍Skylie三维GIS技术在地下管网系统中的应用,引导用户建立一个先进、灵活、实用、安全、高效、三维立体的地下管网地理信息系统。

2、地下管网数据结构

地下管网数据中包括两部分:一部分是管线矢量数据,另一部分是管点矢量数据。

管线数据

管点数据

一、管线数据结构中必要的属性字段

二、管点数据结构中必要的属性字段

3、Skyline在地下管网支持的数据

由于管线数据的长短不一的特殊要求和Skyline中对象的支持程度,目前管线数据在三维中显示的对象主要是圆柱体对象,即Cylinder对象(Building对象也可以实现);系统可以根据不同数据种类的管线制作不同颜色的三维管线数据,以便区别管线的种类,如果管线颜色有规定,我们也可以制作一个管线颜色符号库。

管点数据在三维中显示的对象主要是模型对象,即Model对象。根据系统中不同管点数据制作不同的模型;同一种类的管点,根据结构类型的不同也可制作相应的模型。

4、三维管线的生成

三维管线的生成包括两部分:一、在Skyline中三维管线的生成;二、在Skyline中三维管点的生成。

一、管线生成

由管线的属性数据,管线种类、起点X坐标、起点Y坐标、起点埋深、终点X坐标、终点Y坐标和终点埋深,在skyline三维软件中根据接口CreateCylinder方法,创建三维管线数据(源码算法略)。

在Skyline软件中效果图如图一和图二所示

地下管线管线数据生成展示图一

地下管线管线数据生成展示图二

二、管点生成

由管点的属性数据,井X坐标、井Y坐标、井底深和旋转角,管点在skyline三维软件中根据接口CreateModel方法,创建三维管点数据(源码算法略)。

其中:旋转角是设置井的方向,用于衔接管线。

在Skyline软件中效果图如图三所示:

管点数据生成并

且套接三条管线

地下管线管点生成展示图三

三、示例代码

SkyLine场景中的三维管线同样可以根据管线矢量图层自动生成。具体思路无非是获得矢量图层的空间信息和相关属性,

然后在三维场景中进行渲染。下面提供相关样例代码,以供参考。

//生成3D管道

private void btnBulidPipe_Click(object sender, EventArgs e)

{

MapLayer lyrTemp = new MapLayer();

lyrTemp = (MapLayer)yers.Item(0);

TableDesc TabDesc = new TableDesc();

TabDesc = lyrTemp.Records.TableDesc;

Recordset recs = lyrTemp.Records;

Line lineTemp;

Points ptsTemp;

ESRI.MapObjects2.Core.Point ptTemp, ptBeg, ptEnd;

double douPipeGJ=0.0;//管径

string strPipeCZ=null;;//材质

//管线数据的属性表中已有字段

//规格材质长度上井管标高下井管标高标高位置岔管类型

//需要传入数据

//起点坐标(x,y,h) 终点坐标(z,y,h) 管径材质纹理名称其它注释信息

ptBeg = new ESRI.MapObjects2.Core.Point();

ptEnd = new ESRI.MapObjects2.Core.Point();

int iGroupID = clsObjTree.IsExistGruop(DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(), "");

for (int i = 0; i < recs.Count; i++)

{

if (recs.Fields.Item("Shape").V alue != System.DBNull.V alue)

{

lineTemp = (Line)recs.Fields.Item("Shape").V alue;

}

else

{

return;

}

if (recs.Fields.Item("上井管标高").V alue != System.DBNull.V alue)

{

ptBeg.Z = -(double)recs.Fields.Item("上井管标高").V alue;

}

else

{

MessageBox.Show("上井管标高未赋值");

}

if (recs.Fields.Item("下井管标高").V alue != System.DBNull.V alue)

{

ptEnd.Z = -(double)recs.Fields.Item("下井管标高").V alue;

}

else

{

MessageBox.Show("下井管标高未赋值");

}

if (recs.Fields.Item("材质").V alue != System.DBNull.V alue)

{

strPipeCZ = (string)recs.Fields.Item("材质").V alue;

}

相关文档
最新文档