ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

零代码搞定建筑信息提取:面积、周长、高度全流程实操

零代码搞定建筑信息提取:面积、周长、高度全流程实操 上周帮人做一个片区建筑摸底要在一天内搞清楚三十多栋沿街建筑的底面积、大致层数和屋顶结构用于更新基础台账。搁以前我会先翻竣工图再拿测距仪一栋栋量量完回来还要在CAD里描轮廓算面积一天根本下不来。这次我直接打开Bigemap底图上把建筑轮廓描出来面积周长当场出有一片区域的基础矢量数据里还直接带着楼层数字导出表格直接就能用。整个过程没写一行代码也没碰ArcPy那套东西。这篇文章就把这套“零代码提取建筑信息”的路子完整拆开讲覆盖面积、周长、高度三条线的获取方式顺便把我在实操里踩过的单位坑、偏移坑、编码坑全部交代清楚。适合规划前期调研、建筑方案场地分析、房产评估资料补充、三维城市数据预处理这些场景。先说结论Bigemap这类工具解决的是“快速摸家底”的问题它替代不了法定测量但能把前期调查效率提升一个量级。1. “建筑信息提取”听着简单真做过的都知道有多磨人1.1 一个让人崩溃的调研任务长什么样这类事情在规划院、设计院、评估公司太常见了。领导丢过来一个片区范围说“看看里面有多少栋房子、每栋多大、大概几层”听起来像是个中学生就能完成的任务实际上手全是麻烦。没有竣工图的时候只能现场拿激光测距仪围着房子转还要跟物业、业主解释为什么量房子。有竣工图的时候更头疼图纸版本老旧跟现状对不上需要先把CAD里的轮廓一个一个比对校正。就算这些全搞定最后要把几十栋建筑的基底面积汇总成一张统计表还得有人在Excel里手工录入计算。这个流程我走过无数次最崩溃的不是测量本身而是绝大多数时间耗在了重复机械劳动上——描图、录数、核对单位。1.2 零代码到底“零”在哪里这几年“零代码”这个概念被各种低代码平台说烂了开发圈里还有DevBox这类强调零配置的环境工具。但在GIS数据处理这个场景里零代码的含义要朴素得多把原来需要写Python脚本、用ArcGIS Model Builder拖模型、甚至手工输公式算几何的操作封装成图形界面里的一个按钮、一次右键、一次导出。Bigemap正好卡在这个需求点上。它把地图浏览、矢量编辑、属性查看、几何计算、数据导出这几个高频操作串成了一条完整的链路。你要做的不是写代码而是按顺序点菜单。这也是为什么连很多不熟悉GIS的规划、建筑、评估从业者都能很快上手——本质上就是“画个圈看属性导表格”三件事。1.3 谁最需要这套路子谁别用我实际接触下来最需要这套工具的是三类人做规划前期踏勘的需要在现场或办公室快速了解一个片区的建筑底数做建筑方案场地调研的需要知道周边建筑的高度和退距关系做房产评估和银行抵押尽调的需要快速估算建筑面积和楼层规模。但也要坦率说清楚边界。如果要做竣工测量、不动产确权、拆迁补偿认定这类涉及法定精度和法律责任的事情别指望用影像描轮廓来搞定该请测绘院上全站仪、无人机航测就得上。免费影像本身存在几米到十几米的误差再加上手工描点的误差当调研参考可以当法律依据不行。2. 在Bigemap里能看到的“建筑”其实是三层数据叠出来的2.1 底图负责“看得见”矢量图层负责“算得出”很多人第一次打开Bigemap会问一个问题这地图上明明能看到每一栋房子为什么不能直接点一下就把面积高度弹出来这里有个关键概念要理解你在屏幕上看到的建筑影像是栅格底图本质是一张由像素组成的照片没有几何属性点上去不会告诉你这栋楼面积多少、高多少。真正能提取数据的是叠加在底图上的矢量图层。矢量图层里的建筑是由一个个坐标点连成的面这些面才有周长、有面积还可能带有楼高、楼层数、用途这样的属性字段。Bigemap的作用就是让这上下两层叠在一起你看着影像描轮廓实际上画的是矢量面再用软件的计算能力把面的几何属性算出来。2.2 建筑矢量数据的属性能给到什么程度矢量数据的属性丰俭差异很大。在OpenStreetMap比较完善的地区建筑面要素经常带building、building:levels楼层数、height高度、building:colour这类字段选中就能看到。国内的部分城市级GIS数据服务工作也提供了带楼层和用途属性的建筑面但这些数据通常不是公开免费的需要通过已有数据导入的方式进到软件里。实际操作里大部分区域能稳定拿到的是“建筑外形轮廓”高度属性并不保证有。这一点开篇就要有心理预期面积和周长基本任何区域都能做出来高度则要看数据源是否支持不支持的时候需要用后面第4章里的估算方法补上。2.3 高程数据不等于建筑高度这是一个大误区Bigemap里能下载高程数据很多新手误以为有了高程数据就能得到建筑高度这是我看过最普遍的误解。高程数据是数字高程模型DEM描述的是地表地形起伏——山有多高、坡有多陡它对城市里那些高层建筑完全无感因为屋顶并不会反映在DEM格网里。高程数据的正确用法是分析场地地形、计算地块高差、生成等高线以及做建筑底面的地表高程参考。只有在极少数情况下配合非常高精度的DSM数字表面模型包含地表以上物体数据才能反推建筑高度但那种数据不是Bigemap免费层级提供的东西。所以结论很简单建筑高度别指望从地形数据里“一键长出来”。3. 面积和周长从零到一张统计表五分钟跑完的完整流程3.1 选对影像底图你的轮廓精度就赢了一半面积和周长算得准不准前提是你能不能看清建筑的屋顶边界。打开Bigemap之后先在地图源列表里选清晰度最好的影像数据尤其要注意选最近时相的。老影像在城市更新快的区域会出现“房子已经拆了图上还有”或者“新楼盖起来了图上还是空地”的情况。我个人的习惯是在添加地图源这个环节多花两分钟把影像图层和对应的历史影像做一次对比确认当前看到的版本是足够新的。另外放大到18级以上看建筑轮廓边缘如果边缘模糊、有云影遮挡就切换到另一家影像源对比着看——不同源之间分辨率各有优势找到一个屋顶轮廓锐利、建筑投影小的位置再开始描。3.2 绘制建筑轮廓节点数量决定误差大小在Bigemap里新建一个面图层选“绘制多边形”工具然后沿着建筑屋顶边缘逐点描。这里有一个新手特别容易犯的错误一栋矩形建筑就用四个点勾出来。四个点只能画出一个标准矩形但绝大多数屋顶不是完美矩形——有檐口突出、有设备间、有坡屋顶的转折线。我一般的要求是一个建筑至少8到12个节点弧形转角处加密到3到5个点。节点太少面积会明显偏小节点太多且没对准位置又会引入毛刺。描点的时候放大到能看清屋顶檐沟的程度沿着屋脊线或者女儿墙外沿走。雨棚、门廊这类悬挑结构要不要纳入轮廓取决于你做的是“建筑基底面积”还是“建筑投影面积”这个要在项目开始前就定好口径不然统计结果前后会打架。3.3 一键读取几何属性实时显示与属性检查画完一个面软件右下角的属性面板会实时刷新显示这个面的周长和面积数据。这是Bigemap画图最舒服的地方——不需要额外点计算按钮几何信息是实时关联的。如果你用的是已有的矢量数据比如自己导入的shp、KML或者在线加载的建筑面图层那就选中要素后打开属性表字段列表里通常直接就有计算好的周长和面积。没有的话软件一般也会提供“更新字段”或者“计算几何”之类的功能选中目标字段、选好单位确认就完成了批量计算整个图层几百栋建筑一次性出数值。3.4 批量导出Excel/CSV做统计面积周长都出来之后全选图层内所有要素右键复制属性或者直接导出图层数据。导出时格式优先选CSV或者Excel表格字段会自动带出id、类别、面积、周长这些属性。导出后拿Excel一汇总按街道或者地块分组求和一张统计表就成型了。这里有个细节值得注意导出CSV后如果直接用Excel打开发现中文乱码多半是编码问题。在Bigemap里导出时把字符集设为UTF-8或者在Excel里用“数据→自文本”导入并手动选择UTF-8编码基本都能解决。要是导出后还要进ArcGIS、QGIS做进一步分析我更建议直接导出GeoJSON格式兼容性比CSV好得多。4. 建筑高度影像给不了你但这几条路能拿到4.1 方案A矢量属性里直接带高度字段最优解永远是数据源本身带了高度信息。在Bigemap里加载建筑矢量图层后打开属性表重点看有没有height、building:levels这类字段。如果有选中要素查看属性或者直接字段导出即可这是真正的“一键获取建筑高度”。部分基础数据网站在大城市的数据里连建筑层数都标得很清楚这类数据拿来做建筑高度分布研究非常合适。需要提醒的是即使有height字段也要看一眼它的单位。有些数据源给的单位是米有些给的是英尺还有一些给的是“层数”而不是“米”。统一换算成米之前不要直接拿去做图表。我处理过一个国外开源数据集高度字段全是英尺当时没注意直接按米用整个天际线分析图做出来楼高全放大三倍改数据重画了一下午。4.2 方案B有楼层数时用层高换算在没有height但有building:levels的时候用层高去估算建筑高度是最常见的做法。基本公式很简单建筑高度≈楼层数×层高屋顶附属物高度电梯机房、水箱间、女儿墙等。层高怎么取值不同建筑类型差别挺大我给一个经过多次项目验证的参考区间建筑类型层高参考范围备注住宅2.8~3.0米含楼板实际层高常为2.9米左右普通办公3.6~4.2米带吊顶和架空地板的取上限商业综合体4.5~5.5米底商通常明显高于标准层酒店3.2~3.6米客房层也有做到3.8米的工业厂房6~10米带行车梁的取偏高值换算完还缺一个修正项屋顶的电梯机房、楼梯间、水箱这些在建筑高度计算时通常是要计入的一般预留2到5米修正量。如果只是做粗略的分级分析直接用“楼层数×层高3米”就已经够用了。4.3 方案C什么字段都没有时靠阴影和抽样撑起来最不理想的情况就是数据源只有轮廓、没有高度也没有楼层数。这时候我一般用两个办法交叉验证。第一是阴影估高在影像上量出建筑阴影的长度配合当时的太阳高度角做三角函数换算能估出一个大致高度区间。这个方法对独立的高层建筑比较好用对互相遮挡严重的密集建成区会有明显低估。第二是现场抽样定标挑三五栋代表性建筑实际去数一下楼层然后按照这片区域的建设年代和建筑风格归类同年代、同类型的楼直接套用楼层数。城市里的住宅小区尤其好办——一个小区里楼型往往就那几种抽两栋数明白整个小区其他楼的楼层数都能推出来。这个方法听着糙但效率和准确率的平衡非常好。5. 实际操作中真正容易翻车的五个细节5.1 面积单位翻车0.000386不是0.386平方米先讲一个我踩过的经典坑。有一次导出一个shp建筑图层属性表里全是0.0003、0.0004这样的小数我以为是数据坏了。查了一圈才发现问题出在坐标系上——那份数据的坐标系是经纬度坐标用经纬度直接算面积得到的是“度平方”这种毫无物理意义的值需要在应用软件里先把数据投影成以米为单位的投影坐标系再重新计算几何面积。判断数据是否需要投影最直接的方式是看面积数量级。一栋普通住宅的基底面积应该在几十到几百平方米如果你算出来是0.0几基本就是坐标系出了问题。在Bigemap里画图时它内部会自动处理但导入外部数据后一定要看一眼图层的坐标系定义确认不是“度”。5.2 影像偏移轮廓和建筑永远差那么几米地图影像和矢量数据对不上是日常。有的区域影像整体偏移两三米有的地方矢量底图和影像之间错开十几米这种情况下你按照影像描出来的轮廓放到另一个坐标系或叠加在另一份数据上位置就是偏的。碰到明显偏移时不要一根根线条去挪而是检查整个图层的坐标定义和底图是否一致。Bigemap的坐标系配置里可以手动指定叠加影像和矢量图层各自的投影参数把两边统一之后偏移大概率会消失。如果还是对不上就找片区内几个明显的参考点路口中心、建筑角点用“校正”功能做一次整体平移。5.3 屋顶边缘被树影和阴影咬掉一块高分辨率影像里高层建筑的阴影会让相邻建筑的屋顶一部分泡在阴影里树冠也会遮挡低层房屋的轮廓。描点的时候如果硬沿着阴影边缘画面积就会比真实基底小。我的做法是用两个窗口对照着来一个窗口看当前影像另一个窗口切换历史影像或者另一家影像源把被遮挡的那一段轮廓从其他视角补出来。实在找不到干净影像的就沿着屋檐应有的延伸方向把边界补齐宁可画进去一点也别少画——从我用全站仪抽样复核过的结果看人们描建筑轮廓的普遍误差方向是“画小了”不是“画大了”。5.4 坐标系配置文件别每次现配存一次能用一年Bigemap里坐标系设置有各种投影和椭球参数搞过测量的人看着熟悉没搞过的人第一次看到那一串参数确实懵。这里有现成的经验软件支持把坐标系的配置参数保存下来不同项目需要同一套坐标系时直接选择已保存的配置即可不用每次都手动输入。网上也有热心人分享现成的配置文件下载本质就是一套预设好的坐标系定义或自定义地图源配置。导入以后在设置里选择、激活就能省掉重复劳动。我自己的习惯就是把常用城市对应的投影坐标系分别存好命名直接带上城市名和用途比如“XX市_高斯投影_建筑调研”下次打开直接调用。5.5 导出的数据到ArcGIS/QGIS里打不开或属性丢失好不容易画完导出的数据拿到专业GIS软件里却双击打开没反应这是另一个高频事故。多半是路径问题——shapefile格式对保存路径很挑剔路径里有中文或者文件夹层级太深都可能加载异常。解决办法是导出时请选择纯英文路径例如D盘根目录下一个“buildings”文件夹。还会遇到属性表字段名被截断、中文属性乱码的情况。优先用GeoJSON格式中转它在字段兼容性和编码上比shapefile省心得多。真要在ArcGIS里矢量编辑那就保留一份Bigemap导出的原始文件作底到ArcGIS里另存为新的shp再做处理。6. 数据提取之后把散装建筑数据变成可复用资产6.1 建立自己的建筑信息图层库一次性提取完三十栋建筑的数据导出表格交差这是单次项目思维。做GIS数据做得久了会发现真正值钱的是持续积累起来的本地建筑信息库。每做完一个片区就把图层分组保存好命名带上“年-月-片区”过两年影像更新了再回来比对拆了哪些、新盖了哪些一目了然。我在团队里推行的规则是四条图层命名必须有时间和范围属性字段统一用拼音缩写或英文不带特殊符号每次保存都附带一个txt说明描述数据来源和采集方式关键项目的数据不做覆盖式保存旧版本留档。这套习惯坚持半年你手上就会有一个市面上买不到的历史建筑演变数据集。6.2 高度分级渲染让数据一眼看懂数据有了高度字段之后别只停留在表格里。Bigemap支持按属性值做分级设色把建筑高度分成0到12米、12到24米、24到60米、60米以上几个段一刷颜色整个城市的高度分布格局立刻浮现在地图上。这种分级渲染图在前期的汇报里特别好用。领导问“这个片区天际线怎么样哪里高哪里矮”不用翻Excel拿一张分级图就能说明白。更进一步还可以结合已有的地表高程数据做3D拉伸查看把建筑底面拔高形成一个粗略的城市三维模型。这个模型精度有限但用于空间形态推敲完全够。6.3 数据更新的节奏与标注建筑信息不是一劳永逸的。城市的拆建周期短则三五年长则十几年影像更新频率也各不相同。我的建议是每年固定做一次重点片区复查把新建筑补绘进去把已拆除建筑的图层状态改成“失效”而不是直接删除——保留历史状态对追溯非常有价值。每一次更新都要在属性表里加一个“更新时间”字段。这样将来做任何分析都能知道哪些数据是新的、哪些可能过期了不会拿着一份五年前的图层硬套现在的现状。这个习惯救过我很多次尤其是做涉及拆迁和权属分析的项目数据时点说不清楚结论就没有意义。提一句我在实际项目里的体会Bigemap这套流程最大的价值不是把画图变简单而是把“看现场之前的桌面预调研”变得极快。我现在接到一个片区任务先花十分钟在软件里把轮廓和高度数据拉出来到现场只需要抽验几栋整个项目的前期部分就能收工。当然最后要正式出具的成果该用专业测绘成果校核还是要校核——但被人追着要初步数据的时候能半小时交出一版带面积、周长的统计表这种从容是以前加班到半夜换不来的。如果你的工作也常跟建筑摸底打交道建议先从一个小片区练起跑通一遍之后你就会回来给这篇文章点赞的。
返回列表