如何实现基于地理的数据存储和计算?
Posted
技术标签:
【中文标题】如何实现基于地理的数据存储和计算?【英文标题】:How to implement geo-based data store and computation? 【发布时间】:2011-02-25 20:05:29 【问题描述】:好吧,让我简单解释一下:
1.我想建立一个提供基于位置服务的网站,例如http://fireeagle.yahoo.net/。
2.我猜这些服务大多与经度和纬度有关。
3.是否有任何特定的数据库/数据存储/数据结构非常适合此类应用程序?我的意思是易于存储经度、纬度和易于计算或易于使用。
我是新手,欢迎任何反馈
【问题讨论】:
【参考方案1】:关系数据库系统的空间扩展提供地理/几何数据类型的存储和索引访问。它们允许您执行空间连接和各种空间查询。简而言之,它们正是您所需要的。
如果您使用的是开源堆栈,我会推荐 PostGIS,它是 Postgresql 的空间扩展。如果您使用的是 MS 堆栈,请尝试 spatial extensions to SQL Server 2008。
【讨论】:
关于开源栈这个话题,mysql也有地理空间支持-dev.mysql.com/doc/refman/5.0/en/gis-introduction.html【参考方案2】:MySQL 有一个spatial extension 和教程here。获得快速查询的基本思想是设计具有空间索引列的表,R-tree 索引对于范围查询(例如“在此点附近给我点”)非常快。
当然,也有带有 PostGIS 的 Postgres,您可以从像 SimpleGeo 这样的公司购买这项服务。
【讨论】:
【参考方案3】:我建议你考虑GeoDjango 它非常好,因为它融合了 Python/Django 的简单性和 PostGIS 的强大功能。但它也可能很复杂并提供太多功能,因此会浪费您的时间。
如果您没有特殊需求,还有另一种更简单的解决方案可以单独与 Django 或 Python 一起使用,即Geopy。虽然不向数据库添加空间扩展,但它允许您使用通用数据结构(也包括任何数据库)执行地理空间计算。您可以计算距离,进行(反向)地理编码。查看Getting Started 页面,也可以直接查看code,因为它有据可查。我将它用于动态拼车项目,效果很好。
这两种解决方案都非常适合 Django 框架,因此您可以轻松地围绕所提供的服务开发网站。
【讨论】:
以上是关于如何实现基于地理的数据存储和计算?的主要内容,如果未能解决你的问题,请参考以下文章