GoogleMAP编码折线算法的Java实现Java认证考试

文章作者 100test 发表时间 2010:01:01 15:51:34
来源 100Test.Com百考试题网


  首先,在Google API上所描述的算法如下:

  下面说明了对此类有符号值进行编码的步骤。

  取初始有符号值:

  -179.9832104

  将其取十进制值乘以 1e5,并取整:

  -17998321

  将十进制值转换为二进制值。请注意负值必须求反,并以值填充字节边界:

  00000001 00010010 10100001 11110001

  11111110 11101101 10100001 00001110

  11111110 11101101 01011110 00001111

  变换二进制值:

  11111110 11101101 01011110 00001111 0

  如果原来的十进制值是负数,则对以下编码求反:

  00000001 00010010 10100001 11110000 1

  将该二进制值分为 5 位一组的块(从右侧开始):

  00001 00010 01010 10000 11111 00001

  将这些 5 位一组的块倒序放置:

  00001 11111 10000 01010 00010 00001

  如果后面还有一个位块,则将每个值与 0x20 进行“或”操作 (OR)::

  100001 111111 110000 101010 100010 000001

  将每个值转换为十进制:

  33 63 48 42 34 1

  将每个值加上 63:

  96 126 111 105 97 64

  将每个值转换为其对应的 ASCII 字符:

  `~oia@

  下表显示了编码点的一些示例,将编码显示为距离原来点的一系列偏移值。

  示例

  点:(38.5, -120.2)、(40.7, -120.95)、(43.252, -126.453)

  纬度 经度 E5 表示的纬度 E5 表示的经度 纬度变化 经度变化 编码后的纬度 编码后的经度 编码点

  38.5 -120.2 3850000 -12020000 3850000 -12020000 _p~iF ~ps|U _p~iF~ps|U

  40.7 -120.95 4070000 -12095000 220000 -75000 _ulL nnqC _ulLnnqC

  43.252 -126.453 4325200 -12645300 255200 -550300 _mqN vxq`@ _mqNvxq`@

  编码折线:_p~iF~ps|U_ulLnnqC_mqNvxq`@


相关文章


Java认证辅导:Java对象持久化技术概述Java认证考试
java认证辅导:汉诺塔递归算法Java认证考试
java中关于异常处理Java认证考试
JavaJDK中的标准类Java认证考试
GoogleMAP编码折线算法的Java实现Java认证考试
使用实时Java降低Java应用程序的易变性(3)Java认证考试
使用实时Java降低Java应用程序的易变性(2)Java认证考试
使用实时Java降低Java应用程序的易变性(1)Java认证考试
java读取.properties文件Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