前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mapboxGL中3D行政区划的实现

mapboxGL中3D行政区划的实现

作者头像
lzugis
发布2022-09-23 09:48:24
7150
发布2022-09-23 09:48:24
举报
文章被收录于专栏:跟牛老师一起学WEBGIS

概述

很多时候我们会遇到3D行政区划的展示,在mapboxGL中,面状的3D展示比较容易,我们可以通过fill-extrusion来实现,但是没法实现其边界线在上面的浮动展示。本文借助QGIS,实现边界线在上面的浮动展示。

实现效果

实现效果
实现效果

实现思路

1. 3D行政区划

这个比较简单,通过fill-extrusion来实现。

代码语言:javascript
复制
// 添加数据源
map.addSource("geojson": {
      type: 'geojson',
      data: './data/beijing.geojson'
 })
// 添加图层
map.loadImage('./data/ground.PNG', function(error, image) {
  if (error) throw error;
  map.addImage('ground', image);
  map.addLayer({
    id: 'geojson-fill',
    source: 'geojson',
    type: 'fill-extrusion',
    paint: {
      'fill-extrusion-height': 15000,
      'fill-extrusion-base': 0,
      'fill-extrusion-opacity': 0.85,
      'fill-extrusion-pattern': 'ground'
    },
  })
})

2. 边界线浮动展示

边界线的浮动展示也是通过fill-extrusion来实现的,其实现方式是通过取巧的方式将面转成了线,再将线做很小距离的缓冲区,将其转成面之后在做展示。

面转线
面转线
建立缓冲区
建立缓冲区

数据处理完之后,就可将其叠加到地图上。

代码语言:javascript
复制
// 添加数据源
map.addSource("geojson-b": {
      type: 'geojson',
      data: './data/beijing-b.geojson'
 })
// 添加图层
map.addLayer({
  id: 'geojson-fill-b',
  source: 'geojson-b',
  type: 'fill-extrusion',
  paint: {
    'fill-extrusion-height': 15100,
    'fill-extrusion-base': 14950,
    'fill-extrusion-opacity': 1,
    'fill-extrusion-color': '#fff'
  },
})

最后,添加标注。

代码语言:javascript
复制
map.addLayer({
  'id': 'geojson-label',
  'type': 'symbol',
  'source': 'geojson',
  layout: {
    'text-field': ['get', 'name'],
    'text-size': 14,
    'text-allow-overlap': true,
    'text-justify': 'center'
  },
  paint: {
    'text-color': 'rgb(159, 96, 55)',
    'text-halo-color': '#fff',
    'text-halo-width': 1.8,
  },
});

本文源代码请扫描下面二维码或直接前往仓库获取。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 实现效果
  • 实现思路
    • 1. 3D行政区划
      • 2. 边界线浮动展示
      相关产品与服务
      图像处理
      图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档