一,空间搜索相关:

  基于地图的空间搜索使用经度(longitude)和纬度(latitude)作为基本的搜索条件进行地理信息的相关检索和查询。其实现方式一般包括以下一种实现方式:

  1. 在数据库表中将经度(longitude)和纬度(latitude)分别以两个不同的列进行存储,通过对经度(longitude)和纬度(latitude)两列建二元索引,提供对经度(longitude)和纬度(latitude)的检索。这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索。但是,在地图搜索相关的应用中,地理信息相关的记录的数据量会很多,二元索引的速度应该不会很理想,再者,基于地理信息的搜索行为相关的搜索基准点相对比较稀疏,数据库的缓存效果也不会太理想。
  2. Geohash:通过这种编码方式,可以将经度(longitude)和纬度(latitude)值转换为一个基于base32编码的串,一方面可以实现对地理信息的一元索引;另外,地理上相近的点通过这种编码方式编码之后所得的串的前缀相同(当然会有特例,也就是一些边界条件,本文后面讲描述;前缀长度根据表示精度的不同而不同)。这样,要实现"搜索给定点附近的其他点"时,只需要将该参照点按照Geohash进行编码,按照精度要求从所得编码串中选取一定长度的字串作为前缀进行搜索,这样就可以很方便的实现该功能;
  3. R-tree:还未具体学习,后续补充

其他支持:

  1. Mysql spatial 扩展
  2. Lucene spatial search
posted on 2013-02-05 17:08  muson  阅读(307)  评论(0编辑  收藏  举报