陈相
(上海市测绘院,上海 200063)
城市综合管网与人们的生活息息相关,是保障城市安全运行的重要基础设施,被称为城市“生命线”[1]。近年来由于管网事故频发,造成了巨大的人身和经济损失,李克强总理在调研时曾强调既要重“面子”,更要重视城市的“里子”,因此城市管网科学智慧管理,保障管网安全成为政府当前的重要工作[2]。
随着地理信息技术(GIS)等技术的发展,给城市地下管网信息系统的建设提供了新的方向[3]。利用这些核心技术,依托“信息化”“数字化”手段,各地政府建立了城市综合管网信息系统,达到了城市地下管网的综合管理的目标,能够实现综合管网数据信息的输入、存储、查询、编辑、检索、分析、输出以及共享应用等[4,7]。
目前,大部分城市综合管网数据库均使用GIS数据存储方式,即使用诸如Oracle Spatial、PostgreSQL等直接存储矢量综合管网数据,以点线面方式进行存储。而在现实中的施工、设计、开挖等外业现场作业过程中,作业人员通常仍需要dwg格式的综合地下管线图作为作业依据,于是如何快速准确地将GIS数据库中的综合管网数据输出成为dwg格式的综合管线图成为亟须解决的问题,也是城市综合管网信息系统的重要组成部分[9,10]。
本文结合城市综合管网数据的特点,面向综合管网全生命周期管理,定制管线制图模板,研究从矢量数据库到CAD管线图的输出转换,探索自动扯旗标注的方法,最终通过编码,开发工具,实现管线自动出图,应用于实际施工作业和应急供图。
随着GIS技术的发展,各大主流数据均可以支持和存储空间数据,即采用Geodatabase空间数据模型组织和管理空间数据,并实现数据的存储。Geodatabase能够同时存储空间数据和属性数据,并且保持空间数据的精度。
城市综合管网数据是综合地下管线,主要包括电力、通信、给水、排水、燃气、工业、长输等类别。地下管线数据有自身的特点,某一类地下管线数据通常包括管点、管线段和附属设施面三个图层,空间要素形式分别为点、线和面。三类空间要素数据均有对应的属性信息,以确保能够准确地进行输出。输出的综合地下管线图是根据图幅号进行划分,因此,属性信息应包括图幅号,其他应包括的属性信息还有管线类别、管径、材质、埋设方式、埋深等,用于扯旗标注。
传统的综合地下管线图通过人工制作,无法实现自动化,费时费力,故要想实现综合地下管线的自动出图,除了建立管线数据的模型外,还应该设计管线图的模板和符号,这主要包括要素模板、符号模板和图幅模板。
(1)要素模板。综合地下管线图的核心是点线面要素,其中线和面要素主要通过颜色、线宽、线型来区分不同类别,从而实现模板化。
(2)符号模板。管点要素主要是管点所在的附属设施来表达,如阀门、窨井、变电箱等。所以为了便于快速出图,将所有可能出现的管点附属物进行梳理,并预先制作成CAD块符号,后期在出图工具中可以直接调用这些块符号,进行加载渲染。
(3)图幅模板。综合地下管线图有规定的图幅轮廓要素,包括图框、图名、图幅号、编制单位等要素,这部分主要确定好图幅中各要素的具体内容和位置,按照国家标准的图式规范要求制作成模板形式,如表1、表2所示。
管线要素模板 表1
管线符号模板(部分) 表2
扯旗标注是综合管线图中十分重要的部分,用以说明管线图中管线的类别、材质、规格、埋深等属性信息。一直以来自动扯旗标注都是地下管线自动出图的一个难点,既要保证标注的准确性,又要考虑到要素之间的压盖关系。因此本文提出一种半自动的人机结合的自动扯旗标注方式,即用户手工指定扯旗标注所在的位置,系统根据该位置,自动生成扯旗标注。
自动扯旗的过程包括根据用户指定的位置绘制出一根与该位置最邻近管线相垂直的扯旗线,随后计算出与该扯旗线相交的所有管线,并读取出相应的属性信息,最后依据扯旗的样式,依次以标注的形式绘制对应的标注文本。
假设用户指定点坐标为(x0,y0)
根据邻近搜索,得到该点最近的管线段的起点和终点坐标为(x1,y1)和(x2,y2),从而计算出该管线段的直线方程为:
根据垂线方程,计算出扯旗线的方程为:
根据扯旗线的公式,设定扯旗线的长度,从而确定扯旗线的位置。
从地下管线矢量数据库到分幅的综合地下管线图,实现这一过程主要包括四个步骤。
管线调图:输入需要输出的综合地下管线图的图幅号,系统从数据库中读取对应的综合管线数据进行分层渲染绘制,管线、附属设施面按照要素模板绘制,管点通过基于附属物来进行绘制,即如果该点没有附属物,不绘制该点;该点有附属物,在该点处插入对应的附属物块状符号。
图幅整饰:按照设定的图幅模板为管线图添加图幅信息,包括图幅框线、管线图标题、比例尺、图幅号等信息;同时根据图幅范围对管线要素进行裁剪,去除图幅范围以外的要素信息。
扯旗标注:扯旗标注是综合管线图的重要组成部分,指定扯旗标注的位置,系统自动生成扯旗标注,同一幅地下综合管线图可以有一个或多个扯旗标注。
叠加地形图:地下管线图无法独立存在,需要以基础地形图作为底图来进行衬托,在此部分需要将制作好的分幅地形图加载到系统中以作为底图。
至此一幅综合地下管线图制作完成。
考虑到综合地下管线图通常为dwg格式,因此本文中采用基于.NET平台的CAD二次开发技术,依托AutoCAD作为开发平台进行实现。自AutoCAD 2005版本起,Autodesk公司推出了用.NET开发AutoCAD的编程接口,它的实质是通过Managed C++/CLR技术对VC++的ObjectARX进行封装。到目前Autodesk公司已经完成对大部分ObjectARX编程接口的封装。这种编程方式难度适中,能够访问大部分的编程接口。ObjectARX的应用程序能在运行期间实时扩展AutoCAD,共享AutoCAD地址空间,因此性能较为强大,以至于AutoCAD自身的许多功能模块都是由ObjectARX进行制作[5,6,8],考虑到软件的通用性和兼容性,本文中采用的是AutoCAD 2012版本进行二次开发。
本文中,地下管线数据采用Oracle Spatial存储,基于AutoCAD平台,通过.NET进行二次开发。用户只需输入所输出图幅的图幅号,并进行少量的交互操作,即可完成一幅综合地下管线图的制作(图1)。经过多次实现与测试,采用本文中的技术方式能够实现管线的自动化出图,平均一幅综合管线图的制作时间在 1 min以内,并且扯旗标注的准确度较高,该方法能够大大减少人工参与,提高工作效率。
图1 综合地下管线图
针对地下管线数据库自动出图中遇到的问题和难度,笔者采用创新的解决方案,主要提炼为以下3种技术。
(1)地下管线CAD图自动输出技术。基于AutoCAD的二次开发,实现地下管线数据从GIS数据库到CAD图的自动化输出,实现CAD中线型、颜色、符号以及图幅轮廓要素的自动化配置。
(2)自动扯旗标注技术。本文提出一种自动扯旗标注方法,由用户指定扯旗标注所在的位置,系统根据该位置依据公式算法,自动生成扯旗标注,既解决扯旗标注绘制复杂,又解决扯旗标注易压盖的问题。
(3)基于ObjectARX的二次开发技术。基于ObjectARX的应用程序能在运行期间实时扩展AutoCAD,本文利用该技术,基于AutoCAD平台进行二次开发,能够实现与Oracle等空间数据的交互,实现复杂功能。
针对当前地下管线无法实现自动出图,综合地下管线制作人工参与量大、出图效率低等现状,本文基于要素符号模板,基于AutoCAD平台,设计并实现了综合地下管线自动出图工具系统,实现了综合地下管线图的自动符号化、自动扯旗标注、自动图廓整饰,只需少量人工干预即可快速成图并输出打印。该系统工具目前已应用上海市浦东新区等多地的城市地下管线综合管理系统中,具有一定的推广价值。