移动端数据库开发空间索引点滴

       默认sqlite3 不够用,默认不支持空间索引,有2种方法可以做R树。一种交叉编译,另外一种使用强大的

spatialite-android.


     1 sqlite3 有2种方法可用,默认是存储文件,另外可以作为内存数据库,就是运行加载数据,关闭程序数据全毁。
     2 后者支持强大的R树功能,还不错,尽管光阴荏苒,但算法还不落后。csdn spatialite-android-so库这个就是的。0分可下载。
   
    折磨2个小时,遇到好多奇特问题。咬牙解决。含糊不清如下:
1  5.0以上android不再有过时的google map overlay等。类库已经找不到,全部注释。
2  有一个3个包的android程序,需要有时间搞清楚结构以及依赖,可以把jar包为何打包失败搞清楚。
3  数据类的封装方法可以小花时间。

https://www.gaia-gis.it/fossil/libspatialite/wiki?name=spatialite-android-tutorial
http://geopaparazzi.github.io/geopaparazzi/


         空间索引进阶。
1 多维空间索引有最新进展,可以支持3维 4维(foreign table);
2 geohash 采用哈夫曼编码,将2维---》1维,实质就是4叉树。这一点清晰,分形(curve)方法Z曲线   (wiki百科This can also be seen as a consequence of relying on the  Z-order curve  (which could more appropriately be called an N-order visit in this case) for ordering the points, as two points chttp://hankesi2000.iteye.com/blog/1344914lose-by might be visited at very different times. However, two points with a long common prefix will be close-by.)

如图所示,我们将二进制编码的结果填写到空间中,当将空间划分为四块时候,编码的顺序分别是左下角00,左上角01,右下脚10,右上角11,也就是类似于Z的曲线,当我们递归的将各个块分解成更小的子块时,编码的顺序是自相似的(分形),每一个子快也形成Z曲线,这种类型的曲线被称为Peano空间填充曲线。(这段和下段来自:zhanlinjun)  这种类型的空间填充曲线的优点是将二维空间转换成一维曲线(事实上是分形维大部分而言,编码相似的距离也相近, 但Peano空间填充曲线最大的缺点就是突变性,有些编码相邻但距离却相差很远,比如0111与1000,编码是相邻的,但距离相差很大。

  

  除Peano空间填充曲线外,还有很多空间填充曲线,如图所示,其中效果公认较好是Hilbert空间填充曲线,相较于Peano曲线而言,Hilbert曲线没有较大的突变。为什么GeoHash不选择Hilbert空间填充曲线呢?可能是Peano曲线思路以及计算上比较简单吧,事实上,Peano曲线就是一种四叉树线性编码方式。

其中val可以认为是下一次的中间值,而err是误差,通过mid+err=val,err当前值是上一次误差的一半。 这样,取出图中的bit位:1011 1100 1001,同样的方法,将经度(范围-180到180)算出来为 0111 1100 0000 0。 缩小范围,一般最多缩小13次就可以了(经纬度的二进制位相加最多25位,经度13位,纬度12位)。这时的中间值,将跟给定的值最相近。 下面是误差计算方法:

互联网GeoHash算法主要针对的是经纬度系统,所以其算法中的编码范围、编码精确度都相对固定。范围为[-90,90],[-180,180]。 

在纬度相等的情况下:

经度每隔0.00001度,距离相差约1米;

每隔0.0001度,距离相差约10米;

每隔0.001度,距离相差约100米;

每隔0.01度,距离相差约1000米;

每隔0.1度,距离相差约10000米。 

在经度相等的情况下:

纬度每隔0.00001度,距离相差约1.1米;

每隔0.0001度,距离相差约11米;

每隔0.001度,距离相差约111米;

每隔0.01度,距离相差约1113米;

每隔0.1度,距离相差约11132米。

Geohash,如果geohash的位数是6位数的时候,大概为附近1千米。

参考:http://www.cnblogs.com/naaoveGIS/archive/2016/01/27/5164187.html

http://hankesi2000.iteye.com/blog/1344914



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值