文章标题
2016-03-27 11:34
363 查看
最近几年,各类移动终端迅速普及,基于地理位置的服务(LBS)和相关应用也逐渐增加,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。我所在的公司也正从事相关系统的开发,同事淼哥主要负责这一块的整体方案。大概了解了各传统处理方式的优劣后,他放弃了GeoHash,自己单独做了一套解决方案。
【方案简单介绍】
该方法把地球表面划分为(4^24)*20个形状和面积近似的三角形, 每个三角形用唯一的整数编码.
以下说明如何得到这些三角形:
假设地球是一个正球体, 其中有一个内接正二十面体, 它的12个顶点与球体表面相交, 它的每个表面
都是一个正三角形.
以一个正三角形为例, 找到三条边的中点, 从球心到这三个中点的向量交于球体表面的三个点.
连接这三个交点和正三角形的顶点, 得到四个较小的三角形, 并编码为
00, 01, 10, 11.
对这四个小三角形做同样的操作,得到十六个更小的三角形, 并编码为
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111.
对正二十面体的每个正三角形都做24次这样的操作,最终得到(4^24)*20个形状和面积近似的三角形.
在细分过程中,较小三角形的编码前缀正是前次细分较大三角形的编码, 这一特性可以用于按不同精度
检索地理数据.
【方案简单介绍】
该方法把地球表面划分为(4^24)*20个形状和面积近似的三角形, 每个三角形用唯一的整数编码.
以下说明如何得到这些三角形:
假设地球是一个正球体, 其中有一个内接正二十面体, 它的12个顶点与球体表面相交, 它的每个表面
都是一个正三角形.
以一个正三角形为例, 找到三条边的中点, 从球心到这三个中点的向量交于球体表面的三个点.
连接这三个交点和正三角形的顶点, 得到四个较小的三角形, 并编码为
00, 01, 10, 11.
对这四个小三角形做同样的操作,得到十六个更小的三角形, 并编码为
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111.
对正二十面体的每个正三角形都做24次这样的操作,最终得到(4^24)*20个形状和面积近似的三角形.
在细分过程中,较小三角形的编码前缀正是前次细分较大三角形的编码, 这一特性可以用于按不同精度
检索地理数据.
<script src="https://code.csdn.net/snippets/1625256.js"></script>
相关文章推荐
- android api-level
- 数据在内存中的存储
- 项目技术团队
- 3.2-MongoDB连接和用户管理
- iOS系统键盘和自定义键盘的切换
- 3.1-MongoDB安装
- .NET AOP (六)在编译阶段PostSharp
- ado.net EF学习系列----深入理解查询延迟加载技术
- Windows下安装python问题汇总
- 5-21 Hashing (25分)
- MVC、MVP、MVVM
- 3.0-MongoDB介绍
- hdoj-1018-Big Number
- c++中使用fstream读写文件
- extract things from text files
- 迭代器模式和java集合Collection(二)HashMap和Set
- 安卓开发基础--打招呼(事件的简单处理)
- 5-19 PAT Judge (25分)
- 5-20 电话聊天狂人 (25分)
- 关于安装操作系统以后“血的教训”