简介:面向基础地理信息专业人员与技术管理人员,围绕1∶500、1∶1000、1∶2000比例尺基础地理信息要素数据转换为基础地理实体数据的技术规程,适用于新型基础测绘与实景三维中国建设,可提升实体数据生产效率与质量,支撑城市规划、建设与管理。包体为单个PDF文档(共1个文件,924KB),内容系统覆盖范围、引用文件、基本要求、作业流程、源数据收集分析、预处理、映射转换、语义化处理、质量控制和成果归档等环节,并给出具体操作与质量控制方法。文档对时空基准、数据格式、精度粒度要求、映射表制作、实体关系获取和扩展属性丰富等作了详细说明,可作为生产单位的作业依据与质检参考;需注意规程针对二维基础地理实体数据转换,组合与聚合实体生产需另参照相关技术文件。目前已有204人学习浏览,适合地理实体数据生产、技术流程理解与质量控制人员阅读使用。
1. 大比例尺要素数据转基础地理实体:这套技术规程解决什么问题
实景三维和新型基础测绘推进到今天,很多作业队的现状是:实体数据的需求已经很明确,但手里最完整的存量还是按图幅、按图层管理的 1:500、1:1000、1:2000 基础地理信息要素数据。直接重测不现实,重新采集成本更高,唯一可行的路就是把存量要素数据通过一套规范的转换流程,直接生产出基础地理实体数据。这套技术规程解决的就是这个衔接问题:老数据怎么拆、怎么合、怎么补属性、怎么编码,才能变成能入库、能更新、能支撑三维场景的实体数据。适合测绘生产单位的数据转换人员、质检人员,以及正在搭建实体数据库的管理者阅读。
2. 规程的核心逻辑:从要素到实体的三层变换
要素数据和实体数据最本质的区别,不是图层名字换一下,而是组织单位变了。要素数据是按“类”组织的,一栋楼在房屋图层里是一个面,在建筑附属图层里可能还有一个雨篷面,在地形图里还有一组轮廓线;实体数据是按“个”组织的,同一个真实世界对象只能有一个实体,它要能独立回答“我是什么、我在哪里、我的范围是什么、我和旁边的东西是什么关系”。所以转换过程不是一个自动化脚本能直接跑完的,它需要三层变换。
2.1 先看分类码:要素分类与实体类型不是一回事
第一层变换是语义映射,也就是把要素分类码对应到实体类型码上。很多初次做这个工作的人会以为这是一个“查表替换”的工作——把要素分类码翻译成语义就行。实际上,两者的分类逻辑完全不同:要素分类码是从制图角度出发的,强调的是“画出来像什么”,比如一块地面有草地、林地、花圃,在要素分类里是三个码;实体类型是从业务对象出发的,强调的是“真实世界是什么”,可能只需要一个“植被覆盖实体”。
我梳理过一份常见映射关系,大致如下:
| 源要素类型(举例) | 对应的实体类型 | 映射关系说明 |
|---|---|---|
| 房屋多边形、房屋附属多边形 | 房屋建筑实体 | 多为多对一,附属物需判断是否合并 |
| 道路边线、道路中心线、路面多边形 | 道路交通实体 | 需要将线转面或面合并,规则复杂 |
| 河流面、河流结构线 | 水域实体 | 面优先,线只用在水面缺失处 |
| 控制点注记、水准点要素 | 测量控制实体 | 一对一为主,属性需大量补录 |
| 植被面、土质面、等高线注记 | 地表覆盖实体 | 多对一,需按空间拓扑合并 |
这张表看着简单,实际跑起来,问题都出在“多对一”这种映射上。拿房屋来说,一处房屋的范围里,往往有主体轮廓、有台阶、有雨篷、有飘楼,如果这些附属面都参与合并,房屋实体的边界就会变得很奇怪;如果不合并,又会出现一个房屋多个实体的错误。规程里对这种情况给出的原则是:先看空间包含关系,再看附属物的高差和宽度,最后看源数据的比例尺精度。三个条件都满足才合并。
映射表的落地方式,我一般建议做成一张独立的 Excel 对照表,左边是源要素分类码,右边是目标实体类型码,中间加一列“合并策略”。这样转换脚本只认这张表,以后数据分类码调整了,改表不改脚本,能省大量返工时间。
2.2 再定空间范围:图元合并、拆分与边界归属
第二层变换是空间图元重组。实体数据的几何范围,不能简单等于源要素的几何范围直接合并。这里有三种情况必须处理:
第一种是合并。同一实体的多个部分,物理上连在一起,语义上属于同一个对象,就要合并成一个面。比如一块连片的草地,源数据里可能因为不同图幅的接边而断成好几块,或者因为植被分类不同而分成几个相邻图斑,转换时要按实体语义合并。合并的技术要点是:不能直接用 GIS 的 dissolve 把所有相邻面都熔掉,因为地形图上相邻的同类面,现实中可能是被墙隔开的两个院子。所以合并条件里必须加一条“中间是否存在隔断要素”,比如房屋边界、垣栅线等。
第二种是拆分。一个图斑跨了两个实体,就得拆。最常见的场景是长条状房屋:在 1:500 数据里,一栋几十米长的联排房屋往往是一个整体面,但转换成实体时,它可能是两个或多个独立的房屋实体。拆分的依据应该是结构的断开点,比如伸缩缝、入户通道。在自动化过程中很难全部识别,规程里给了一个可行的办法:先用房屋面的宽度突变点和方向转折点做候选分割线,再人工确认。
第三种是边界归属。两个实体的边界共享同一段弧段时,源数据里这段弧段可能被数字化了两次,两条线之间有微小缝隙。转换后的实体边界必须做一次拓扑一致化处理。处理参数上,我习惯用容差 0.05 米到 0.1 米,具体看比例尺。1:500 的数据精度高,容差取小值;1:2000 的数据本身精度低,容差可以稍微放大,但不能超过 0.15 米,否则容易把真实存在的间距吃掉。
2.3 最后补属性:继承顺序、缺省值与实体唯一标识
第三层变换是属性派生。实体数据的属性来源有三个:源要素属性、映射表预置值、人工补录。三者的优先级不是固定的,实际生产时我建议分两种情况:如果源要素属性是外业实测填写的,以它为准;如果源要素属性是制图过程派生出来的,比如面积、长度这类,就重新计算,不继承。
属性继承的具体操作上,有个容易踩坑的点:源数据里的房屋要素,一个人字层属性写的是“砖混”,另一个写的是“混合”,实际上是同一个意思。转换前必须做一遍字典归一化,把同义异形的值统一起来,不然实体库里就会出现大量脏数据,后面做统计分析时全是问题。
实体唯一标识的生成,规程里给出的是“图幅号+顺序号”的组合方式。但我做过几个项目后,觉得这个方式有一个隐患:同一个实体跨越两个图幅时,在不同图幅里会生成两个不同的标识,后期合并时就要做标识重写。更好的做法是用实体的几何质心所在图幅号来定前缀,然后同一个几何实体只保留一次。处理顺序是:先对所有备选图元做空间聚类,生成候选实体,再统一分配标识。这样才能保证标识在多次转换之间保持稳定,后续增量更新才有基础。
3. 三个比例尺怎么用:1:500、1:1000、1:2000 的差异处理
规程的名字里把三个比例尺放在一起,容易让人误以为这是一套参数通吃所有数据。实际上,三个比例尺对转换生产的影响非常不一样。源数据的比例尺决定了两个关键参数:最小上图尺寸和图元综合程度。用错参数,出来的实体要么碎得没法看,要么糊得丢了大量真实信息。
3.1 1:500 属于精细源:先做附属物归并再实体化
1:500 大比例尺数据是三个比例尺里信息量最大的,也是最难处理的。原因是它把很多细碎的附属物都画了出来:房屋台阶、雨篷、散水、门廊、独立的配电箱、消防栓,都会以独立的面或点要素存在。
如果直接把这些要素按映射表转成实体,会出现一个问题:一栋普通住宅楼,可能附带七八个附属实体,实体数量和真实世界对象数量严重不成比例。规程里对这种情况的处理策略是“附属物归并”,但归并不是无条件的,我总结出来三个可执行的条件:
第一,附属物实体在主实体空间范围 1 米以内,或者与主实体共用一段边。如果一个雨篷距离房屋主体有 5 米远,那它就不是这栋房子的附属物,应该单独判断。
第二,附属物的面积小于主实体面积的 20%。超过这个比例,说明它可能是一个独立功能的建筑或构筑物,不能简单归并。
第三,附属物的属性里没有独立用途标注。如果台阶属性里标注了“商业出入口”,那它可能属于旁边的商铺,不能归并到整栋住宅楼里。
实际操作中,归并动作不要做成几何 union,而是做成“逻辑从属”:主实体只保留一个外轮廓,附属物作为附属图元挂接在实体关系表里。这样既保持了实体数据的简洁性,又不丢失 1:500 数据原有的细部信息。
3.2 1:1000 与 1:2000 属于概化源:注意面积门槛与身份判定
1:1000 和 1:2000 的要素数据,已经做过一次制图综合,很多小尺度的地物被合并或舍弃了。转换时的主要矛盾从“要素太多怎么合”变成了“要素缺失怎么办”。
面积门槛是首先要设的参数。1:1000 数据中,小于 20 平方米的面状房屋,很多情况下是临时建筑或违建,转换成实体前要确认是否保留;1:2000 数据里,小于 50 平方米的独立房屋面基本可以判断为综合残留物,大概率是制图综合时没有完全消掉的碎块。规程里有这一类的判定逻辑,但具体阈值需要结合本地实际情况调整。我一般会在项目启动前做一次样本统计,把这批小图斑列出来,逐个确认数量后再定阈值。
另一个问题是身份判定。1:2000 数据里,两个紧挨着的房屋面,很可能原本是一栋房子,因为中间有个天井或过道,在制图时被拆成了两个面。转换成实体时,要根据屋顶轮廓、层数属性、建筑结构来判断是否要合并。如果两个面的层数属性一致、结构类型一致,且公共边小于总边长的 20%,我倾向于判定为同一实体。这个比例参数是经验值,不同地区可以上下调整,但最好在质检环节做一次全量比对。
3.3 混合比例尺接边:实体连续性必须单独做一次
很多城市的数据现状是中心城区有 1:500,周边是 1:1000 或 1:2000,一个项目往往要同时处理两三种比例尺。跨比例尺接边是实体数据转换里最容易被忽视,也最容易翻车的环节。
接边问题的本质是两个比例尺对同一个地物的表达精度不同。比如同一条道路,在 1:500 数据里是双向四车道带中央隔离带的面,在 1:2000 数据里可能只有一条道路边线。转换出来的实体,在比例尺交界处会出现半边是完整道路实体、半边是道路线的情况,拓扑上根本衔接不上。
我建议的处理流程分成三步:第一步,在数据准备阶段就把接边范围找出来,沿着比例尺分界线做 50 米缓冲区;第二步,在缓冲区内以高精度比例尺(1:500)为准,对低精度数据做一次强制替换;第三步,替换后对实体做一次几何接边检测,容差按低精度比例尺的 0.2 毫米乘分母来计算。比如 1:2000 的数据,接边容差就是 0.4 米。这个操作要放在转换之前做,不能放到转换之后,因为实体一旦生成,跨图幅编辑的代价非常高。
4. 从数据准备到入库:一版可以直接套的生产流程
前面讲的是规则和参数,这一章讲怎么在项目里把转换过程组织成一个可执行、可检查的生产流程。流水线每个节点都要有明确的输入输出和检查点,不然转换做到一半,出了问题只能靠人肉排查,效率极低。
4.1 准备阶段:清理重叠、补齐图层、建立工作库
转换前做的第一件事不是写脚本,而是做源数据体检。我用过一个很简单的检查清单,三个指标:要素重叠率、缝隙数量、属性空值率。
要素重叠率很好理解,两个面要素叠在一起,转换后实体边界必然出错。检查方法是在 GIS 软件里做一次自相交检查,把重叠部分提取出来,逐条确认是数据错误还是真实存在的多层结构。比如过街天桥和道路面重叠,是真实情况,保留;房屋面和院落面重叠,大概率是数据错误,要先修。
属性空值率检查看两个字段:要素分类码是否为空,房屋层数是否为空。这两个字段对实体转换至关重要。分类码为空,映射表就无法使用;层数为空,房屋到底是单层还是多层无法判定。我一般要求分类码空值率不能超过 0.5%,超过这个比例就退回上一道工序补测。
建工作库这一步,很多人不重视,直接拿原始数据就开始转换。这个做法在项目周期短的时候问题不大,但实体转换往往需要反复试做,改了参数要重跑。没有独立的工作库,原始数据容易被误改,后面想回溯就难了。工作库建议用文件地理数据库或 PostGIS,按图幅号分图层,转换脚本和映射表单独存放,保证每一步都有据可查。
4.2 转换执行:四步操作的具体做法
转换执行阶段,我习惯拆成四个操作,顺序不能乱:
第一步,分类映射。加载映射表,对源要素的每个图元打上实体类型标签。这个阶段只做属性标记,不改几何。好处是如果映射错了,可以在不损失几何数据的情况下快速修正。
第二步,空间归并。按实体类型标签分组,对同一实体类型的相邻图元做归并。归并时先做拓扑预处理,把公共边完全一致的图元合并;再用空间距离阈值(我常用 0.2 米,超过这个距离不合并,防止不同的建筑物被连到一起)判断临近图元是否属于同一实体。这一步的结果是候选实体面。
第三步,属性派生。计算面积、长度、周长等几何属性,继承源要素的语义属性,补录实体必填字段。必填字段一般就三个:实体分类码、几何类型、所在图幅号。其他字段能填就填,没有专项资料的不要硬填,宁可留空也不写错误值。
第四步,生成实体标识。靠空间聚类结果统一分配。如果候选实体跨图幅,处理顺序很关键:先按实体范围的最大边界确定归属图幅,再生成标识。否则后续合并图幅时,标识全部要重算,非常被动。
4.3 质检入库:空间、属性、关系三个维度
质检不能只查图形有没有裂缝,要按三个维度逐项过。空间维度查几何:实体边界是否闭合、是否有自相交、是否符合最小面积阈值;属性维度查记录:必填字段是否为空、分类码是否在有效范围内、面积字段是否与实际几何一致;关系维度查逻辑:交通实体是否与房屋实体存在压盖、水域实体是否跨界、同一个实体标识是否出现两次。
质检工具方面,商业平台的空间校验功能可以承担大部分几何检查,但关系和逻辑检查还是要写脚本。我一般在入库前跑三个脚本:第一个查标识重复,按实体标识字段分组统计大于 1 的记录;第二个查属性孤立值,把分类码出现的次数做排序,找出低频和异常值;第三个查空间自相交和缝隙,容差按第二条里说的接边容差来定。
输出质检报告时,问题分级很重要。我的分级标准是:阻断级错误(标识重复、边界不闭合)必须 100% 清零;警告级错误(属性缺漏、面积偏差)允许少量遗留,但要在报告里逐条说明原因。这样验收方看到报告时,可以直接判断这批数据能不能接收入库,不用再来回扯皮。
5. 常见问题与避坑:生产线上最容易翻车的五个地方
实体数据转换项目做到后面,你会发现真正的问题很少出在核心算法上,都是出在一些不起眼的细节里。这里整理了五个我实际项目中反复遇到的坑,每条按现象、原因、解决三个层次来说,可以直接对照排查。
5.1 同一栋房屋出现了两个实体
现象:转换结果显示一栋独立的沿街商铺被拆成两个实体,一个叫“房屋建筑”,一个叫“其他建筑”,但实际上它们是同一栋楼。
原因:源数据里这栋商铺被两个图层重复采集了,一个图层是房屋面,一个图层是建筑附属面。映射表里这两个源要素类型分别映射到了不同的实体类型,空间归并阶段没有把两个图层的数据放在一起比较。
解决:映射表设计时先做一次源要素“同域异层”的分析,把所有空间上重叠的图元列出来,人工判断是重复采集还是真实分层。重复采集的在转换前就要合并掉,不能等到实体化之后再处理。
5.2 房屋实体的边界和道路实体互相穿入
现象:房屋实体的角点插进了道路面的范围内,质检时拓扑检查报出大量重叠错误。
原因:源数据里房屋面和道路面本来就没有共边,两条边之间存在人为的修正量。转换时如果直接用源数据的边界生成实体面,冲突就带进来了。实体化要求边界明确,这两个面必须有一条精确的公共边。
解决:转换前的数据清理阶段,必须做一次道路和建筑的边线匹配。把道路面边界向外扩 0.1 米,用这个缓冲区和房屋面做相交分析,相交部分切掉房屋面的多余部分,再反向操作一次,保证两侧边界共线。参数上注意:不能来回切两次都切同一个图层,要以高优先级实体为基准。
5.3 属性冲突导致合并中断
现象:两个相邻的房屋面,已经把几何归并成一个候选实体了,但属性派生时发现一个写的是“住宅”,一个写的是“商业”,程序自动判定为两个实体,结果又被拆开了。
原因:源数据的属性是不同时期、不同作业员采集的,同一个建筑的不同部位可能被赋予了不同用途。实体化更看重建筑的整体功能,这种局部差异需要人工判断整体用途再统一赋值。
解决:给映射表加一个“用途冲突处理规则”。规则可以写成:如果冲突的相邻图元共边长度大于总边长的一半,以面积较大的图元属性为准;如果冲突图元之间有明确隔断,保持两个实体不变。加了这条规则后,需要人工复核的数量会大幅减少。
5.4 实体标识两次转换结果不一致
现象:同一个项目第一次转换后,实体甲的标识是 001001。修改了少量源数据,重新转换,它的标识变成了 001002。增量更新时,新旧数据对应不上。
原因:标识生成逻辑用的是图幅流水号,排序顺序变了,标识就变了。源数据里增删了一个图元,排序就会被影响,后续标识全部顺移。
解决:把标识生成逻辑从“顺序流水”改成“坐标派生”。用实体范围的最小外接矩形左下角点坐标,经过整数化处理后作为标识的一部分。坐标相同的实体,标识永远一致;坐标变了,说明实体本身变化了,标识变了也合理。这种方式稳定性和可追溯性更好。
5.5 小碎图斑全部进入实体库
现象:入库后查询统计,发现实体数据里出现了几百个面积不到 1 平方米的“房屋实体”,明显违背常理。
原因:源数据里残留了一些制图过程产生的碎图斑,面积很小但图形闭合。转换脚本只判断了“是否有效的面要素”,没有做最小面积过滤,这些小图斑就全部被实体化保留了。
解决:这个过程是一个关键环节。按比例尺分别设置最小面积阈值:1:500 的数据阈值建议 0.5 平方米;1:1000 建议 2 平方米;1:2000 建议 5 平方米。低于阈值的图元不直接删除,而是做一次“邻居接管”判断:如果它被一个大图斑完全包含,就合并进去;如果它独立存在,标记为可疑数据,人工确认一次。这样既避免碎图斑干扰,又不丢失真实的独立地物。
6. 一个有效果的核验技巧:双向交叉随机抽检法
转换成果的质检,常规做法是抽一部分实体和源数据做叠加对比,看看图形有没有变样、属性有没有丢。这种做法效率其实不高,因为检查方向是单向的:从实体找源。真正容易漏掉的问题,是反过来从源数据找实体——源数据里明明有的要素,转换后根本没生成实体。
我现在每批数据交付前,都会要求做一次双向交叉随机抽检,先说抽检比例:总面积在 10 平方公里以下的项目,抽检比例按图幅数算,不少于 15% 的图幅;面积更大的项目,按实体数量算,不少于 5% 的实体。具体做法分两轮:
第一轮正向查:随机抽取若干实体,打开它的源要素来源列表,核对实体的每个图元是不是都来自合法的源数据范围,有没有引入范围外的坐标。第二轮反向查:随机抽取若干原始要素,在实体库里搜索它应该对应的实体,检查是否存在“源数据有、实体库里找不到”的漏转现象。
这个方法有一个关键细节:两轮抽检要用不同的随机种子,不能让作业员自己选检查对象。人一旦参与了选择,就会下意识挑自己觉得可能有问题的,而那些看起来没问题的坏数据就永远查不出来。我吃过这个亏——有一批连廊附属物转换后全部漏掉了“连接关系”属性,因为两个作业员抽检时都选了同一片看起来复杂的城中村区域,问题直到入库后被下游调用单位发现才暴露。
从那以后,我每次安排质检,都会强制走一遍双向交叉随机抽检,抽检记录全部留痕,哪怕抽出来的结果没问题,也要存档备查。一个转换项目做得对不对,靠的不是感觉,而是这种能复现、能追溯、能量化的核验过程。希望这个技巧对正在被实体数据转换折腾的你有点帮助。
本文还有配套的精品资源,点击获取