ARTICLE DETAIL

资讯详情

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

2020上海建筑物面数据详解:shp格式下的面积与人口分析

2020上海建筑物面数据详解:shp格式下的面积与人口分析 简介本资源为2020年上海市全域建筑物面矢量数据集覆盖城市与农村区域以SHP格式提供完整建筑轮廓要素并附带建筑面积、常住人口等关键属性字段适用于城市内涝模拟如SWMM建模、下垫面分析、建筑能源评估、国土空间规划及城乡发展研究等实际场景面向地理信息、市政工程、环境科学等领域的科研人员与工程技术人员。压缩包共6个标准Shapefile组成文件含.shp几何数据、.dbf属性表、.prj坐标定义、.shx索引、.cpg编码说明及.xml元数据结构规范、开箱即用总大小108.78MB数据粒度精细可直接导入ArcGIS、QGIS等平台开展空间分析与模型驱动。目前已有619人学习下载用户可直接获取具备空间参考与人口统计维度的高质量建筑面数据支撑精细化城市建模、洪涝风险评估及可持续发展指标测算等核心任务。 拿到这份2020年上海建筑物面数据的时候我正好在做一个城市更新相关的分析项目。第一反应是——这份数据比很多“裸奔”的建筑轮廓图层要值钱得多。普通的shp建筑物数据往往只有几何边界顶多加一个楼层数而这份数据把面积和人口信息一起带上了而且是城市和农村全覆盖。这意味着你拿到的不只是一张“城市底图”而是一份可以直接做空间分析、人口估算、规划评估的基础数据集。这篇博文就围绕这个标题里的shp格式、建筑面要素、面积和人口信息四个关键词展开把数据本身的结构、使用时的坑、以及我能想到的应用场景都摊开聊一聊。1. 数据整体认知一份“能算账”的建筑物数据1.1 核心要素拆解建筑面要素到底是什么先说“建筑面要素”。学过GIS的人都知道shp文件里的要素类型无非点、线、面三类。建筑物在真实世界里是有占地范围的落到地图上天然就是面要素Polygon。这份数据里的“建筑面要素”指的就是每一栋建筑物在地图上被矢量化出来的轮廓多边形——从空中俯瞰屋顶边界围合出来的那个闭合形状。为什么要强调“面要素”而不是“点要素”因为只有面要素才能承载“占地面积”这个属性。如果用点要素表示建筑物你只能存一个坐标面积需要另算。而面要素不一样一旦有了几何边界GIS软件可以直接通过几何计算得出面积这个面积可以和属性表里的面积字段相互校验。而且面要素能做后续的空间叠加分析比如统计某个居委会范围内所有建筑物的总面积这是点要素做不到的。从数据生产角度来说这种面要素的采集通常有两种来源一种是从高分辨率遥感影像上人工矢量化另一种是借助已有的地形图、地籍图等基础测绘成果转绘。2020年的上海建筑面数据大概率是在既有基础测绘成果基础上结合最新遥感影像修测更新得到的因为上海本身的基础测绘工作做得很扎实。1.2 面积和人口信息数据里真正的“金矿”单纯有建筑轮廓能做的事情其实有限顶多看看哪里房子密集、哪里稀疏。但这份数据把“面积”和“人口”两个字段放进去之后整个分析维度就不一样了。面积字段解决了“量”的问题一栋建筑占地多大一个小区所有建筑加起来占地多少一条街道的建筑密度是多少。人口字段则把“人”的维度引了进来——每一栋建筑关联了估算的人口数量这个信息在很多分析场景里是刚需。为什么要强调“人口信息”和“面积”放一起很重要我给你举一个实际场景做应急疏散规划的时候你要是只有建筑轮廓那只能通过楼层数和建筑类型去猜里面有多少人勉强能算但误差很大。但如果数据里直接有人口字段哪怕这个人口数值是估算的也比你自己瞎猜要靠谱得多。再说城市更新动迁安置要算成本想知道一个地块里住着多少人直接对这块地做空间查询就能拿到人口总量工作效率完全不是一个量级。这样的数据结构也让我对它的生产逻辑有了判断面积字段应该是基于几何边界自动计算的人口字段大概率是通过某种空间单元比如居委会、人口普查小区的人口数据按建筑面积或建筑类型分摊估算出来的。这也意味着如果你拿到手的数据人口字段是零或者空值先别急着骂数据方先检查一下是不是字段被截断了这个细节后面单开一节说。1.3 shp格式为什么至今仍是“老大哥”说完了数据和属性再来谈谈shp格式本身。ESRI在90年代初推出的shapefile格式到现在快30年了依然是空间数据交换主流格式。原因没别的就是兼容性好、结构简单、读写门槛低。几乎所有GIS软件——ArcGIS、QGIS、FME、GeoDa——都能直接打开shp甚至很多非GIS专业的数据处理工具也支持。对于做数据分析的人来说拿到shp基本上等于拿到了“通用粮票”。不过shp格式有几个老毛病用的时候要心里有数。第一它是一个“复合格式”一个完整的shp文件图层其实由多个文件组成至少包括主文件.shp、索引文件.shx、属性表文件.dbf可能还有投影信息文件.prj、编码文件.cpg等。拷贝的时候如果只拷了.shp文件其他几个没拷全那这个图层基本就是坏的。第二字段名长度限制在10个字符以内中文更是容易出问题。第三属性表的字段类型比较古老只有字符型、数值型、日期型等少数几种。这几条都是后续实操过程中会遇到的实际问题先打个预防针。属性表里如果字段名出现一堆乱码或者被截断的英文不用惊慌大概率是生产端字段命名规划的锅不影响几何数据本身。2. 数据使用前的准备工作2.1 坐标系问题别让数据“跑偏”了拿到任何一份shp数据第一件事永远是检查坐标系。这就像拿到一份Excel先看表头一样属于基础动作。2020年上海建筑面数据按照国内的测绘标准常用的坐标参考有两类一类是CGCS20002000国家大地坐标系的高斯-克吕格投影上海地区通常用3度分带的第51带中央经线是123度另一类是上海地方坐标系这是上海市自己的一套坐标系统和全国统一坐标系之间存在一个固定的转换参数。为什么我特别提醒坐标系因为这个坑我踩过不止一次。有人拿到的shp数据在ArcGIS里显示是“Unknown Coordinate System”或“GCS_CGCS2000”但实际上几何坐标已经被投影过了。如果坐标系标注有问题叠加到其他图层上就会对不上——要么数据跑到海里去了要么整体偏移几百米。建议拿到数据后先加载一个在线底图或者已知坐标系的行政边界做叠加对比确认套合没问题再往下走。还有一个细节如果这份数据是从地理坐标系经纬度转投影坐标系存下来的那么字段里的“面积”不一定等于你在GIS里看到的几何面积。地理坐标系下面积计算是用度做单位投影坐标系下才是平方米。所以面积字段到底怎么来的也直接决定了后续算出来的指标可不可信。2.2 属性表结构检查字段含义逐一确认打开属性表之后我一般会先做一个清单把每个字段名、类型、含义记下来。这份数据如果字段设计比较规整的话应该会有类似FID要素编号、Shape几何类型、建筑ID、建筑类型、楼层数、占地面积、建筑面积或者投影面积、所在区县、所在街镇、关联人口数、数据来源年份这类字段。重点说一下面积字段。建筑物面数据里的“面积”可能有几种口径占地面积建筑物基底占地面积、建筑面积各层面积之和、以及投影面积轮廓投影面积。这三者完全不同占地面积是建筑物正投影到地面的面积建筑面积要考虑楼层数。一份高质量的建筑面数据应该至少区分“占地面积”和“建筑面积”如果你在字段里看到两个面积字段通常一个是占地、一个是建筑总量。做人口密度分析时用占地面积更合理做房地产开发强度分析时则应该看建筑面积。人口字段的类型也值得注意——它是整数还是浮点数如果人口数是小数比如12.34那肯定是按某种模型估算分摊出来的不是普查登记的实际人口。这个精度问题要心里有数用它做大尺度分析没问题但别拿去给具体某栋房子做精确判断。2.3 数据量级与图斑完整性评估2020年上海的建筑物面数据图斑数量不会少。上海市域面积6340.5平方公里中心城区加郊区的建筑物面数量粗估在百万级左右。打开的时候如果电脑配置一般可能会卡顿。建议先看缩略图或者在属性表里看一眼记录条数确认数据量级之后再做下一步规划。完整性方面重点看几个方面一是城市和农村的覆盖是否都齐全——上海的农村地区也有大量宅基地、农房如果这份数据把农村建筑也纳入了那图斑数量会明显增加二是看有没有明显的大片空白区域比如某个镇的中心区域空空如也那可能是数据生产时出了问题三是看有没有“飞图斑”比如应该在上海范围内的建筑却跑到了区域外面。这些可以通过快速的全图浏览和分区统计来检查。3. 核心实操过程从原始数据到可分析图层3.1 实操准备加载数据与初步核验拿到这份数据的第一步我建议你打开ArcGIS Pro或者QGIS我个人习惯用QGIS开源免费处理大文件也比较稳。先把shp文件拖进地图然后按照下面这个步骤做一轮快速核验查看图层属性里的坐标系信息确认是投影坐标系还是地理坐标系。将底图切换为在线影像底图把建筑面要素叠加上去肉眼观察套合情况。打开属性表查看记录数、字段列表确认面积字段和人口字段是否存在且数据完整。用“统计”功能QGIS里是矢量菜单下的统计看面积字段的分布范围有无0值或负数。这一步做完之后你对数据的整体质量就有了一个基本判断——是“靠谱”还是“要动手收拾”。绝大多数情况下正规部门发布的数据不需要太大手术但如果面积字段出现大量0值或者人口字段全是Null那就要进入下一步清洗流程了。3.2 属性清洗与字段整理属性清洗这一节我直接把我常用的流程写出来你可以按这个顺序处理第一处理空值和零值。面积字段如果出现0通常有两种可能一是数据生产时漏算二是小图斑的面积太小被四舍五入成了0。针对第二种情况可以先计算几何面积然后用几何面积反填。操作手法是在属性表里新建字段“calc_area”右键计算几何QGIS里是Field Calculator里的$area函数然后筛选面积字段为0但几何面积不为0的图斑把calc_area的值回填过去。第二检查人口字段的合理性。比如一栋普通住宅的估算人口是500人那明显不合理。这类异常值可以先标记出来看看是不是数据生产时的错误。如果异常值数量很少可以直接删掉或者置为Null如果数量较多需要检查是不是人口字段被某个其他字段串位了。第三统一字段命名。shp格式的字段名只有10个字符英文命名字段名会被截断成8位波浪号格式。如果属性表里有中文名建议转换为拼音或英文缩写比如把“建筑面积”改成“Area_Built”“人口”改成“Population”避免后续分析时字段名在编码转换过程中出问题。3.3 空间分析前的数据精简与索引优化当图斑数量达到几十万上百万每次操作都要等很久的时候就需要做图层瘦身和索引优化了。常用的方法有三个建立空间索引。QGIS里可以在图层属性里勾选“创建空间索引”ArcGIS里是用“构建空间索引”工具。有了空间索引空间查询的速度可以提升好几个数量级。按区域拆分。如果你的分析范围是某个区或者某个街道不用每次都全量加载整个上海的数据直接用“裁剪”或“按位置选择”把目标区域的数据提取出来另存为一个新文件。比如你做虹口区的分析就把虹口区的图斑提取出来后续操作都会顺畅很多。简化不必要的字段。属性表里如果有很多用不上的字段比如生产过程中的临时ID、备注、冗余分类编码可以新建一个图层只保留需要的字段这样文件体积能减小不少。3.4 空间连接与人口数据叠加分析当你要把人口字段和别的数据结合使用时有一个空间操作几乎是必然要做的空间连接Spatial Join。举一个例子你想算上海各街道的人均住房建筑面积但手头只有建筑物面数据和街道边界数据。操作步骤是这样的第一步把建筑面图层和街道边界图层做空间连接连接方式选择“包含”Join one to many这样每栋建筑会被匹配到它所在的街道街道的名称就写入了建筑属性表。第二步用街道分组汇总统计每个街道的建筑总面积和总人口。这个在QGIS里用“按属性汇总”工具在ArcGIS里用“汇总统计”工具。第三步用总面积除以总人口得到人均建筑面积再做分级设色出图。这套流程看着简单实际跑一遍会收获很多细节。比如空间连接时有些建筑正好压在街道边界上会被街道A和街道B两个都匹配产生重复统计又比如一些孤岛图斑匹配不到任何街道要在结果里排查。这些边缘情况都是实操中避不开的。3.5 数据入库与格式转换建议如果你打算长期使用这份数据我建议从shp转入数据库格式。shp适合交换但真做项目还是空间数据库好用。对于个人项目而言GeoPackage是很好的替代方案它把几何和属性存在同一个SQLite数据库文件里支持空间索引、字段名不受10字符限制、不会出现shp那种丢文件的问题。你只要在QGIS里右键图层“导出”选择“GeoPackage”选好保存路径完事儿。如果后续要用PostGIS做大数据量空间分析也可以直接把shp导入PostgreSQL。QGIS里自带DB Manager插件连接PostGIS数据库之后导入shp文件只需要选库、选表、设编码三步。今年如果你有把数据发布成WMS服务的需求也可以考虑用GeoServer发布但那就是另一个话题了。4. 典型应用场景与业务价值分析4.1 城市更新与老旧小区改造评估2020年的建筑面数据对于城市更新项目来说价值在于提供了一个“现状底册”。你可以在老化小区筛查这一环节直接利用数据里的建筑年代字段、楼层字段和人口字段。比如找出同时满足“1990年以前建成”“楼层低于7层”“人口密度高”三个条件的建筑图斑把它筛选出来形成“潜在老旧小区清单”接着再做实地踏勘核实效率就高很多。反过来你也能用这份数据做“改造潜力估算”。比如某一片区的建筑占地面积为3.2万平方米当前容积率只有1.1用地性质允许提升到2.0那么理论上这块地还可以增加约2.88万平方米的建筑面积。这些计算都是从面积字段出发的有了可靠的面积底数改造方案的可信度就上来了。4.2 违建排查与网格化治理建筑面数据的另一个典型应用场景是违建排查。把2020年的建筑面数据和一个更新的建筑轮廓数据做差异对比凡是新版本有但旧版本没有的图斑都可能是新建建筑凡是旧版本有但新版本没有的可能是拆除建筑。这个过程在GIS里叫“叠加差分分析”。实际操作中先把两个年份的shp分别导入同一个数据库然后做空间叠加筛选出只在一个图层中存在的图斑。这里要注意一个细节城市建筑轮廓在不同年份可能由于生产单位不同几何边界有细微变化导致原本没变的房子被识别成“变化图斑”。这种情况下就需要设置一个容差比如小面积图斑不算变化或者用“几何相似度”指标做过滤。别指望全自动一次出结果大概率要人工抽查。4.3 应急管理与疏散规划人口信息在应急管理场景下的价值是无可替代的。比如你要做一个小区的消防疏散能力评估小区内单栋建筑人口字段之和是总人口建筑出入口位置和道路连通情况决定疏散通道把居住人口数据和疏散通道承载力做对比就能评估高风险区域。再往大一点说台风、暴雨等自然灾害来临时把受灾影响范围边界比如洪涝淹没范围和建筑面数据叠加就能快速统计淹没区域内的建筑数量、涉及人口数量。这个数据支持能让应急决策从“拍脑袋估计”变成“有数的估算”在救灾资源调拨时非常重要。4.4 15分钟生活圈与公共服务设施评价近几年“15分钟社区生活圈”规划很火这个规划理念的核心是居民在步行15分钟范围内能方便获取基本公共服务。做这类分析时建筑面数据主要是用来提供“人口分布”的空间化底数。公共服务设施菜场、医院、学校、养老机构分布是点数据居民在哪是不知道的但通过建筑面数据的人口字段可以把人口精确落到每一栋建筑上。做法是用路网数据做“服务区分析”得到每个设施周边步行15分钟可到达的范围再把这个范围和建筑图斑叠加统计范围内涉及的人口。哪里的设施覆盖不足一看范围外的人口数量就一目了然。这种方法比传统“街道总人口除以街道面积求密度”的网格法精细得多对落地规划决策的帮助也更直接。5. 常见问题与排查技巧实录5.1 属性表打开发现人口字段全是Null出现这种情况第一反应不是数据坏了而是检查是不是字段类型问题。shp的dbf表对字段名和字段类型限制严很多生产单位在建表时人口字段名称是个中文名或者特殊字符发布时被直接转成了一个空字段名。建议先查看字段列表看看有没有类似“Popu”“Pop”“Popul”之类的截断字段名把它和原始字段对应起来。如果确实有值但显示不出来可能是数据编码问题——用QGIS打开时选择“UTF-8”编码重载一次往往就能看到中文和数值。5.2 面积数据算出来和几何面积对不上这是最常被问到的“数据错误”之一。如果你选择的坐标系是地理坐标系经纬度那直接在GIS里计算面积单位是平方度不是平方米和字段里的平方米数值自然对不上。解决办法是先把图层投影成投影坐标系再计算几何面积。还有一种是数据生产时用的建筑轮廓经过了简化比如去掉了太多节点导致几何面积和原始真实面积有偏差。越是圆形的建筑比如体育馆、大型商场简化后面积偏差越明显。这种一般不用修正但做面积统计时心里要有数。5.3 建筑图斑之间的缝隙和重叠城市地区建筑密集建筑图斑之间可能会有几米的缝隙或者重叠。这在做统计时问题不大但做“建筑覆盖率”之类的指标时要注意建筑覆盖率是建筑总面积除以地块总面积如果图斑之间有重叠计算出来的覆盖率会偏大。严谨的做法是先做一次“移除重叠”处理QGIS有Remove Null Geometries或Eliminate等工具ArcGIS里有“消除”工具把重叠的图斑切分清楚再统计。5.4 坐标系警告底图偏移明显前面说过上海地区常用CGCS2000和地方坐标系两套。如果你把CGCS2000的数据和在线影像底图叠加而底图是WGS84的一般偏差不大但如果数据实际是上海地方坐标系却标注成了WGS84那偏移就可能达到几百米。这时候不要直接在线底图上做分析正确做法是找当地的测绘部门要一套坐标转换参数或者借助上海市已有的坐标转换工具把数据转到CGCS2000下再使用。有些第三方库也提供各地的坐标系转换服务但务必先验证精度再铺开使用。5.5 数据更新频率与时效性问题最后说一个很多人容易忽略的点2020年的数据即便生产时再准确放到今天也一定有“过时”的地方。上海这几年城市更新速度很快很多地方已经拆了或者盖了新楼。所以用这份数据做现状分析时结果只能作为参考底数尤其涉及“当前人口”的分析务必要结合最新数据校准。建议在报告里明确标注数据时点并说明“现状建筑及人口分布以最新实地调研校准为准”这类前提。在这个问题上我的经验是把2020年的数据当作“时间断面”使用而不是“现状数据”。比如分析几年间城市空间形态的变化用多期数据对比就更合适分析现状人口承载就需要叠加更新的规划人口数据或者手机信令数据做修正。建筑面数据永远只能是众多数据源中的一个合理搭配才能发挥最大价值。提示使用2020年上海建筑物面数据进行空间分析时务必先确认坐标系和面积字段口径再做任何叠加和面积计算。6. 写在最后的一些心里话最后想跟你分享几点我做这类数据项目时的体会。第一数据质量是分析的生命线。我见过不少项目分析模型建得花里胡哨最后因为基础数据里的坐标系错误输出结果全部作废。做空间分析拿到数据先花20分钟做快速质检绝对比分析做到一半发现数据有问题再来返工划算得多。第二属性字段的意义比几何形状更值得研究。很多人拿到的建筑面图层第一反应是“这房子画得真细”但真正让数据值钱的是属性表里的内容。这份数据带了面积和人口已经算是“高配”了尤其人口信息在某些场景下是花钱都买不到的。如果后续有人口字段数据更新优先去更新维护属性信息而不是沉浸在修几何边界上。第三数据的价值在共享和融合。建筑面数据单独用它能做的事情其实是有限的但如果你把它和路网、POI、地价、手机信令、土地规划等数据融合在一起整个分析链条就会变得非常完整。我曾经帮一个做社区商业策划的朋友把建筑面数据的人口字段和POI数据叠在一起分析最后得出来的“哪些小区周边缺便利超市”结论直接指导了招商选址对方反馈说比他们以往靠经验判断靠谱得多——因为我给的每一个结论背后都有具体的数字支撑。打个比方吧这份2020年上海建筑物面数据就像是城市精细化治理的一张“数字画布”面积是画布的尺寸人口是画布上的人影而你要做的就是用各种分析方法在这张画布上找到自己的那幅画。希望这篇博文能帮你少走一些弯路。后面我如果拿这份数据做出更有意思的案例再来跟大家分享。本文还有配套的精品资源点击获取
返回列表