1

有2个数据集

  1. 300 个地理坐标列表

  2. 超过 200 万个地理坐标的列表

对于列表 1 中的每个条目,我正在尝试计算列表 2 中位于 5 英里半径内的条目数。

我决定使用euclidean距离,因为我只处理相对较小的距离。

这是我的代码。它需要永远运行。关于如何改进代码的任何建议。

Select 
    DistFilter.storenumber,
    count(companynumber) as sohoCount
from
    (Select 
        UKStoreCoord.storenumber,
        UKStoreCoord.latitude as SLat,
        UKStoreCoord.longitude as SLng,
        SohoCoordinates.companynumber,
        SohoCoordinates.latitude,
        SohoCoordinates.longitude

    from UKStoreCoord, SohoCoordinates

    where abs(UKStoreCoord.latitude - SohoCoordinates.latitude)<0.1 and abs(SohoCoordinates.longitude - UKStoreCoord.longitude)<0.1

    group by
        UKStoreCoord.storenumber,
        UKStoreCoord.latitude,
        UKStoreCoord.longitude,
        SohoCoordinates.companynumber,
        SohoCoordinates.latitude,
        SohoCoordinates.longitude) as DistFilter

where (((Distfilter.latitude - Distfilter.SLat) * 69) ^2 + ((Distfilter.longitude - Distfilter.SLng) * 46) ^2) <25

group by 
    DistFilter.storenumber

干杯

4

0 回答 0