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

概述

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

下载并转换

下载下来的数据如下图所示。
image.png

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

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

<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

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

坐标转换

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/441131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手写简易操作系统(一)--环境配置

本专栏是我新开设的一个学术专栏&#xff0c;旨在全面介绍手写操作系统的相关内容。其中包括实模式向保护模式的过渡、锁机制、信号量操作、内存分配、硬盘驱动、文件系统、简单shell和管道等操作系统核心知识。该专栏旨在为有意开发自己操作系统的研究人员提供指导与帮助。作为…

代码随想录刷题笔记-Day31

1. 分发饼干 455. 分发饼干https://leetcode.cn/problems/assign-cookies/ 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口…

园区内部无线语音通信的解决方案

在一些园区、办公环境和厂矿场所&#xff0c;内部无线语音通信功能的需求日益凸显&#xff0c;尤其对于人员流动和移动办公的场景。这种需求着重强调了无线通信的便捷性和内部部署环境的适应性。 传统的内部通信系统中&#xff0c;有线通信能力占据主导地位&#xff0c;如集团…

【Latex】图片排版归纳(单张、两张图片并排、三张图片并排)

文章目录 单张图片两张并排三张并排 单张图片 \begin{figure}[htb]\centering\caption{PWM原理图}\includegraphics[width0.45\textwidth]{images/PWM.png}%可修改0.45为其他比例&#xff0c;调整大小 \end{figure}两张并排 实现效果如下 \begin{figure}[htb]\begin{minipag…

Qt初识 - 编写Hello World的两种方式 | 对象树

目录 一、通过图形化方式&#xff0c;在界面上创建出一个控件 二、通过代码方式&#xff0c;创建Hello World 三、Qt 内存泄漏问题 (一) 对象树 一、通过图形化方式&#xff0c;在界面上创建出一个控件 创建项目后&#xff0c;打开双击forms文件夹中的ui文件&#xff0c;可…

托管服务器常见的问题有哪些(常见托管问题解决)

​  对于我们来说&#xff0c;选择一个合适的服务器托管提供商只是建立和管理自己所属网站的第一步。相对来说&#xff0c;真正的挑战在于解决管理网站运行时可能出现的各种问题。就像有时&#xff0c;有些常见的服务器托管问题是不可避免的&#xff0c;但通过主动监控、定期…

统信操作系统安装Docker

1操作系统信息 2 当前系统预装了Docker相关文件&#xff0c;因此以下两个步骤无需操作&#xff1a; 1.安装环境 yum install -y yum-utils 2.设置镜像仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 仓库地址默认是国外的&…

Matlab|基于目标级联法的微网群多主体分布式优化调度

目录 主要内容 1.1 上层微网群模型 1.2 下层微网模型 部分程序 实现效果 下载链接 主要内容 本文复现《基于目标级联法的微网群多主体分布式优化调度》文献的目标级联部分&#xff0c; 建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中心优化调度…

python爬虫(3)

上一次的代码结果如下&#xff1a; 当然会有一点点不一样是正常的表现&#xff0c;因为这个图本身使用随机数rand函数做的&#xff0c;用其他两种随机函数出来的结果也不会完全相同。 继上节这次带来的是数组的重塑和转置 1、一维数组的重塑 在NumPy模块中的reshape()函数可…

黑马点评-附近商户实现

GEO数据结构 Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;根据经纬度来检索数据。 GEO本质上是基于sortedSet实现的&#xff0c;在Sorted Set中&#xff0c;每个成员都是与一个分数(score)相关联的&#xff0c;这个分数用于对成员进行排序…

LeetCode-102.题: 二叉树的层序遍历(原创)

【题目描述】 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 【题目链接…

如何将任何文本转换为概念图(GC)

原文地址&#xff1a;how-to-convert-any-text-into-a-graph-of-concepts 使用 Mistral 7B 将任何文本语料库转换为知识图的方法 2023 年 11 月 10 日 使用递归 RAG 方法来实现具有多跳推理的 QnA&#xff0c;以回答基于大型文本语料库的复杂查询。 知识图增强生成与递归 R…

goby的安装和使用

简介 Goby是一款基于网络空间测绘技术的新一代网络安全工具&#xff0c;它通过给目标网络建立完整的资产知识库&#xff0c;进行网络安全事件应急与漏洞应急。 Goby可提供最全面的资产识别&#xff0c;目前预置了超过10万种规则识别引擎&#xff0c;能够针对硬件设备和软件业…

深入探索Docker数据卷:实现容器持久化存储的完美方案(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker入门到精通》 《k8s入门到实战》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 四、Docker数据卷的高级管理 1、数据卷的生命周期管理 2、数据…

2001-2022年上市公司利润表数据

2001-2022年上市公司利润表数据 1、时间&#xff1a;2001.12.31-2022.12.31 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、证券简称、统计截止日期、报表类型、投资收益、其中&#xff1a;对联营企业和合营企业的投资收益、公允价值变动收益、营业利润、其他综…

网关数据采集解决方案-天拓四方

随着物联网技术的快速发展&#xff0c;数据采集已成为企业运营、管理和决策的重要支撑。网关作为连接不同网络的关键设备&#xff0c;其在数据采集过程中发挥着至关重要的作用。本文将详细介绍一种网关数据采集解决方案&#xff0c;旨在确保数据采集的高效性、准确性和安全性。…

「解析文件流,Java之FileOutputStream助您轻松操作文件!」

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

【Java项目介绍和界面搭建】拼图小游戏——作弊码、查看完整图片

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

HarmonyOS 数据持久化 关系型数据库之 初始化操作

上文 HarmonyOS 数据持久化之首选项 preferences 我们有说用户首选项 但它只能处理一些比较简单的数据类型结构 的持久化处理 如果是一些批量较大 结构较为复杂的数据结构 那么 首选项就无法满足了 我们就要选择 关系型数据库 通过 SQLite 组件实现的一种本地数据库&#xff0…

TCP包头

TCP包头: 1.序号:发送端发送数据包的编号 2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用) TCP为什么安全可靠: 1.在通信前建立三次握手连接 SYN SYNACK ACK SYN是TCP包头的一个字段 tcp.port 端口号 抓包数据 2.在通信过程中通过序…