PostGIS笔记(下)

上篇说了为什么用Geography,这篇具体讲怎么取“范围n米以内的数据”。

Rails里运行Migration,建Portal Model,以下是Schema

距离东京站1km内所有的portals

  • ST_Distance

    float ST_Distance(geography gg1, geography gg2, boolean use_spheroid);

  • ST_DWithin

    boolean ST_DWithin(geography gg1, geography gg2, double precision distance_meters, boolean use_spheroid);

结果:

Continue reading “PostGIS笔记(下)”

postGIS笔记(上)

好久没写博客,来扯淡一下。

2月~4月参与了一个游戏app的backend开发,基本上就是写API给app调用。
除了组里规定的严打不动的得用rails以外,这次项目自由度很大。

先简单介绍一下游戏功能:
把全日本10w左右的公园当portal,用户打开app可以看到附近当portal,到了portal范围内就可以玩游戏抓snoopy。
这次server要做的事情就是不停接受app的polling request,看用户附近是否有公园portal。

组里做过LBS的人不多,leader很早之前做过一次,推荐我用Geohash,并警告我说可能数据库压力会很大。
于是开发前准备阶段便搜了些相关资料。
结果发现Geohash相关gem都几乎没有在更新维护,便开始怀疑Geohash是否可行。
偶尔在infoQ和RubyChina发现了一些中文文章,谈到LBS的解决方案,其中包括:

Continue reading “postGIS笔记(上)”