usernamely
V2EX  ›  问与答

node 爬取瓦片制作自己的地图服务

  •  
  •   usernamely · Nov 2, 2018 · 3331 views
    This topic created in 2891 days ago, the information mentioned may be changed or developed.

    由于很多时候需要在封闭的环境下使用地图底图, 写了一个爬取在线地图瓦片作为静态地图服务器的简单程序, js 代码 180 行, html 不到 10 行, 废话不多说直接 github 源码 。

    使用方法

    
      npm install
      node app.js || npm run dev
    
    
    • 在本地浏览器中打开 client/index.html

    • 在浏览器中滚动鼠标

    爬虫

    app.js

    • 服务器接收瓦片请求并判断是否存在该瓦片。

    • 存在瓦片则返回瓦片, 不存在则加入缓存等待下载。

    downloadMap.js

    • 缓存链接到数组内。

    • 服务端会每隔 1 秒检查数组内是否有链接 有则去下载。

    地图相关

    • Arcgis 官方使用插件 dojo.js 来接入地图底图。

    • dojo.js 除了展示底图几乎一无是处, dojo.js 和 require.js 有冲突。

    • Arcgis 工具分为制作底图的客户端 ArcMap, 服务器 Arcgis Server。

    • leaflet 有相当多的接口和插件来制作地图工具。

    • ArcMap 在发布服务时一定要设置好参数, 不然 leaflet 不能接入底图。

    6 replies  •  2018-11-02 14:29:10 +08:00
    sakitamFDD
        1
    sakitamFDD  
       Nov 2, 2018 via Android
    搞 gis 的不多啊,先赞一个,爬取这个我也写过 https://github.com/sakitam-gis/tile-spider
    usernamely
        2
    usernamely  
    OP
       Nov 2, 2018
    @sakitamFDD 是啊是啊, 互粉一个。
    findex
        3
    findex  
       Nov 2, 2018   ❤️ 1
    老铁我做过一点点的 gis。偏后台。
    用的是 openstreet 的贴图。简单说下贴图有多大吧。中国沿海一个省的地图 zoom level 19 的话,贴图大约 100 多 G。然后还要加上 layers 的数据的话,也得个 1G 左右吧。贴图很大。一般电脑受不了。自己本地使用是够用了。但是维护起来成本相当高。维护一个地点的更新的话,就要有专员来做。此时,用第三方地图供应商比较省事。
    catcn
        4
    catcn  
       Nov 2, 2018
    内网应用通常要离线的地图瓦片。。。
    我一般都是抓下来存为一个 sqlite 数据库。
    usernamely
        5
    usernamely  
    OP
       Nov 2, 2018
    @findex Arcgis 的全世界地图加上各种层级数据确实很大,Arcmap 切个几层放上去本地都卡的看不了,每次切片真的是一切一个星期都切不下来,最最主要的是刚开始的时候设置不对切的接口显示不出切片,所以就写了这个,只在缩放的时候去下载瓦片,看多少下多少,下次再看就直接看下载好的图片。
    usernamely
        6
    usernamely  
    OP
       Nov 2, 2018
    @findex 没啥大用,只是在内网做演示的时候可以看看,真实环境下还是要全部切完才行。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2595 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:34 · PVG 21:34 · LAX 06:34 · JFK 09:34
    ♥ Do have faith in what you're doing.