前端/python脚本/转换-使用天地图下载的geojson(echarts4+如果直接使用会导致坐标和其他信息不全)

解决echarts4+如果直接使用天地图下载的geojson会导致坐标和其他信息不全

解决方法是使用python脚本来补全其他信息:center,level,adcode等内容

前提是必须有一个之前使用的json文件(需要全一点的数据供echarts使用)

公司是因为可能用之前的旧版本的地图数据可能会导致侵权或者是没显示重要内容,天地图里面的地图绝对是很正确的(国内地图)
天地图下载网址:https://cloudcenter.tianditu.gov.cn/administrativeDivision/

python脚本:

import jsonimport jsondef load_json(file_path):with open(file_path, 'r', encoding='utf-8') as f:return json.load(f)def save_json(data, file_path):with open(file_path, 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)def merge_properties(geojson, json_data):# 建立name到feature的索引,json_data中的名称较短name_to_feature = {feature['properties']['name']: feature for feature in json_data['features']}for geo_feature in geojson['features']:geo_name = geo_feature['properties']['name']for name, json_feature in name_to_feature.items():if name in geo_name:# 更新geojson中的properties,排除geometry字段geo_properties = geo_feature['properties']json_properties = json_feature['properties']# 打印调试信息print(f"Updating properties for {geo_name}")# 仅更新properties字段for key, value in json_properties.items():geo_properties[key] = valuebreak
def main(geojson_path, json_path, output_path):geojson_data = load_json(geojson_path)json_data = load_json(json_path)merge_properties(geojson_data, json_data)save_json(geojson_data, output_path)# 输入文件路径
geojson_path = 'china5.geojson'
#json_path = 'China4.json'
json_path = 'chinabak.json'output_path = 'xczxMap.json'main(geojson_path, json_path, output_path)

实现方案

