前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度地图城市点位数据下载并转换

百度地图城市点位数据下载并转换

作者头像
lzugis
发布2024-05-24 13:18:29
730
发布2024-05-24 13:18:29
举报

概述

在浏览百度地图开放平台的时候,发现有个资源下载页面,里面有个城市中心点位百度地图行政区划adcode映射表数据,这是一个经常使用到的数据,本文实现将这个数据转换为geojson,并借助QGIS转换为经纬度坐标或火星坐标。

下载并转换

下载下来的数据如下图所示。

将文件后缀改为js文件,并添加代码var data = 如下图所示。

在html中引入修改后的文件,并写转换代码,转换代码可如下:

代码语言:javascript
复制
<script src="./data.js"></script>

<script>
    function getCenter(str) {
        const [c, z] = str.split('|');
        return {
            zoom: parseInt(z),
            center: c.split(',').map(Number)
        }
    }

    class Geojson {
        constructor(features = [], metaData = {}) {
            this.type = 'FeatureCollection'
            this.metadata = metaData
            this.features = features
        }
    }

    class Geometry {
        constructor(type, coordinates) {
            this.type = type
            this.coordinates = coordinates
        }
    }

    const GEOMETRY_TYPE = {
        POINT: 'Point',
        LINESTRING: 'LineString',
        MULTILINESTRING: 'MultiLineString',
        POLYGON: 'Polygon',
        MULTIPOLYGON: 'MultiPolygon'
    }

    class Feature {
        constructor(geomType, properties, geometry) {
            this.type = 'Feature'
            this.properties = properties
            this.geometry = Array.isArray(geometry) ? new Geometry(geomType, geometry) : geometry
        }
    }

    const bb = Object.values(data)
    let res = []
    bb.forEach(b => {
        b.forEach(_b => {
            res.push({ name: _b.n, ...getCenter(_b.g) });
            const cities = _b.cities || [];
            cities.forEach(c => {
                res.push({ name: c.n, ...getCenter(c.g) })
            })
        })
    });

    res = res.map(({ name, zoom, center }) => {
        return new Feature(GEOMETRY_TYPE.POINT, { name, zoom }, new Geometry(GEOMETRY_TYPE.POINT, center))
    })
    console.log(JSON.stringify(new Geojson(res)))
</script>

控制台输出的即为转换后的geojson,如下图。

image.png
image.png

将数据复制为json文件,并在qgis中打开,打开后设置标注,效果如下:

坐标转换

转换后的数据位百度的坐标,借助扩展中的geohe工具箱将坐标转换为火星坐标系,操作图下图。

转换后的比较结果如下图。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 下载并转换
  • 坐标转换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档