当前位置: 首页 > news >正文

建设项目环保验收公示网站邢台公共服务平台官网

建设项目环保验收公示网站,邢台公共服务平台官网,台州市建设施工图审图网站,青岛网站建设王道下拉強算法简介geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等算法基本原理geohash算法将地球理解为一个二维平面#xff0c;将平面递归分解成更小的子块#xff0c;每个子块在一定经纬度范围内拥有相同的编码#xff0c;这种方…算法简介geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等算法基本原理geohash算法将地球理解为一个二维平面将平面递归分解成更小的子块每个子块在一定经纬度范围内拥有相同的编码这种方式简单粗暴可以满足对小规模的数据进行经纬度的检索通过对经纬度的分割,将地球分割成无数的小正方形,每个区域,就是个geohash编码Geohash其实就是将整个地图或者某个分割所得的区域进行一次划分由于采用的是base32编码方式即Geohash中的每一个字母或者数字(如wx4g0e中的w)都是由5bits组成(2^5 32base32)这5bits可以有32中不同的组合(0~31)这样我们可以将整个地图区域分为32个区域通过00000 ~ 11111来标识这32个区域。第一次对地图划分后的情况如下图所示(每个区域中的编号对应于该区域所对应的编码)如图:算法实现(php)以经纬度值(118.6197800000,24.88849)进行算法说明对纬度24.88849进行逼近编码 (地球纬度区间是[-90,90])纬度区间[-90,90]进行二分为[-90,0],[0,90],命名为左右区间,坐标属于右区间记为1,左区间为0,24.88849为右区间,记为1对所在区间进行再次划分[0,90]二分为[0,45],[45,90],24.88849属于左区间,左区间记为0以下是php的纬度区间算法函数:/*** param float $num经度或纬度* param string $str递归字符串* param int $i 递归次数* param int $max_separate_num递归总次数* param array $data 区间值* return string*/function separate( $num  24.999,$str,$i1,$max_separate_num20,$data  array(min  -90, max  90)){$count    ($data[max] - $data[min]) / 2;$limit_0  array(min  $data[min],max  $data[min]  $count);$limit_1  array(min  $data[min]  $count,max  $data[max]);//    var_dump($limit_0,$limit_1);$str.$num  $limit_1[min]?1:0;if($i$max_separate_num){return $str;}else{return separate($num,$str,$i1,$max_separate_num,$num  $limit_1[min]?$limit_1:$limit_0);}}由此,纬度24.88849可得字符串为10100011011001011001经度118.6197800000,经度分为东经和西经,区间为[-180,180],由此可得字符串11010100010110100001组合2个字符串,偶数放经度位,奇数放纬度位,php代码实现/*** param $latitude_str 纬度* param $longitude_str 经度*/function combination($latitude_str, $longitude_str){$str  ;for ($i  0; $i 经度$str . $longitude_str{$i};if(isset($latitude_str{$i})){$str .  $latitude_str{$i};}}return $str;}每隔5位取出一串,转为10进制,最后使用[0-9][b-z]去掉a, i, l, o这32个字符进行编码.php代码实现function geohash_encode($str){$arr      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, b, c, d, e, f, g, h, j, k, m, n, p, q, r, s, t, u, v, w, x, y, z];$str_arr  str_split($str, 5);//按5位分割字符串$str      ;//    var_dump($str_arr);die;foreach ($str_arr as $va) {$decimal  bindec($va);$str.$arr[$decimal];}return $str;}这样,就得到了一串wskme6b3字符串了,该字符串就表示了一个区域geohash算法使用:根据附录精度,传入经纬度生成geohash编码,存入数据库,例如:当需要查询附近某个区域块点时,只需要,就可以查出该区域块所有数据select * from dm_gps where geohash like wskme% (记得加索引)用法补充:当碰到需要渲染一整个地图,而数据量大的时候怎么办?总不可能把几千万的点全部查出来渲染吧?可以新增一个大区域块统计表,将精度更小的数据进行分组并且统计总数,例如:gps_id无用字段,请忽略查出精度为2的数据:当地图放大时:可相应的查出:level3,level4.....等等数据精度bug一:如图:当查询红点所在区域时,数据库只能查询到该区域块右下角的点,而找不到离他更近的上面的绿点该bug可通过查询周围8个区域块进行再次比对,或者增加精度到厘米级别,就可忽略该bug附录:geohash精度php扩展php已经实现了对geohash的扩展,其他补充等有时间,将会把geohash解码算法发出来本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
http://www.zqtcl.cn/news/483732/

相关文章:

  • 广州富邦物流网站建设南宁住房和城乡建设部网站
  • asp.net 公司网站全面的移动网站建设
  • 中国空间站官网app下载平台有哪些
  • 做外贸网站报价单做网站需要什么证件吗
  • 网站可以做视频链接东红物流网站建设规划书
  • 自己的网站网站免费部署
  • 广州专业的网站建设公司镇海seo关键词优化费用
  • 网站建设英文字体格式网络技术培训内容
  • 郑州公司网站设计在西宁做网站可以吗
  • 做最好的言情网站南通优普营销网站建设
  • 毕业设计网站可以做什么辽宁省建设厅网站更新
  • 同城信息网站建设牡丹江网站推广
  • 四川省城乡住房建设部网站首页商丘网站制作公司一二三网络推广
  • asp网站开发全程视频免费发布招聘信息平台
  • 机械网站建设开发网站如何做收录排行
  • 成都市学校网站建设怎样做网站二维码
  • 网站建设企业电话在线照片处理编辑器
  • 长沙建设网站企业wordpress 亲子模板下载
  • 济南seo整站优化价格织梦网站做404页面
  • 石家庄做标书的网站如何选取网站关键词
  • 摄影作品网站推荐wordpress用插件注册
  • pc端兼手机端网站模板中国网站 服务器
  • 江宁区建设工程局网站做网站满屏的照片尺寸是多少
  • 中国设计师网站网站开发需要什么专业的人才
  • 制作网站第一步龙海建设局网站
  • 网站建设的业务规划资源分享类网站模板
  • app与网站数据交互忻州集团网站建设
  • 个人网站有必要备案吗专业建站哪家好
  • 网站代码软件WordPress 编辑器2016
  • 网站建设与制作教学计划重庆本地建站