命令行工具查找最近的存储。
storelocator的Python项目详细描述
#storelocator
一个命令行工具,用于从存储的csv中查找距离给定地址或邮政编码最近的存储。
请确保您的计算机上安装了类似virtual env的软件。
env/bin/activate
````
```````
pip install-r requirements.txt
``````
````````
//``````````````````>
p~/bin<是的路径=$path":$home/bin"
```
="utf-8-sig"
默认分隔符=','
距离精度=2
存储字段={
"名称":"存储名称",
"位置":"存储位置",
"县":"县",
"地址":"地址",
"城市":"城市",
"状态":"状态",
'邮政编码':'邮政编码',
'纬度':'纬度',
'经度':'经度',
'距离':'距离'
}
````
>设置完毕后,可以使用storelocator按地址或邮政编码查找最近的商店。或者,您也可以选择距离(mi或km)的单位,以及希望结果输出为(文本或json)的格式。
````
find store
find store将从
store-locations.csv中查找最近的存储(如vrow所飞),打印匹配的存储地址,以及到该存储的距离。
用法:
查找存储--地址="<;地址>;""
查找存储--地址="<;地址>;""[--单位=(mi km)"[--输出=文本json]
查找存储--zip=<;zip>;
查找存储--zip=<;zip>;[--units=(mi km)][--output=text json]
选项:
--zip=<;zip>;查找离此邮政编码最近的商店。如果有多个最佳匹配项,请返回第一个。
--地址查找距此地址最近的存储区。如果有多个最佳匹配,则返回第一个。
--units=(mi km)以英里或公里为单位显示单位[默认值:mi]
--output=(text json)以可读文本输出,或在JSON(例如机器可读)[默认:文本]
BR/>示例
FUNDIONSITY地址="1770联合ST,旧金山,CA 94123"
查找商店——zip=94115——单元=km
````
````
要使用比所提供的数据集更大的数据集,并且模块化地包括在命令提示符之外使用。
当然,这种方法也可以改进。
包含存储位置数据的csv的解析通过storesparser对象处理。storesparser读取csv并创建存储列表(dict)。同时,通过对storesparser对象的kdtree实现,对所有存储的纬度和纵向坐标进行空间索引。
ure,查询最近的存储被优化为nlog(n)时间复杂度,减少了查找最近存储所需的距离计算次数。构建此树会增加存储树的空间成本和最初填充树所需的时间。
要从这种方法中获益,必须确保不必在每次执行新搜索时都重新填充kdtree。为了实现这一点,storesparser有一个save方法,该方法在填充kdtree后将当前实例保存到一个.pkl文件中。然后,storesparser有一个名为get_storesparser的静态方法,该方法返回已保存的storesparser实例,或者如果不存在.pkl文件,在填充其kdtree后返回一个新实例。
z)可用于计算欧氏距离。
查找最近的存储首先查询树以接收最接近的可能结果,然后从结果列表中,传统的蛮力和迭代比较法是用来寻找最接近的距离的。
距离计算是基于haversine公式。
\authors
*austin brown
一个命令行工具,用于从存储的csv中查找距离给定地址或邮政编码最近的存储。
请确保您的计算机上安装了类似virtual env的软件。
env/bin/activate
````
```````
pip install-r requirements.txt
``````
````````
//``````````````````>
p~/bin<是的路径=$path":$home/bin"
```
="utf-8-sig"
默认分隔符=','
距离精度=2
"名称":"存储名称",
"位置":"存储位置",
"县":"县",
"地址":"地址",
"城市":"城市",
"状态":"状态",
'邮政编码':'邮政编码',
'纬度':'纬度',
'经度':'经度',
'距离':'距离'
}
````
>设置完毕后,可以使用storelocator按地址或邮政编码查找最近的商店。或者,您也可以选择距离(mi或km)的单位,以及希望结果输出为(文本或json)的格式。
````
find store
find store将从
store-locations.csv中查找最近的存储(如vrow所飞),打印匹配的存储地址,以及到该存储的距离。
用法:
查找存储--地址="<;地址>;""
查找存储--地址="<;地址>;""[--单位=(mi km)"[--输出=文本json]
查找存储--zip=<;zip>;
查找存储--zip=<;zip>;[--units=(mi km)][--output=text json]
选项:
--zip=<;zip>;查找离此邮政编码最近的商店。如果有多个最佳匹配项,请返回第一个。
--地址查找距此地址最近的存储区。如果有多个最佳匹配,则返回第一个。
--units=(mi km)以英里或公里为单位显示单位[默认值:mi]
--output=(text json)以可读文本输出,或在JSON(例如机器可读)[默认:文本]
BR/>示例
FUNDIONSITY地址="1770联合ST,旧金山,CA 94123"
查找商店——zip=94115——单元=km
````
````
要使用比所提供的数据集更大的数据集,并且模块化地包括在命令提示符之外使用。
当然,这种方法也可以改进。
包含存储位置数据的csv的解析通过storesparser对象处理。storesparser读取csv并创建存储列表(dict)。同时,通过对storesparser对象的kdtree实现,对所有存储的纬度和纵向坐标进行空间索引。
ure,查询最近的存储被优化为nlog(n)时间复杂度,减少了查找最近存储所需的距离计算次数。构建此树会增加存储树的空间成本和最初填充树所需的时间。
要从这种方法中获益,必须确保不必在每次执行新搜索时都重新填充kdtree。为了实现这一点,storesparser有一个save方法,该方法在填充kdtree后将当前实例保存到一个.pkl文件中。然后,storesparser有一个名为get_storesparser的静态方法,该方法返回已保存的storesparser实例,或者如果不存在.pkl文件,在填充其kdtree后返回一个新实例。
z)可用于计算欧氏距离。
查找最近的存储首先查询树以接收最接近的可能结果,然后从结果列表中,传统的蛮力和迭代比较法是用来寻找最接近的距离的。
距离计算是基于haversine公式。
\authors
*austin brown