专栏名称: 小猿猴GISer
GIS遥感交流学习
目录
相关文章推荐
51好读  ›  专栏  ›  小猿猴GISer

QGIS+天地图:一键提取天地图建筑轮廓,数据获取超简单!

小猿猴GISer  · 公众号  ·  · 2025-03-27 18:00

正文

请到「今天看啥」查看全文


最近这一周,一直在梳理合适的建筑轮廓数据源来支撑产线相关的产品,一通下来,也是踩坑很多,之前也给大家分享过很多建筑轮廓的数据源,结合这次基于QGIS+天地图的方法,系统的给大家做一个总结,大家结合自己的实际需求,合理选择:
1、OSM: 免费,属性信息很全(高度、名称等),对于咱们国内城市来说,有些区域缺失很多,如果做一些学习研究还是可以的,QGIS也有插件 可以下载,BlenderGIS也有集成,有需要的可以翻看我之前的文章:
BlenderGIS: 基于Blender快速制作科技风城市建筑白模
QGIS- OSMDownloader 从二维到三维:QGIS带你探索三维建模的无限可能 ;
2、Zenodo: 免费,基于遥感影像解译的,数据整体覆盖很全,而且还有高度字段,一线城市的数据质量还行,但小城市的数据质量就很感人,需要的可以看我之前文章: 《全国建筑矢量数据一键下载(含高度字段)》
3、AI解译: 主要是提供AI影像解译的工具或者平台进行建筑轮廓提取;
QGIS插件:两个插件,一个是 Magic Wand ,免费,但处理结果很感人,对我而言不可用;另外一个是 mapflow ,收费,有免费配额,处理结果还不错;
大厂平台 一个是 阿里达摩院 AI Earth ,提供了很多种解译工具,也是有免费的配额,地址: https://engine-aiearth.aliyun.com/#/ ;另外 一个是 商汤科技的sceneEarth ,精度很高,效果也很不错,官方也展示很多城市的专题图数据(矢量切片服务),但是下载数据需要收费,也是有免费配额,地址: https://senseearth-cloud.com/ ,上述两个出来的建筑数据,都是没有高度的;
4、图商: 主要和高德地图商务那边聊了一下,主打的就是一个贵字,直接就给我劝退了,具体就不展开说了,如果你不差钱,那就当我没说~
回到今天的主题,今天要和大家分享的是,完全基于QGIS,叠加天地图电子地图,实现建筑轮廓数据的一键提取,除了没有高度之外( 高度信息可以和zenodo数据进行叠加,通过空间挂接获取 ),个人认为数据精度可以吊打市面免费公开的数据,给大家看一下我实际测试的一片区域:
具体的实现思路:基于天地图的电子地图,对电子地图中的建筑轮廓数据进行颜色采样,接着对栅格数据进行二值化处理,最终通过栅格转矢量,获取相应的建筑轮廓数据,具体操作流程如下:
1、数据准备
打开QGIS,并加载天地图电子地图(其他电子地图也是ok),我用的是天地图的插件,在QGIS插件管理器中搜索“ TianDiTu”,安装即可,当然你也可以通过url,以WMTS服务的形式把地图加载进来,个人觉得插件还是很好用~
安装完成之后,会出现相应的工具条,记得配置天地图key,具体key的申请,可访问 http://lbs.tianditu.gov.cn/server/MapService.html
2、构建提取区域
天地图加载进来后,选择需要提取建筑轮廓的区域,我这里选择的是长沙的某个区域,这里需要注意的是,区域不要过大,区域过大,处理的时间就越久;接着在图层树中选择【天地图-矢量地图】,右键导出-另存为;
接着在弹出的窗体中,按照下图中标红进行设置,分辨率我是按照地图单位进行设置的,即:一个像素代表的实际尺寸,也可以通过下面的行列进行像素值设定;
最后点击确定,我们就把需要提取建筑的区域导出来了,最后再设置一下他的伽玛值,滑到最右侧即可, 这样做的目的是方便我们更容易区分建筑和其他地图元素,最后点击应用即可;
接着,我们可以看到整体地图的配色就发生变化了,建筑的颜色变成偏绿的效果了,具体如下:
3、栅格二值化
接下来,我们点击上述处理后的地图,通过属性拾取,获取建筑的颜色分带值,如下:
这个值很重要,一定要记住,一会做栅格二值化的时候会用到,主要有4个Band,表示RGBA;接着我们在工具箱中点击【Raster calculator】栅格计算;
接着在弹框中,设置【Input layers】输入图层(待处理图层),然后设置输出范围(默认从图层计算即可),以及输出CRS,选择EPSG:3857,最后设置相应的输出路径;
最后再详细说一下这个Expression表达式,点击表达式,在弹出窗中,按照上述咱们获取的RGB值进行过滤,目的是只过滤出建筑轮廓,这里需要注意的是,图层后面都会有一个@符号,后面跟1、2、3,1表示R,2表示G,3表示B,A不用关注,然后再把相应的值对上即可,最后通过and(并)的方式构建条件语句;
最后点击run执行,我们就获取到了只包含建筑数据的栅格二值化的灰度图,如下:
4、栅格输出矢量shp
接下来,我们就需要把栅格图转成矢量数据了,点击工具箱中栅格转矢量工具,如下图:
在弹窗中选择刚才输出的二值化数据,设置输出路径,即可完成建筑矢量shp数据的输出;
5、数据美化
输出之后的shp数据,会有一个大的范围底面,我们只需要通过编辑,将相应的底面删除即可,这里不再赘述,这里需要着重说的一个点是,导出的数据有些轮廓的锯齿感很明显,这个时候需要对数据进行简化平滑处理,消除多余的锯齿。
点击工具箱,在工具箱中的【Vector geometry】中找到【Simplify】化简按钮,如下图:
点击化简,在弹窗选择刚刚输出的shp数据,设置相应的输出路径, 其他参数默认即可,最终完成相应的数据化简;
至此,就完成了整个建筑轮廓的提取,整体精度是相当高的,但是缺失相应的高度信息,正如我前面说的,我们可以拿着提取后的数据和zenodo数据进行叠加,通过空间挂接,就完成了高度字段的挂接,感兴趣的小伙伴可以尝试一下,有任何问题欢迎私信沟通讨论~

end








请到「今天看啥」查看全文