程朋根,李志荣,聂运菊,2,林淇昕
(1.东华理工大学 测绘工程学院,江西 南昌 330013;2. 流域生态与地理环境监测国家测绘地理信息局重点实验室,江西 南昌 330013;3. 广西空间信息与测绘重点实验室,广西 桂林 541004)
随着城市现代化的飞速发展,人们对城市道路照明的需求越来越高[1]。照明设施的建设、管理与服务水平的高低越来越体现一个城市社会保障能力的强弱,也反映了一个城市现代化程度的高低。城市道路照明能为各种车辆的驾驶人员以及行人创造良好的视觉环境,达到保障交通安全、完善城市功能、提高交通运输效率、方便人民生活、降低犯罪率和美化城市环境的目的[2]。因此在城市管理系统中不断出现城市道路附属设施管理方案,使城市路灯管理更加科学化、系统化,提高城市路灯的管理水平[3]。三维GIS突破了空间信息在二维地图平面中单调表现的束缚,为各行各业以及人们的日常生活提供更有效的管理、辅助决策支持[4]。基于三维GIS管理系统能够为客户提供直观的三维路灯展示,能更好地为客户提供关于路灯建设、路灯改建、路灯管理等辅助决策。
在数字三维城市中,众多优秀的GIS软件公司也相继推出各自的三维软件,例如SuperMap 8c、Skyline或CityMaker等三维平台;AutoCAD、3DMax、SketchUp或CityEngine等三维建模软件。戴彬,钟若飞,孙伟利,朱红,张西童等人采用车载激光雷达点云数据对道路附属设施或路灯进行三维重建,道路附属设施三维数据精度高,但点云处理的过程复杂,仍需要大量的人工交互,且数据量大[5-8]。赵雨琪,刘茂华,吕永来,陈秋晓,谢衍忆[9-13]等人利用CityEngine参数化建模的特点,在道路中心线引入外部路灯模型进行路灯的批量建模,但所建模型的位置并不是在实际路灯坐标点上,从而导致路灯位置不准确[9-13]。同时,三维城市建设中道路附属设施通常采用3DMax或SketchUp进行手工建模,再将路灯三维模型手工摆放路灯坐标点上,或随意摆放到不准确坐标的道路两旁,因此这种方法导致建模效率低、路灯位置不精确等问题。
本文针对城市道路附属设施中路灯采用车载激光雷达点云数据进行三维重建,点云处理过程复杂,人工交互多,数据量大;以及采用3DMax或SketchUp进行手工建模及摆放,效率低,位置不准确等缺点;提出基于3DMax与CityEngine的城市道路路灯批量建模与摆放方法。首先,在3DMax 根据实际路灯的外观建立相同的路灯模型;其次,分析路灯坐标点与道路中心线的空间关系计算邻近角,再导入到CityEngine中,在路灯坐标点上利用几何函数与路灯坐标点的属性信息批量自动建模,并通过规则程序调整路灯的大小与方向;最后,将路灯模型批量单栋导出,导入到3DMax中能够直接进行模型修改与格式转换,能够更快捷地为三维平台提供数据。为城市管理中城市道路附属设施路灯的三维建模提供实用、高效率、高精度的解决方案。
本文研究对象为城市道路附属设施中的路灯。路灯坐标点数据与道路中心线数据是三维建模的基础,对佛山石湾街道忠信路、东风路、江滨路等道路中的路灯进行采集,利用3DMax进行建模。采用CityEngine软件通过编写规则程序引入外部静态模型,联接坐标点空间数据、属性信息、规则、路灯模型库进行自动建模。
首先,应用GIS和CAD等技术获取道路中心线、路灯坐标点数据,导入ArcMap中添加路灯高度、路灯样式、路灯邻近角字段,将对应的属性信息添加到属性表中。其次,在3DMax中建立与实际相同的路灯模型,然后在CityEngine中编写批量自动生成路灯三维模型的程序,并批量自动生成模型;其中通过几何创建函数引入外部静态模型,先初始化路灯的样式、大小、方向,然后在建模过程中将路灯坐标点属性表的信息作为实际参数传递给初始化的参数,使路灯的真实样式、大小、方向等信息表现出来,以达到与真实一致。最后,在CityEngine中批量单栋导出obj格式的路灯模型,然后在3DMax中运行批量导入obj格式模型的插件(MaxScript脚本)导入模型,将导入的三维模型数据进行场景整合和格式转换,最终导入到SuperMap 8c或Skyline三维平台中,总体流程如图1所示。
运用3DMax强大的建模功能进行三维建模,建模的过程中综合运用拉伸、分割、旋转、对齐及布尔运算等技术,把路灯的模型做到与实物一样,并注意各个路灯模型的尺寸大致一样。3DMax中建立的路灯模型如图2所示。
在模型导出前,将模型的轴点中心坐标值统一设置为(0,0,h/2),其中h为模型的高度,朝向均为正北方向;最后模型导出为obj格式,名称依次为1至12。
1.2.1 提取路灯坐标点与道路中心线
在城市三维建模中,通常客户会提供建模矢量基础数据,例如建筑点、线、面数据,道路中心线,交通点、线、面数据,水系点、线、面数据等,CAD数据如图3与图4所示。如果原始数据是CAD数据,需要提取道路中心线数据与路灯坐标点数据;然后添加到ArcMap中分别保存为shp格式,并添加空间参考,本文采用UTM84投影坐标系。
图1 批量建模流程
图2 路灯模型库
图3 CAD图层管理
图4 CAD道路中心点与路灯坐标点
在路灯坐标点数据的属性表中,添加路灯高度、路灯样式、路灯邻近角字段,并对照外业采集的相片与路灯模型库中的路灯进行对照,把对应路灯模型的样式代码作为属性值添加到路灯样式属性中,同时将路灯的真实高度录入到路灯高度属性中。路灯坐标点属性表中需添加的字段如表1所示。
在冠词选择参数的基础上,Ionin 等提出波动假说,认为普遍语法在二语习得中具有完全可及性,如果母语中缺少冠词系统,二语学习者在开始习得冠词时会在两种参数值之间波动,直到足够的二语输入使其可以设定正确的参数值,从而完全习得冠词[9]16 。
表1 路灯坐标点属性表添加的字段
1.2.2 判断空间关系
判断路灯坐标点与道路中心的空间关系,将道路中心线作为路灯坐标点的邻近要素,计算路灯坐标点的邻近角,如图5所示,并把邻近角作为属性值添加到路灯坐标点的属性表中。在批量自动建模过程中利用邻近角来确定路灯的方向。注意:邻近角以正东方向为正轴方向,逆时针为正,顺时针为负。
基于CityEngine参数化批量自动建模是计算机程序三维建模,路灯模型的批量生成依赖于CGA规则程序的几何函数。采用CGA规则中的几何创建函数,引入外部的静态模型,并根据路灯坐标点、路灯样式属性值确定路灯的样式。引入前的静态模型在3DMax中的朝向为正北方向,在CityEngine中场景坐标系y轴以正北方向为正轴方向,同样逆时针为正,顺时针为负。采用几何变换函数调整路灯模型的大小,设置模型的偏移量,根据邻近角调整路灯的方向。批量自动生成模型的流程如图6所示。
图5 计算路灯坐标点要素的邻近角
图6 批量生成路灯模型步骤
CityEngine中模型的旋转角度计算过程(相对于正北方向)为:
批量建模过程中主要用到的函数如表2所示。
1)设置路灯样式: 在CGA规则中初始化路灯样式,生成模型前联接路灯坐标点表示路灯样式的属性字段,建模时路灯坐标点中代表路灯样式的属性值作为实际参数确定路灯的样式;
AttrLAMP_STYLE=1
importLamp-->
i(getObj(LAMP_STYLE))
表2 主要用到的几何函数
2)设置路灯的高度: 在CGA规则中初始化路灯的高度,生成模型前联接路灯高度字段,批量建模时路灯坐标点的高度属性数据作为实际参数确定路灯的高度信息。
AttrLAMP_HEIGHT=10
importLamp_heitht-->
s(x,LAMP_HEIGHT,z)
3)设置路灯的旋转角度: 在CGA规则中初始化路灯的邻近角,联立路灯坐标点的邻近角,计算路灯模型的旋转角度angle_z,建模时路灯点属性数据邻近角作为实际参数确定路灯的旋转角度。
AttrNEAR_ANGLE =10
angle_z=NEAR_ANGLE-90
importLamp_heitht-->
rotate(rel, world, 0,angle_z, 0)
将预处理完成的shp格式的路灯坐标点数据导入CityEngine中,选择路灯点并关联路灯点的路灯样式、路灯高度、邻近角字段,然后运行CGA批量建模规则程序,批量生成路灯三维模型。建模程序依次读取每一个shp点以及对应的属性信息(路灯样式、路灯高度、邻近角),根据路灯点的属性信息获取对应样式,生成对应高度的路灯,并且根据邻近角调整路灯的角度,路灯的灯臂与道路中心线垂直。采用该方法对实验区佛山石湾街道忠信路、东风路、江滨路等道路的路灯进行建模,批量生成的路灯模型如图7所示,路灯模型的生成效率高,模型的结构基本一致,路灯的朝向与实际几乎相符。
图7 CityEngine批量生成三维路灯模型
数字三维城市建设中,在三维平台(例如:SuperMap 8c或Skyline)中构建三维场景,通常需要在3DMax中将三维场景分别转换为fbx格式或.x与xp2格式的数据,然后再导入到三维平台中。由于三维平台中导入三维场景数据格式的要求,所以本文批量自动建立的路灯模型最终需要导入到3DMax进行格式转换,所以在CityEngine批量建模的模型需要全部导出。然后使用批量导入obj格式模型的插件将文中图7的路灯模型导入到3DMax中,如图8所示,路灯模型可以直接进行修改,能够更高效地为三维平台构建三维场景提供三维数据,并可方便地进行数据共享和重复利用。
图8 3DMax批量导入的路灯三维模型
综上所述,本文以二维城市测绘数据的空间信息和属性信息为建模基础,通过分析路灯坐标点与道路中心线的空间关系,采用邻近角来控制路灯的方向,编制批量自动生成路灯三维模型的CGA程序,将二维数据的属性信息与程序中设置的参数建立联接关系,控制模型的样式、大小及方向,其程序方法简单,实现成本低,建模效率高,同时在路灯坐标点上建立路灯模型提高模型位置的精度;然后使用编制的模型导入插件,将模型导入到3DMax软件中进行场景整合与格式转换,更高效地为三维平台中提供三维场景数据。
本文提出的基于3DMax与CityEngine的城市道路路灯批量建模与摆放方法可以更充分利用路灯坐标点二维数据的空间信息和属性信息,并对路灯三维模型的样式、大小及方向进行有效控制,快速批量自动生成坐标更为准确的路灯三维模型;为三维城市建设中道路附属设施路灯的批量自动建模提供了实用、低成本、高效率的解决方案。但该方法对城市道路附属设施中具有文字信息,如路牌的三维建模仍具有局限性。
[1] 黄飞龙. 城市道路照明管理规划系统中路灯自动配置算法和照明评价模型[J]. 测绘科学技术学报,2011,28(3):231-234.
[2] 杨建华. 新建城市总体规划中路灯照明专项规划思路探讨——以贵安新区路灯照明专项规划为例[J]. 中外建筑,2016(10):84-90.
[3] 万剑华,陶为翔,刘国庆. 基于WebGIS和GSM短消息的城市路灯智能管理设计[J]. 测绘工程,2007,16(3):52-55.
[4] 朱庆. 三维GIS及其在智慧城市中的应用[J]. 地球信息科学学报,2014,16(2):151-157.
[5] 戴彬,钟若飞,胡竞. 基于车载激光扫描数据的城市地物三维重建研究[J]. 首都师范大学学报(自然科学版),2011,32(3):89-96.
[6] 孙伟利. 基于车载LiDAR技术的公路三维建模与应用[D].北京:首都师范大学,2013.
[7] 朱红,张正鹏. 车载LiDAR点云数据分割与半自动化建模方法[J]. 国土资源遥感,2014,26(1):47-51.
[8] 张西童,刘会云,李永强,等. 车载LiDAR场景中路灯的提取与识别[J]. 测绘工程,2016,25(9):50-54.
[9] 赵雨琪, 牟乃夏, 张灵先. 利用CityEngine进行三维校园参数化精细建模[J]. 测绘通报, 2017(1): 83-86,111.
[10] 刘茂华,杨洋,岳强. CityEngine与ArcGIS结合的辅助道路规划设计[J]. 测绘通报,2016(12):64-67,95.
[11] 吕永来,李晓莉. 基于CityEngine平台的高速铁路建模方法的研究与实现[J]. 测绘,2013,36(1):19-22.
[12] 陈秋晓,张斌,吴宁,等. 城市道路参数化建模规则初探[J]. 建筑与文化,2013(7):40-41.
[13] 谢衍忆,黄良平,陈元增,等. 基于CityEngine的城市三维快速建模方法及应用[J]. 地理空间信息,2016,14(2):39-40.