如何找到不同的坐标?

时间:2015-01-15 09:22:45

标签: php google-maps

我在csv文件中有一个坐标列表(经度和纬度)。坐标代表商店。商店有近百个文件,每个国家一个。但有些坐标是错误的(由员工手写)。

每个国家/地区约有100家商店(平均)。 我可以将坐标发送到谷歌api,以检查它是否与其他国家/地区相同,但谷歌地图api将只收到2500免费请求。

我怎么能编写一个只测试一些发散坐标而不是每个坐标的方法?

这里我们有一个法国商店坐标的例子。但是一个坐标位于加纳。

latitude    longitude
42,82377    0,316521
46,180742   6,7042473
45,0144927  6,1242264
42,6281     9,4206
46,0259861  6,6388244
47,9622395  1,8441825
5,623027    -1,043182
44.773491   6.03283
48,2814547  7,4579305
50.726231   1.60238
45,751175   3,110678
46,1875023   5.2071938
44,944816   4,841903
45,1484023  5,7223511
44,556944   4,749496
45,467654   4,352633
45,564601   5,917781
45,556935   5,971688
47,312494   5,117044
45,93813    6,090965

1 个答案:

答案 0 :(得分:2)

也许制作坐标的平均值:

$average = array('latitude' => 0, 'longitude' => 0);
// determine the total of coordinates values
foreach($coordinates as $coord){
    $average['latitude'] += $coord['latitude'];
    $average['longitude'] += $coord['longitude'];
}

// Divide by the number of coordinates to get an average value of the lat/long
$average['latitude'] /= count($coordinates);
$average['longitude'] /= count($coordinates);

// max distance to considere the measure is bad
$maxDistance = 5.0;  // YOU SHOULD CONFIGURE THIS VARIABLE

// then, we determinate strangers :p
$strangers = array();
foreach($coordinates as $coord){
    if($coord['latitude'] > $average['latitude'] + $maxDistance 
       OR $coord['latitude'] < $average['latitude'] - $maxDistance
       OR $coord['longitude'] > $average['longitude'] + $maxDistance
       OR $coord['longitude'] < $average['longitude'] - $maxDistance){
            $strangers[] = $coord;
    }
}

// you get your list, and you can use it
foreach($strangers as $strange){
   echo $strange['latitude'] . " : " . $strange['longitude'];
}

我认为顺便说一下,有很多算法比这个更好......