【问题标题】:Building a geospatial querying REST api构建地理空间查询 REST api
【发布时间】:2011-09-02 07:30:03
【问题描述】:

我正在尝试构建一个 iOS 应用程序,该应用程序获取用户的位置,然后通过 REST api 查询他/她附近的其他用户的后端。我做了一些谷歌搜索,我的选择(根据我的经验)似乎是。

  • Django - 带有 geodjango 的活塞。可能在 webfaction 上托管。
  • 谷歌应用引擎。

我更倾向于第一选择,因为 Google App Engine 似乎不是那么开放,而且一开始的学习曲线很陡。

现在在 mysql 数据库上进行位置查询似乎有点吓人。我的直觉是必须有更好的东西。毕竟我不想重新发明轮子!

谁能给我一点启示

  • 我将如何进行位置查询?..bounding reangles 或更好的方法?
  • 我应该使用什么数据库?...非关系型还是关系型?
  • 如果是关系型...应该按位置索引数据库吗?
  • 位置数据应该与其他用户数据存储在单独的表中还是同一个表中?
  • 我应该使用时间戳来使旧的位置更新无效还是有更好的方法来做到这一点?(例如,数据库本身可以定期删除位置更新)。

到目前为止,我主要是一名 iOS 开发人员,在构建 Web 应用程序方面经验很少。任何建议都将不胜感激。

如果之前有人问过类似的问题,请随时指出。

提前致谢。 - samyzee!

【问题讨论】:

    标签: django rest geospatial geodjango django-piston


    【解决方案1】:

    恐怕您问了太多笼统的问题,无法得到有用的答案。我试试看:

    如果您想做非常简单的地理空间内容,请尝试坚持使用边界框。适合该问题的最简单技术非常值得探索。但是,您可能很快就会发现您需要更多...

    如果您想使用 geodjango,请使用 PostGIS 数据库并忘记非关系数据库。您将开发一个后端,对于非 webapp 程序员来说,它的学习曲线很陡峭。从 geodjango 教程开始,逐渐开发出您熟悉的技术堆栈(使用 geodjango REST 服务会很容易)。

    选择非关系型数据库的原因要么是非常特定于用例(您想要存储文档、图表,或者您不想要预定义的架构),要么是出于扩展目的(同时读写大量大量数据,因此使用多个节点等)。如果您是非网络应用程序程序员,请聘请有经验的人(可以做一些“软件架构”)来帮助您走上这条道路。

    • 应将位置数据存储在单独的表中还是同一个表中 作为其他用户数据?
    • 我应该使用时间戳来使旧的位置更新无效还是 有更好的方法吗 那个?(例如数据库可以 本身经常删除位置 更新)。

    请从事任何数据库设计的人来帮助您。根据到目前为止的问题描述,您可以使用两个表:User(id, name) 表和 UserLocation(id, timestamp, user_id, xCoordinate, yCoordinate) 表。比为您为用户获得的每个样本添加一个UserLocation 行。您可以稍后设计(和更改)解释 UserLocation 表的规则,例如:

    • 最新的 UserLocation 是有效的
    • 如果时间戳超过 4 小时,则无法使用

    从你的提问来看,感觉你有点不合群。但是,如果你能坚持简单的技术并务实地工作,你就能让你的服务发挥作用。为什么不从 mysql+php 和边界查询开始呢?等一切正常后换成别的东西?

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 2013-09-25
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多