V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
usernamely
V2EX  ›  问与答

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

  •  
  •   usernamely · 2018-11-02 10:10:02 +08:00 · 2109 次点击
    这是一个创建于 1973 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于很多时候需要在封闭的环境下使用地图底图, 写了一个爬取在线地图瓦片作为静态地图服务器的简单程序, 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 条回复    2018-11-02 14:29:10 +08:00
    sakitamFDD
        1
    sakitamFDD  
       2018-11-02 10:20:54 +08:00 via Android
    搞 gis 的不多啊,先赞一个,爬取这个我也写过 https://github.com/sakitam-gis/tile-spider
    usernamely
        2
    usernamely  
    OP
       2018-11-02 13:53:19 +08:00
    @sakitamFDD 是啊是啊, 互粉一个。
    findex
        3
    findex  
       2018-11-02 14:08:39 +08:00   ❤️ 1
    老铁我做过一点点的 gis。偏后台。
    用的是 openstreet 的贴图。简单说下贴图有多大吧。中国沿海一个省的地图 zoom level 19 的话,贴图大约 100 多 G。然后还要加上 layers 的数据的话,也得个 1G 左右吧。贴图很大。一般电脑受不了。自己本地使用是够用了。但是维护起来成本相当高。维护一个地点的更新的话,就要有专员来做。此时,用第三方地图供应商比较省事。
    catcn
        4
    catcn  
       2018-11-02 14:11:18 +08:00
    内网应用通常要离线的地图瓦片。。。
    我一般都是抓下来存为一个 sqlite 数据库。
    usernamely
        5
    usernamely  
    OP
       2018-11-02 14:27:17 +08:00
    @findex Arcgis 的全世界地图加上各种层级数据确实很大,Arcmap 切个几层放上去本地都卡的看不了,每次切片真的是一切一个星期都切不下来,最最主要的是刚开始的时候设置不对切的接口显示不出切片,所以就写了这个,只在缩放的时候去下载瓦片,看多少下多少,下次再看就直接看下载好的图片。
    usernamely
        6
    usernamely  
    OP
       2018-11-02 14:29:10 +08:00
    @findex 没啥大用,只是在内网做演示的时候可以看看,真实环境下还是要全部切完才行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1212 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:09 · PVG 02:09 · LAX 11:09 · JFK 14:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.