Poi.Lonset=Customer.Lonset OR Poi.Lonset=Customer.Lonset+1 OR Poi.Lonset=Customer.Lonset - 1
Poi.Latset=Customer.Latset OR Poi.Latset=Customer.Latset+1 OR Poi.Latset=Customer.Latset - 1
您的数据现在应该如下所示:
Cust: A
Poi: X
londist: 24
Cust A:
Poi: X
latdist: 13
2条答案
按热度按时间yzuktlbb1#
如果没有某种空间索引,就没有一种有效的方法来减少连接的计算量。我不知道esri配置单元函数有任何可用的空间索引(来源:我是该项目的贡献者)。
31moq8wy2#
根据评论更新:
看来您需要一种逐步的方法来利用这些优化。我的想法如下:
与任何工具一样,您可以使用“标准”技巧来解决此类问题。
这个想法是,你可以有效地知道是否需要比较东西,因为排序相对便宜。因此,您可以实现如下内容:
首先根据位置定义类别(例如,基于1个小数点的舍入长度和纬度)。
计算之后,您的数据将如下所示,其中实体可以是客户或poi:
现在可以在join中构建两个强where子句。第一个可用于创建短纵向距离对列表,第二个可用于创建短纬度距离对列表。
您的数据现在应该如下所示:
当然,这假设lonset和latset至少有30英里宽,否则您可以相应地进行调整。
现在您只需要将这两个表连接起来并计算它们之间的距离(由于这些点位于30英里以内,因此基本上可以使用毕达哥拉斯来精确计算)。
我不熟悉esra软件包,也没有尝试过直接在hive中实现这一点,但是您可以始终使用pig,在那里我可以证明它可以以一种智能的方式实现这种连接。