Python使用Redis计算经纬度距离
1. 需要的库, redis
1 | pip install redis |
2. 连接Redis
1 | import redis |
3. 把已知的地址经纬度导入到Redis中, 用于计算
1 | rd.geoadd(name="集合名称", values=["经度", "维度", "地址名称"]) |
- 一次添加多个位置
values=[经度1, 维度1, 地址名称1, 经度2, 维度2, 地址名称2, 经度3, 纬度3, 地址名称3......]
。
4. 查看已添加位置的经纬度
1 | result = rd.geopos("集合名称", "地址名称1", "地址名称2") |
- 如果未查到, 会返回
None
。1
2result = rd.geopos("集合名称", "错误名称1", "错误名称2")
print(result) # [None, None]
5. 计算两地之间的距离
1 | rd.geodist("集合名称", "地址名称1", "地址名称2", unit="km") |
- unit:距离的单位, 可选
("m": 米, "km": 千米, "mi": 英里, "ft": 英尺)
, 默认值为m
。
6. 搜索范围内的地址
1 | result = rd.georadius(name="集合名称", longitude="经度", latitude="维度", radius="半径距离", unit="半径单位", |
- sort: 排序方式,
ASC
由近到远,DESC
由远到近。 - count: 指定返回前几条数据。
- withdist: 是否返回距离。
- withcoord: 是否返回经纬度信息。
注意, 返回的数据其中的地址名称是
byte
类型的, 使用时需要decode('utf-8)
处理。