最近看到一篇文章
https://www.jianshu.com/p/80dc74f4952a?utm_source=desktop&utm_medium=timeline
首先下载Tableau格式数据
链接:https://pan.baidu.com/s/1ahPrvkcJuJxOLcyDm65hcw
提取码:i792
下面是具体过程:
1.首先引入数据,在【CityStateAbbr】字段上右键创建参数,命名为【Relative City】,作用是确定计算距离的中心点
2.定义两个参数,都是固定数值
【Earth_radius】是地球半径,整数,3960
【k】浮点,pi/180=0.017453293
3.定义两计算字段,用来确定中心点的经纬度
【Latitude 0】
WINDOW_AVG(
ATTR(if [CityStateAbbr]=[Relative City] then [Latitude] end))
【Longitude 0】
WINDOW_AVG(
ATTR(if [CityStateAbbr]=[Relative City] then [Longitude] end))
意思就是只有【Relative City】被选择,这两个字段才会有经纬度的数值
4.创建距离字段【Distance】,利用的是spherical law of cosines(球面余弦定律太复杂,搞不懂)
//spherical law of cosines
[Earth_radius] * acos (
cos( [k]*avg([Latitude]) ) * cos ( [k]*avg([Longitude]) ) * cos ( [k]*
[Latitude 0] ) * cos ( [k]*[Longitude 0] )
+ cos( [k]*avg([Latitude]) ) * sin ( [k]*avg([Longitude]) ) * cos (
[k]*[Latitude 0] ) * sin ( [k]*[Longitude 0] )
+ sin( [k]*avg([Latitude]) ) * sin ( [k]*[Latitude 0] )
)
5.下面可以创建视图了
将【Longitude】放到列功能区,【Latitude】放到行功能区,【Distance】放到筛选器,【Relative City】右键选择“显示参数控件”作为筛选器使用,另外可以把【Distance】放到标记的颜色选项卡,以区别距离,也可以将【Distance】显示为筛选器,自由调整筛选距离。
其实现在版本的tableau已经可以根据经纬度
自动计算距离了
在创建计算字段中选择【空间函数】
DISTANCE()
MAKEPOINT()
创建计算字段【select-city】
[Relative City]=[CityStateAbbr]
创建计算字段【selected Lat】
{MIN(if [select-city] THEN [Latitude] END)}
创建计算字段【selected Long】
{MIN(if [select-city] THEN [Longitude] END)}
创建计算字段【开始点】
MAKEPOINT([selected Lat],[selected Long])
创建计算字段【结束点】
MAKEPOINT([Latitude],[Longitude])
创建参数【距离 单位】
创建计算字段【距离】
DISTANCE([开始点],[结束点] ,[距离 单位])