写点什么

Geospatial- 地理空间,java 面试基本知识

作者:Java高工P7
  • 2021 年 11 月 09 日
  • 本文字数:2205 字

    阅读完需:约 7 分钟

错误示例:


127.0.0.1:6379>?geoadd?city?190?18?buzhidao


(error)?ERR?invalid?longitude,latitude?pair?190.000000,18.000000


2.2 GEOPOS

命令简介:


GEOPOS key member [member …]


根据键(key)获取给定位置元素的位置(经度和纬度),GEOPOS 可以接收一个 member,也可以接收多个 member,如果 member 不存在则返回 nil


代码示例:


127.0.0.1:6379>?geopos?beijing


(empty?array)


127.0.0.1:6379>?geopos?city?beijing


1)?1)?"116.40528827905654907"


2)?"39.90498588819134085"


127.0.0.1:6379>?geopos?city?tianjin?shanghai


1)?1)?"117.19018846750259399"


2)?"39.12559461779084558"


2)?1)?"121.47264093160629272"


2)?"31.23170744181923197"


127.0.0.1:6379>?geopos?city?xiaoriben


1)?(nil)


2.3 GEODIST

命令简介:


GEODIST key member1 member2 [unit]


返回两个给定位置之间的距离,以双精度浮点数的形式被返回。如果给定的位置其中一个不存在(两个都不存在也是一样,下面有示例),将会返回空值(nil)。


unit 单位描述:


  • m -> 米

  • km -> 千米

  • mi -> 英里

  • ft -> 英尺


默认单位:


如果用户未给定指定单位 unit,则默认为米(m)


误差范围:


GEODIST 计算的算法会将地球考虑为一个完全球体,在极限情况下,存在最大 0.5%的误差


代码示例:


127.0.0.1:6379>?geodist?city?beijing?shanghai?m


"1067597.0432"


127.0.0.1:6379>?geodist?city?beijing?shanghai?km


"1067.5970"


127.0.0.1:6379>?geodist?city?beijing?xiaoriben


(nil)


127.0.0.1:6379>?geodist?city?meiguoguizi?xiaoriben


(nil)


2.4 GEORADIUS

命令简介:


GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]


以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。


m|km|ft|mi 选项:


  • m -> 米

  • km -> 千米

  • mi -> 英里

  • ft -> 英尺


[WITHCOORD] [WITHDIST] [WITHHASH]选项:


  • [WITHCOORD]:将位置元素的经度和纬度也一并返回。

  • [WITHDIST] :在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。

  • [WITHHASH]: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。


[ASC|DESC] 选项:


  • ASC:根据给定的中心位置,从近到远返回位置元素

  • DESC:根据给定的中心位置,从远到近返回位置元素


[COUNT count] 参数:


GEORADIUS 默认会返回符合条件的全部位置元素。但是用户可以通过[COUNT count] 参数去指定获取前 N 个匹配元素。这个参数可以减少需要返回的元素数量,一定程度上可以减少带宽压力。


返回值:


GEORADIUS 的返回值是一个数组,但是数组的内容会根据是否存在上述参数而改变


  • 未给定任何 WITH 参数,则返回普通线性列表

  • 给定[WITHCOORD] [WITHDIST] [WITHHASH]等参数后返回一个二层嵌套数组


具体返回值请查看后续示例,建议还是自己多搞几次就清楚了


代码示例:


未给定任何 WITH 参数


127.0.0.1:6379>?georadius?city?116.405289?39.904987?1000?km


1)?"tianjin"


2)?"beijing"


给定[WITHCOORD] [WITHDIST] [WITHHASH]等参数,返回的时二层嵌套数组


127.0.0.1:6379>?georadius?city?116.405289?39.904987?1000?km?withcoord


1)?1)?"tianjin"


2)?1)?"117.19018846750259399"


2)?"39.12559461779084558"


2)?1)?"beijing"


2)?1)?"116.40528827905654907"


2)?"39.90498588819134085"


127.0.0.1:6379>?georadius?city?116.405289?39.904987?1000?km?withdist


1)?1)?"tianjin"


2)?"109.7754"


2)?1)?"beijing"


2)?"0.0001"

2.5 GEORADIUSBYMEMBER

命令简介:


GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]


GEORADIUSBYMEMBER 与 GEORADIUS 的区别在于,GEORADIUSBYMEMBER 无需给定经纬度,只需要给定成员的 key 就行,具体使用与 GEORADIUS 一致


代码示例:


127.0.0.1:6379>?georadiusbymember?city?beijing?1000?km


1)?"tianjin"


2)?"beijing"


127.0


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


.0.1:6379>?georadiusbymember?city?beijing?1000?km?withcoord


1)?1)?"tianjin"


2)?1)?"117.19018846750259399"


2)?"39.12559461779084558"


2)?1)?"beijing"


2)?1)?"116.40528827905654907"


2)?"39.90498588819134085"

2.6 GEOHASH

命令名称:


GEOHASH key member [member …]


返回一个或多个位置元素的 GeoHash 表示,可以给顶多个 key 中的 member,因此返回的是一个数组。


?


代码示例:


127.0.0.1:6379>?geohash?city?beijing?shanghai?changsha


1)?"wx4g0b7xru0"


2)?"wtw3sjt9vs0"


3)?"wt026ux4mz0"


三、中国省会城市的经纬度




为了便于各位大佬们学习 Geospatial 的学习,我整理了全国省会城市的经纬度在这,有需要的可以自取。


| 名称 | 经度 | 维度 |


| --- | --- | --- |


| 北京市 | 116.405289 | 39.904987 |


| 天津市 | 117.190186 | 39.125595 |


| 呼和浩特市 | 111.751990 | 40.841490 |


| 银川市 | 106.232480 | 38.486440 |


| 石家庄市 | 114.502464 | 38.045475 |


| 济南市 | 117.000923 | 36.675808 |


| 郑州市 | 113.665413 | 34.757977 |


| 西安市 | 108.948021 | 34.263161 |


| 武汉市 | 114.298569 | 30.584354 |


| 南京市 | 118.76741 | 32.041546 |


| 合肥市 | 117.283043 | 31.861191 |


| 上海市 | 121.472641 | 31.231707 |

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Geospatial-地理空间,java面试基本知识