前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >qgis切片下载与本地部署以及调用

qgis切片下载与本地部署以及调用

作者头像
牛老师讲GIS
发布2021-09-10 11:00:31
1.6K0
发布2021-09-10 11:00:31
举报
文章被收录于专栏:跟牛老师一起学WEBGIS

概述

关于切片下载以及切片的本地部署的问题,本来我觉得挺简单的,但是一直会有有好多童鞋问我,所以借此文章,将这件事情在此说明清楚一下。

工具

1. qgis

借助qgis的插件QMetaTiles插件实现第三方地图的切片下载。

2. nginx

通过nginx,将下载的切片提供xyz的服务出来。

3.mapboxGL

通过mapboxGL调用发布的切片服务。

实现效果

操作

1.qgis中添加xyz服务

浏览器——>XYZ Tiles——>右键——>新建连接,输入连接名称,在URL框中输入服务地址http://webrd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8

2. 下载切片

3. 部署切片

修改nginx配置文件conf/nginx.conf,修改配置文件如下:

代码语言:javascript
复制
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    server {
        listen       8089;
        server_name  localhost;
        
        #允许跨域请求的域,*代表所有
        add_header 'Access-Control-Allow-Origin' *;
        #允许带上cookie请求
        add_header 'Access-Control-Allow-Credentials' 'true';
        #允许请求的方法,比如 GET/POST/PUT/DELETE
        add_header 'Access-Control-Allow-Methods' *;
        #允许请求的header
        add_header 'Access-Control-Allow-Headers' *;
        
        #切片服务
        location ~ .*\.(gif|jpg|jpeg|png)$ {  
          expires 24h;  
          root D:/test2/nav/vec/nav_vec/;#指定图片存放路径  
          access_log D:/test2/nav/vec/nav_vec/log;#图片路径  
          proxy_store on;  
          proxy_store_access user:rw group:rw all:rw;  
          proxy_temp_path         D:/test2/nav/vec/nav_vec/;#图片路径  
          proxy_redirect          off;  
          
          proxy_set_header        Host 127.0.0.1;  
          proxy_set_header        X-Real-IP $remote_addr;  
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
          client_max_body_size    10m;  
          client_body_buffer_size 1280k;  
          proxy_connect_timeout   900;  
          proxy_send_timeout      900;  
          proxy_read_timeout      900;  
          proxy_buffer_size       40k;  
          proxy_buffers           40 320k;  
          proxy_busy_buffers_size 640k;  
          proxy_temp_file_write_size 640k;    
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

说明:

  1. 配置中端口默认为8080,为防止端口冲突,将端口改为为8089;
  2. D:/test2/nav/vec/nav_vec/为切片下载的存放地址;
  3. 调用中为了防止出现跨域,在配置中加入允许跨域配置;

4.mapboxGL中调用实现

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link href='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' rel='stylesheet' />
  <style>
    html,
    body,
    #map {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
    }
  </style>
</head>
<body>
<div id="map"></div>
<script src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js'></script>
<script>
    var style = {
        "version": 8,
        "name": "lzugis",
        "sources": {
            "XYZTile": {
                "type": "raster",
                "tiles": ['http://localhost:8089/{z}/{x}/{y}.png'],
                "tileSize": 256
            }
        },
        "layers": [{
            "id": "XYZTile",
            "type": "raster",
            "source": "XYZTile",
            "minzoom": 0,
            "maxzoom": 8
        }]
    }

    window.map = new mapboxgl.Map({
        container: 'map',
        style: style,
        center: [103.081163, 37.1612],
        zoom: 3.45,
        minZoom: 2,
        maxZoom: 8
    });
</script>
</body>
</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 工具
    • 1. qgis
      • 2. nginx
        • 3.mapboxGL
        • 实现效果
        • 操作
          • 1.qgis中添加xyz服务
            • 2. 下载切片
              • 3. 部署切片
                • 4.mapboxGL中调用实现
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档