好吧,让我简单解释一下:如何实现基于地理位置的数据存储和计算?
1.我想建立一个网站,提供基于位置的服务,如http://fireeagle.yahoo.net/。
2.我想这些服务大部分都与经度和纬度有关。
3.是否有任何特定的数据库/数据存储/数据结构适合这些应用程序?我的意思是容易存储经度,纬度,易于计算或易于使用。
我是新来这和任何反馈,欢迎
好吧,让我简单解释一下:如何实现基于地理位置的数据存储和计算?
1.我想建立一个网站,提供基于位置的服务,如http://fireeagle.yahoo.net/。
2.我想这些服务大部分都与经度和纬度有关。
3.是否有任何特定的数据库/数据存储/数据结构适合这些应用程序?我的意思是容易存储经度,纬度,易于计算或易于使用。
我是新来这和任何反馈,欢迎
空间扩展到关系数据库系统提供存储和索引访问地理/几何数据类型。它们允许您执行空间连接和各种空间查询。总之,他们正是你所需要的。
如果您使用的是开源堆栈,我会推荐PostGIS,这是Postgresql的空间扩展。如果您使用MS堆栈,请尝试spatial extensions to SQL Server 2008。
我建议你考虑GeoDjango
这是非常好的,因为它融合了Python/Django的简单性和PostGIS的强大功能。但它也可能很复杂,并提供太多功能,因此浪费您的时间。
如果你没有特别的需求,还有另外一种更简单的解决方案可以与Django或Python一起使用,即Geopy。虽然不向数据库添加空间扩展,但它允许您使用通用数据结构(也包括任何数据库)执行地理空间计算。你可以计算距离,做(反向)地理编码。看看Getting Started页面,但也直接在code,因为它是有据可查的。我将它用于Dynamic Carpooling项目,效果非常好。
这两个解决方案都非常适合Django框架,所以您可以围绕所提供的服务轻松开发一个网站。
MySQL有一个spatial extension和教程here。获得快速查询的基本思路是设计一个带有空间索引的列的表格,该索引对于范围查询很快,例如“给我靠近这一点”。
当然,还有Postgres和PostGIS,你可以从SimpleGeo这样的公司支付这项服务。
关于开源堆栈的问题,MySQL也有geospacial支持 - http://dev.mysql.com/doc/refman/5.0/en/gis-introduction.html – 2010-06-04 04:08:54