如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践

如何使用 ECharts 将中国地图省份合并为大区

前言:

公司项目要求在中国地图上显示各大区的设备运行情况及其数据,echarts引入地图数据后全是一块一块的省份,但是公司要求将部分省份合并成一个战区,中国地图也就分为了西北战区,北部战区,中部战区,西南战区,东部战区,南部战区六大战区,echarts也没有这个功能只能从echarts支持的map数据入手,如何下载中国地图的json数据,进行处理自定义,将各个省份合并为一个GeoJSON格式的文件,echarts地图可直接引用GeoJson文件进行达到地图合并自定义的效果。

效果:

如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践
如何使用 ECharts 将中国地图省份合并为大区
如何使用 ECharts 将中国地图省份合并为大区

实现

实现步骤一:去阿里云中国地图下载“中国地图JSON”数据:

如何使用 ECharts 将中国地图省份合并为大区

步骤二、在边界生成器中上传刚刚下载的中国地图

如何使用 ECharts 将中国地图省份合并为大区
导入后效果:
如何使用 ECharts 将中国地图省份合并为大区

步骤三、进行项目要求合并

如何使用 ECharts 将中国地图省份合并为大区
选择所属省份地级市合并,以东部战区为例,选中浙江,江苏,安徽,上海三块区域
如何使用 ECharts 将中国地图省份合并为大区
选中完成后,双击两下合并图标,对省份进行合并
如何使用 ECharts 将中国地图省份合并为大区
合并后的结果:发现省份边界都已经合并完成
如何使用 ECharts 将中国地图省份合并为大区
依次往下合并,将项目大区省份合并完成,并导出最终效果:
如何使用 ECharts 将中国地图省份合并为大区

步骤四、echarts地图使用

如果你还没有安装ECharts,可以通过npm进行安装:

npm install echarts --save

接下来,我们将使用一个自定义的GeoJSON文件,该文件已经被处理以包含六个战区的信息,而不是传统的省份划分。确保你已经拥有了这个文件,并将其命名为china.js,放在项目的适 当目录下。

步骤五:初始化ECharts

mounted() {
    // 模拟数据
    this.regionList = [
      { name: "中部战区", value: 0 },
      { name: "西北战区", value: 999 },
      { name: "北部战区", value: 7777 },
      { name: "南部战区", value: 100000 },
      { name: "西南战区", value: 20000 },
      { name: "东部战区", value: 100000001 },
    ];
    // 初始化
    this.drawLine(this.regionList);
  }

drawLine方法:

drawLine(regionList) {
      this.myChart = this.$echarts.init(
        document.querySelector(`#echart_china`)
      );
      this.myChart.setOption({
        legend: {
          show: false, // 将 show 设为 false 即可隐藏图例
        },
        title: {
          text: "",
          subtext: "",
          x: "center",
          textStyle: {
            color: "#fff",
          },
        },
        tooltip: {
          show: false, // 禁用提示框
          trigger: "item",
        },
        visualMap: {
          bottom: "10%",
          type: "piecewise",
          splitNumber: 5,
          max: 50000,
          text: [],
          showLabel: false,
          pieces: [
            {
              min: 1000000,
              max: 9999999999,
              color: "#11242f",
            },
            {
              min: 100000,
              max: 99999999,
              color: "#11242f",
            },
            { min: 10000, max: 99999, color: "#11242f" },
            { min: 1000, max: 9999, color: "#11242f" },
            { min: 1, max: 999, color: "#11242f" },
            { min: 0, max: 0, color: "#11242f" },
          ],
          textStyle: {
            color: "rgb(135,139,153)",
            fontSize: this.FontChart(1.5),
          },
          seriesIndex: 0,
        },
        selectedMode: false, // 开启选中模式
        select: {
          // 地图选中区域样式
          label: {
            // 选中区域的label(文字)样式
            show: true,
            color: "#fff",
          },
          itemStyle: {
            // 选中区域的默认样式
            areaColor: "#11242F",
            borderColor: "#FFFF00", // 鼠标悬停时的边界颜色
            borderWidth: 3, // 鼠标悬浮时的边界宽度
          },
        },
        series: [
          {
            name: "调用量",
            type: "map",
            map: "china", // 使用自定义的战区地图
            roam: false,
            label: {
              normal: {
                show: true,
                textStyle: {
                  color: "#fff",
                },
              },
              emphasis: {
                show: true,
                textStyle: {
                  color: "#fff",
                },
              },
              select: {
                show: true,
                textStyle: {
                  color: "#fff",
                },
              },
            },
            data: regionList.map((item) => ({
              name: item.name,
              value: item.value,
            })),
            itemStyle: {
              normal: {
                areaColor: "#48D5F4",
                borderColor: "#48D5F4", // 战区边界颜色
                borderWidth: 2, // 战区边界宽度
              },
              emphasis: {
                // 11242F
                // rgb(1, 162, 235)
                areaColor: "#11242F", // 鼠标悬停时的区域颜色
                borderColor: "#FFFF00", // 鼠标悬停时的边界颜色
                borderWidth: 3, // 鼠标悬浮时的边界宽度
              },
            },
          },
        ],
        geo: {
          map: "china", // 使用自定义的战区地图
          itemStyle: {
            areaColor: "#FFF", // 设置地图背景颜色
            borderColor: "#48D5F4", // 设置地图外部边界颜色
            borderWidth: 4, // 设置地图外部边界宽度
            shadowBlur: 10, // 阴影模糊度,数值越大,阴影范围越大
            shadowColor: "#48D5F4", // 阴影颜色,设置为与边框颜色相同以达到发光效果
            shadowOffsetX: 0, // 水平方向阴影偏移量
            shadowOffsetY: 0, // 垂直方向阴影偏移量
          },
        },
      });
    },

