V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
akfish
V2EX  ›  分享创造

这几天做的一个爬天朝区气象雷达数据的爬虫,每 10 分钟 500+帧,跑 GAE 存 GitHub

  •  9
     
  •   akfish ·
    akfish · 2014-08-10 22:43:06 +08:00 · 7262 次点击
    这是一个创建于 3785 天前的主题,其中的信息可能已经有所发展或是发生改变。
    作为一个数据控,爱好各类实时数据,最近在用 HTML5 把天朝区土鳖的气象雷达图去土鳖化,比如:

    经过 HTML5 拖下来一堆算法撸过以后变成:


    由于 Canvas CORS 的的限制,必须把图片爬下来放到同域名上,经过一番折腾撸出这样一个脑洞略大的方案:
    找了一圈国外免费的云服务,能访问 nmc.gov.cn 的也就只有 GAE 。
    天朝目前有 167 个气象雷达站,平均 10 分钟更新一帧(部分是 5 分钟),每帧 35k ,一天会产生 800M+的数据,GAE 是放不下的,于是用 GitHub API 放 GitHub Pages 上。
    同时需要产生 json 文件供前端调用,撸了一圈发现 GAE 的 datastore quota 最多爬 3 次就会被撑爆,于是又用 GitHub API 把 commit 后的 git tree 拖回 GAE 当数据库用。

    每个站要在百度地图上放叠加层,需要知道中心的经纬度,以及每帧数据的范围。之前爬到一个内部的 xml ,有所有站点的坐标,于是很愉快的解决了。数据范围没有现成的数据,于是顺便写了个简单的 OCR 算法从图片上识别出来。最后这些数据和爬虫爬到的整合,生成一个 json 文件供前端调用。

    目前是 GAE 上跑两个 application 分时爬(一个 application 的 bandwidth quota 只够爬半天),GitHub 的 Repo 一天一清,避免超过 1GB 大小的限制被和谐。

    数据有保障了,又可以愉快的把前端撸完早日上线。

    爬虫源码:
    https://github.com/catx-weather/radar-bot
    爬虫数据:
    https://github.com/catx-weather/data
    OCR 脚本:
    https://github.com/catx-weather/frame-range-ocr
    第 1 条附言  ·  2014-08-10 23:17:48 +08:00
    无级缩放,保留空间分辨率信息,依然是原始数据无插值:
    27 条回复    2014-10-18 17:13:51 +08:00
    neoz
        1
    neoz  
       2014-08-10 22:47:04 +08:00
    虽然没多大 用,但是看起来X格很高!赞!
    mywaiting
        2
    mywaiting  
       2014-08-10 22:51:52 +08:00
    LZ这么牛逼,你妈知道的吗!赞+1
    vigoss
        3
    vigoss  
       2014-08-10 22:53:14 +08:00
    帅哭。
    arnofeng
        4
    arnofeng  
       2014-08-10 22:53:32 +08:00 via Android
    太流弊
    procen424
        5
    procen424  
       2014-08-10 22:57:45 +08:00
    官方雷达图虽然看上去土鳖,但是像素点的颜色和位置是精确的,结合刻度能读出非常有效的信息。
    30dbZ基本就要下雨了 40dbZ就是短时雷雨大风天气
    这么一处理反倒没法看了。。。
    akfish
        6
    akfish  
    OP
       2014-08-10 23:14:49 +08:00   ❤️ 1
    @procen424 处理后的位置也是精确对齐的,花了不少精力保证爬到能用来保证对齐精度的数据。
    像素的颜色只是换了套伪彩方案而已,数据依然是用的原始数据,并且能保留空间分辨率无级放大。
    后面会加上交互,鼠标到任意点就能获得该点dBz大小,比官方的易读得多了。
    akfish
        7
    akfish  
    OP
       2014-08-10 23:18:13 +08:00
    @procen424 见append。
    chenillen
        8
    chenillen  
       2014-08-10 23:36:32 +08:00
    github 服務掛了肯定是因為這個 project 的!lz 贊!!!
    glogo
        9
    glogo  
       2014-08-10 23:54:36 +08:00
    赖斯啊!
    WangYan
        10
    WangYan  
       2014-08-10 23:59:54 +08:00
    点个赞,若提示dBz大小,就真的比官方的易读多了
    scylla
        11
    scylla  
       2014-08-11 00:03:49 +08:00 via iPad
    lZ, Tai Niue be le, zan!
    vbs
        12
    vbs  
       2014-08-11 00:27:52 +08:00
    nb。。。。
    lz你那还有其他数据?
    lcj2class
        13
    lcj2class  
       2014-08-11 07:41:20 +08:00 via Android
    等会必须fork
    wzb350
        14
    wzb350  
       2014-08-11 09:39:07 +08:00
    不明觉厉
    superbear
        15
    superbear  
       2014-08-11 09:50:29 +08:00
    真厉害,居然把gitgub当数据库用!
    valianliu
        16
    valianliu  
       2014-08-11 10:37:45 +08:00
    坐等前段上线,太流弊了。
    KillAd
        17
    KillAd  
       2014-08-11 10:42:07 +08:00
    能做成站点上线上来才是大家最期待的吧
    hao1032
        18
    hao1032  
       2014-08-11 10:51:26 +08:00
    GAE的数据库是不给力,以前爬了几天的数据想删除。到现在已经删了2天了,删一会就提示配额不足,然后只能等到第二天继续删。 哭。。。。。。。。。。。
    procen424
        19
    procen424  
       2014-08-11 12:48:54 +08:00
    @akfish 棒!期待早日上线
    0065paula
        20
    0065paula  
       2014-08-11 14:55:23 +08:00
    不知道楼主有没有玩过 caiyunapp.com ?也是获取是实时雷达数据,用来看什么时候雨停还不错。
    openroc
        21
    openroc  
       2014-08-11 14:56:25 +08:00
    @hao1032, 多弄几个GAE,轮流爬。:)
    akfish
        22
    akfish  
    OP
       2014-08-11 15:35:22 +08:00
    @0065paula 不错的app,我目前侧重交互和数据可视化,多增加几种数据源后才会开始做预报算法。
    akfish
        23
    akfish  
    OP
       2014-08-11 15:36:15 +08:00
    @vbs 目前只是雷达,这个做完善后再爬别的。
    no13bus
        24
    no13bus  
       2014-08-11 16:57:32 +08:00
    @akfish 数据可视化,楼主玩 http://processingjs.org/
    吗?
    akfish
        25
    akfish  
    OP
       2014-08-11 17:21:21 +08:00
    @no13bus 小玩过,还没在项目里用过。
    hao1032
        26
    hao1032  
       2014-08-12 10:21:47 +08:00
    @openroc 我是删除数据
    crossmaya
        27
    crossmaya  
       2014-10-18 17:13:51 +08:00
    不错,mark!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:49 · PVG 04:49 · LAX 12:49 · JFK 15:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.