china5.geojson(下载的天地图)中的北京是
{"geometry": {"type": "MultiPolygon","coordinates": [地图中的坐标]},"type": "Feature","properties": { "name": "北京市", "gb": "156410000" }   }
China4.json(原来使用的echarts的地图)中的北京是	
{
"type": "FeatureCollection","features": [{"type": "Feature","properties": {"adcode": 110000,"name": "北京","center": [116.405285, 39.904989],"centroid": [116.41995, 40.18994],"childrenNum": 16,"level": "province","parent": { "adcode": 100000 },"subFeatureIndex": 0,"acroutes": [100000]},"geometry": {"type": "MultiPolygon","coordinates": []  
}
  • 读取China4.json和china5.geojson文件。
  • 遍历China4.json中的每个feature,并检查china5.geojson中是否存在对应的name。
  • 如果存在,则将China4.json中feature的properties补充到china5.geojson的对应feature中。
  • 保存修改后的china5.geojson文件。
  • 过滤掉coordinates中的信息,不替换天地图中的坐标
  • name会保存为之前的echarts的名称(缩写)
    python目录
    在这里插入图片描述

前端调用地图代码

地图调用
function loadChinaMap() {
$.getJSON(//china5.geojson'@/../static/plugins/chinese-map/static/map/updated_china5.geojson',function(geoJson) {//获取当前地图数据值api.接口().then((res) => {let data = res.data ? res.data.data : [];let unitName = res.data ? res.data.unitName : ''; //单位let date = res.data ? res.data.date : ''; //日期_this.maps.bigNum = 0;for (let i = 0; i < d.length; i++) {d[i].value > _this.maps.bigNum? (_this.maps.bigNum = d[i].value): ''; //获取最大值}console.log(d);mapdata = data ;//注册地图echarts.registerMap('china', geoJson);//绘制地图renderMap('china', data, unitName, date);});}
);
}
地图渲染
<div class="m1_echarts1" id="m1_echarts1"></div>设置地图
import echarts from '@/../static/plugins/echarts/echarts.js';function renderMap(map, data, unitName, date) {
let chart = echarts.init(document.getElementById('m1_echarts1'));option.visualMap.max = _this.maps.bigNum + 5;option.title.subtext = map;option.tooltip.formatter = date(这个是日期) + ': {c}' + unitName(这个是单位);option.series = [{name: map,type: 'map',mapType: map,roam: true,zoom: 2.7,center: [104.46, 35.92],nameMap: {china: '中国',},label: {normal: {show: true,textStyle: {// color:'#EFF7FF',color: '#000',fontSize: 13,},},emphasis: {show: true,textStyle: {color: '#640000',fontSize: 13,},},},itemStyle: {normal: {// borderColor: 'rgba(147, 235, 248, 1)',borderColor: '#9c978b',borderWidth: 1,areaColor: {type: 'radial',x: 0.2,y: 0.2,r: 0.9,colorStops: [{offset: 0,color: 'rgba(255, 255, 255, 0)', // 0% 处的颜色},{offset: 1,color: 'rgba(255, 255, 255, .1)', // 100% 处的颜色},],globalCoord: false, // 缺省为 false},},emphasis: {areaColor: '#ffdf33',borderWidth: 0,},},data: data,},];//初始化绘制全国地图配置
var option = {title: {show: false,text: '',subtext: '',left: 'center',textStyle: {color: '#121212',fontSize: 16,fontWeight: 'normal',fontFamily: 'Source Han Sans CN',},subtextStyle: {color: '#121212',fontSize: 13,fontWeight: 'normal',fontFamily: 'Source Han Sans CN',},},grid: {//设置canvas内部表格的内距x: 50,y: 50,x2: 50,y2: 0,borderWidth: 10,},tooltip: {show: true,trigger: 'item',formatter: '{b}: {c}家',},toolbox: {show: false,orient: 'vertical',left: 'right',top: 'top',iconStyle: {normal: {color: '#fff',},},feature: {mark: {// '辅助线开关'show: true,},saveAsImage: {//保存为图片。show: true, //是否显示该工具。type: 'png', //保存的图片格式。支持 'png' 和 'jpeg'。name: 'pic1', //保存的文件名称,默认使用 title.text 作为名称backgroundColor: '#ffffff', //保存的图片背景色,默认使用 backgroundColor,如果backgroundColor不存在的话会取白色title: '中国地图',pixelRatio: 1, //保存图片的分辨率比例,默认跟容器相同大小,如果需要保存更高分辨率的,可以设置为大于 1 的值,例如 2},// dataView: {readOnly: false},},},animationDuration: 1000,animationEasing: 'cubicOut',animationDurationUpdate: 1000,visualMap: {min: 0,max: 150,right: '0',bottom: '2px',text: ['高', '低'],calculable: true,inRange: {color: ['#ebdecb', '#8aa87d', '#7d97a8'],},show: true,textStyle: {color: ['#DCE5F5'],},},
};//渲染地图chart.setOption(option, true);//地图点击事件chart.off('click');chart.on('click', function(params) {});}

数据格式:
在这里插入图片描述
最终样式:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

python(3.7版本)安装mitmproxy

环境介绍:win11, python3.7 pip install mitmproxy5.0.0 命令行cmd下,输入 Mitmdump 查看结果是否报错 如果报错上面这样子,就是markupsafe版本问题 换个Markupsafe版本就可以了 成功了吧!!!,如有问题,欢迎留言

js 图片放大镜

写购物项目的时候&#xff0c;需要放大图片&#xff0c;这里用js写了一个方法&#xff0c;鼠标悬浮的时候放大当前图片 这个是class写法 <!--* Descripttion: * Author: 苍狼一啸八荒惊* LastEditTime: 2024-07-10 09:41:34* LastEditors: 夜空苍狼啸 --><!DOCTYPE …

市场流行的蜗牛星际NAS和Think Pad X250硬件CPU等比较

当前二手市场流行的Mini服务器硬件是蜗牛星际NAS套件&#xff0c;流行的笔记本是Think Pad X230以及Think Pad X250&#xff0c;这里就比较下蜗牛和X250,因为它们都是低功耗、低运算的架构&#xff0c;至于神机Think Pad X230&#xff0c;它的速度太快&#xff0c;功耗太高&…

PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0

符合条件的 PCI SSC 利益相关者在 30 天的意见征询 (RFC) 期间审查 PCI PTS 硬件安全模块 (HSM) 模块化安全要求 v5.0 草案并提供反馈。 PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0图 从 7 月 8 日到 8 月 8 日&#xff0c;邀请符合条件的 PCI SSC 利益相关者在 30 天的意见…

结构体案例1

代码 #include <iostream> using namespace std; #include <string> #include <ctime>//学生的结构体 struct Student {string sName;int score; }; //老师的结构体定义 struct Teacher {string tName;struct Student sArray[5]; };//给老师和学生赋值的函数…

用vite创建Vue3项目的步骤和文件解释

创建项目的原则是不能出现中文和特殊字符&#xff0c;最好为小写字母&#xff0c;数字&#xff0c;下划线组成 之后在visual studio code 中打开创建的这个项目 src是源代码文件 vite和webpack是有去别的&#xff0c;对于这个vite创建的工程来说index.js是入口文件 在终端里面输…

microblaze时钟更改出现时序问题

在使用microblaze时&#xff0c;我给的时钟是200MHz的时钟&#xff0c;但会在跑布线的时候出现时序上的问题&#xff0c;一开始是没有任何的头绪&#xff0c;知道我尝试更改时钟的频率才发现问题的所在。 当我把200MHz的时钟改为100MHz的时钟时&#xff0c;就不会出现时序上的…

nodejs实现文件的分片写入和读取

&#xff08;1&#xff09;创建 test.cjs 文件 &#xff08;2&#xff09;代码 const {readFileSync,writeFileSync} require(fs); const {dirname} require(path); const chunkSize 1024 * 8; // 切片大小 const path C:\\Users\\cat\\De…

如何查询并下载韩国签证

登录大韩民国签证门户网站&#xff08;https://www.visa.go.kr&#xff09;&#xff0c;点击“查询/签发”- “办理进度查询及打印”。 2) 输入护照号码、英文姓名及出生日期后点击查询。 3) 若签证通过&#xff0c;办理状态信息栏下面会显示签证信息。 4&#xff09;点击“签证…

man手册的安装和使用

man手册 - HQ 文章目录 man手册 - HQ[toc]man手册的使用Linux man中文手册安装man中文手册通过安装包安装通过apt安装 配置man中文手册README使用说明配置步骤 man手册的使用 首先man分为八个目录&#xff0c;每个目录用一个数字表示 1.可执行程序2.系统调用3.库函数4.特殊文…

【吊打面试官系列-MyBatis面试题】简述 Mybatis 的插件运行原理,以及如何编写一个插件?

大家好&#xff0c;我是锋哥。今天分享关于 【简述 Mybatis 的插件运行原理&#xff0c;以及如何编写一个插件?】面试题&#xff0c;希望对大家有帮助&#xff1b; 简述 Mybatis 的插件运行原理&#xff0c;以及如何编写一个插件? Mybatis 仅可以编写针对 ParameterHandler、…

【单片机毕业设计选题24053】-基于单片机的WiFi控制门禁系统设计

系统功能: 系统上电后OLED显示智能门禁系统 Door:xxxxxx 初始化ESP8266完成后显示 Door:Closed 短按按键SW4可打开电磁锁OLED显示Door:Open&#xff0c;约五秒后电磁锁自动关闭OLED 显示Door:Closed 根据“TCP调试助手使用说明”操作&#xff0c; 在调试助手界面发送Open后…

Backend - C# 操作PostgreSQL DB

目录 一、安装 Npgsql 插件 &#xff08;一&#xff09;作用 &#xff08;二&#xff09;操作 &#xff08;三&#xff09;注意 二、操作类 &#xff08;一&#xff09;操作类 1.NpgsqlConnection类 &#xff08;1&#xff09;作用 &#xff08;2&#xff09;引入 &a…

gltf模型旋转

const loader new GLTFloader()loader.load(cars.gltf,(gltf) > {scene.add(gltf.scene)let angle 0function animate() {requestAnimateFrame(animate)angle 0.01//0.01是旋转速度gltf.scene.rotation.y anglerenderer.render(scene, camera)}animate()} ) 效果如下&a…

【centos 7.6 进入单用户模式】

1、重启服务器&#xff0c;按e进入编辑模式 将“RO”改成 rw ,删除 rhgb quiet&#xff0c;添加 init/bin/bash 2、Ctrl X 进入单用户模式 防止乱码&#xff0c;修改语言为英语 3、修改完密码建议输入&#xff1a;touch /.autorelabel 更新系统信息&#xff08;(此命令在/下…

完全可以媲美Navicat的DBeaver介绍!!

DBeaver 最新激活应用&#xff0c;亲测可用&#xff01;&#xff01;快来试试&#xff01;&#xff01;简介DBeaver是一种通用数据库管理工具&#xff0c;适用于需要以专业方式使用数据的每个人&#xff1b;适用于开发人员&#xff0c;数据库管理员https://mp.weixin.qq.com/s/…

Jetson-AGX-Orin多网卡绑定网卡名

Jetson-AGX-Orin多网卡绑定网卡名 ​ Jetson-AGX-Orin当通过USB接口或者Type-C口插入网卡设备后&#xff0c;重新上电Orin设备后&#xff0c;网卡设备的网卡名与Orin本身的以太网网卡名会发生交换。导致两个网卡设备配置发生错乱&#xff0c;两个网卡都将不通。 可以通过将网…

【Unity2D 2022:NPC】制作NPC

一、创建NPC角色 1. 创建JambiNPC并同时创建Jambi站立动画 &#xff08;1&#xff09;点击第一张图片&#xff0c;按住shift不松&#xff0c;再选中后两张图片&#xff0c;拖到层级面板中 &#xff08;2&#xff09;将动画资源文件保存到Animation Clips文件夹中 &#xff08;…

JVM垃圾回收器详解

垃圾回收器 JDK 默认垃圾收集器&#xff08;使用 java -XX:PrintCommandLineFlags -version 命令查看&#xff09;&#xff1a; JDK 8&#xff1a;Parallel Scavenge&#xff08;新生代&#xff09; Parallel Old&#xff08;老年代&#xff09; JDK 9 ~ JDK20: G1 堆内存中…

如何将HEVC格式的视频转换为无损、未压缩的MP4格式视频?

在和大家分享视频格式转换之前&#xff0c;先跟大家分享一下HEVC格式的视频到底是什么文件&#xff1f;压缩原理是什么&#xff1f;了解了它的本质之后&#xff0c;我们就可以知道如何保证视频高清无损了。 如何将HEVC格式的视频转换为无损、未压缩的MP4格式视频&#xff1f; …