IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> qgis制作离线切片包并发布调用 -> 正文阅读

[JavaScript知识库]qgis制作离线切片包并发布调用

概述

最新版本的qgis既可以做栅格切片,也可做矢量切片,切片的保存格式可以是文件夹也可以是mbtiles的打包文件。在日常的项目中,如果是文件夹的形式在做部署的时候会很麻烦,所以建议大家用mbtiles的打包文件,同时mbtiles的打包文件也经常用在移动端的离线地图。

效果

1.png

实现

本文用的是最新版的qgis(3.24.1-Tisler),用OSM作为测试,用node写了一个简单的切片服务,实现代码如下:

const sqlite3 = require('sqlite3');
const express = require('express');

const db = new sqlite3.Database('D:\\tile\\china1.mbtiles');
const app = express();

// 自定义跨域中间件
const allowCors = function (req, res, next) {
  res.header('Access-Control-Allow-Origin', req.headers.origin);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Credentials', 'true');
  next();
};
app.use(allowCors);//使用跨域中间件

app.get('/:z/:y/:x', (req, res) => {
  const {z, x, y} = req.params
  const sql = `select tile_data from tiles where zoom_level = ${z} and tile_row = ${x} and tile_column = ${y};`
  db.all(sql, function (err, rows) {
    res.writeHead(200, {'Content-Type': 'image/png'});
    if(rows.length > 0) {
      const buffer = rows[0]['tile_data']
      res.write(buffer);
    } else {
      res.write('');
    }
    res.end();
  })
});

app.listen(18081, () => {
  console.log('running at http://127.0.0.1');
})

前端是用openlayers进行加载,测试代码如下:

<!DOCTYPE html>
<html>
<head>
  <title>XYZ</title>
  <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css">
  <script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script>
  <style>
    html, body, .map {
      height: 100%;
      overflow: hidden;
      margin: 0;
      padding: 0;
    }
  </style>
</head>
<body>
<div id="map" class="map"></div>
<script>
  var map = new ol.Map({
    target: 'map',
    layers: [
      new ol.layer.Tile({
        source: new ol.source.XYZ({
          url: 'http://localhost:18081/{z}/{x}/{-y}'
        })
      })
    ],
    view: new ol.View({
      center: [11483737.909671811, 4254576.437127076],
      zoom: 1
    })
  });
</script>
</body>
</html>

此外,我们还可以用geoserver插件(mbtiles-plugin)完成mbtiles切片的发布。最新版本的geoserver和矢量切片插件、mbtiles插件可通过如下链接获得。

链接:https://pan.baidu.com/s/1itwEmkRPf2jK6OWAwJgxWw 
提取码:wxxf 
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:43:36  更:2022-04-14 23:46:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:59:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码