步骤六、配置echarts可支持的china.js文件

(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    define(['exports', 'echarts'], factory);
  } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
    factory(exports, require('echarts'));
  } else {
    factory({}, require('echarts'));
  }
}(this, function (exports, echarts) {
  var log = function (msg) {
    if (typeof console !== 'undefined') {
      console && console.error && console.error(msg);
    }
  }
  if (!echarts) {
    log('ECharts is not Loaded');
    return;
  }
  if (!echarts.registerMap) {
    log('ECharts Map is not loaded');
    return;
  }
  echarts.registerMap('china', 复制刚刚导入的GeoJson文件的代码);
}));

其中复制从阿里地图上导出的GeoJson文件,复制里面的数据放入china.js的下图红色框框中。
如何使用 ECharts 将中国地图省份合并为大区
所有china.js文件如下:
如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践
echarts中使用自定义的战区地图
如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践
echarts的地图中的其他属性
如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践
最终效果分为两个版本:
下图是实验版本,根据不同大区上色:
如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践

如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践

下图是鼠标移入大区显示对应瑕疵种类:
如何使用 ECharts 将中国地图省份合并为大区保姆级教程,GeoJSON数据合并,真实项目实践
以上就是省份,市区合并为一个地区的所有教程,如果对您有帮助,一键三联哟~

### 使用 Supervisor 和 Gunicorn 部署 Python Web 应用 #### 安装必要的软件包 为了确保环境准备就绪,需先安装 `gunicorn` 及其管理工具 `supervisor`。对于基于 Debian 的 Linux 发行版,可以利用 `apt-get` 来完成此操作: ```bash sudo apt-get update && sudo apt-get install gunicorn supervisor -y ``` 这一步骤会自动处理依赖关系并安装最新版本的应用程序及其服务监控器[^4]。 #### 创建应用程序目录结构 建议为项目建立专门的工作空间,以便更好地管理和维护各个组件之间的关联性。假设工作区位于 `/var/www/myproject/` 下,则应包含如下子文件夹: - **static/** 存储静态资源(CSS, JavaScript 文件) - **media/** 用户上传的内容保存在此处 - **logs/** 日志记录位置 - **venv/** 虚拟环境中存放Python解释器及相关库 此外还需放置源码以及配置文件于根目录下。 #### 编写 WSGI 入口脚本 创建名为 `wsgi.py` 或者其他名称的入口模块来定义 Flask/Django 等框架实例作为可调用对象传递给 Gunicorn: ```python from myapp import create_app # 假设myapp是你的应用名 application = create_app() ``` 该文件应当置于项目的顶层目录内方便后续引用。 #### 设置 Gunicorn 启动参数 通过编写 `.ini` 格式的配置文档指定运行选项,比如监听端口号、进程数量等重要设置项。这里给出一个简单的例子——`gunicorn.conf.ini` : ```ini [program:gunicorn] command=/path/to/gunicorn --workers 3 --bind unix:/tmp/app.sock config.wsgi:application directory=/var/www/myproject/ user=nobody group=nogroup autostart=true autorestart=true stderr_logfile=/var/log/gunicorn/error.log stdout_logfile=/var/log/gunicorn/access.log environment DJANGO_SETTINGS_MODULE="config.settings.production" ``` 注意上述命令中的路径需要根据实际情况调整;同时考虑到安全性因素推荐使用 Unix socket 方式连接 Nginx 服务器而不是公开 IP 地址绑定[^2]。 #### 将任务加入到 Supervisord 中 编辑全局配置文件 `/etc/supervisord.conf` ,添加指向自定义 INI 文件的新条目从而让 supervisord 认识到新注册的服务单元: ```ini [include] files = /etc/supervisor/conf.d/*.conf ``` 接着把之前编写的 Gunicorn 配置复制粘贴至 `/etc/supervisor/conf.d/gunicorn.conf` 并重启守护进程使之生效: ```bash sudo systemctl restart supervisor ``` 此时应该可以通过查看状态得知 Gunicorn 是否成功启动并且处于稳定运行之中了。 #### NGINX反向代理配置 最后一步就是修改Nginx站点可用配置以实现HTTP请求转发功能。打开对应虚拟主机模板后追加类似下面所示片段: ```nginx server { listen 80; server_name example.com www.example.com; location / { proxy_pass http://unix:/tmp/app.sock; # 对应Gunicorn使用的socket地址 include proxy_params; } location /static/ { alias /var/www/myproject/static/; } } ``` 记得执行 `sudo nginx -t` 测试语法无误后再加载更新过的设定表单。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值