我有一个位置(纬度和经度)。如何获得位于我所在位置10英里半径内的部分邮政编码或全部邮政编码?

解决方案可以是调用知名的Web服务(谷歌 map ,必应 map 等)或本地数据库解决方案(客户端具有sql server 2005)或算法。

我已经看到了similar question,但是那里的所有答案几乎都与使用我不可用的SQL Server 2008地理功能有关。

最佳答案

首先,您需要一个包含所有邮政编码及其相应纬度和经度的数据库。在澳大利亚,只有几千种这样的信息(而且这些信息很容易获得),但是我认为在美国这可能是一项更加艰巨的任务。

其次,如果您知道自己的位置,并且知道要查找的半径,则可以查找该半径内的所有邮政编码。用PHP编写的一些简单内容如下:(很抱歉,它不在C#中)

function distanceFromTo($latitude1,$longitude1,$latitude2,$longitude2,$km){
  $latitude1  = deg2rad($latitude1);
  $longitude1 = deg2rad($longitude1);
  $latitude2  = deg2rad($latitude2);
  $longitude2 = deg2rad($longitude2);
  $delta_latitude  = $latitude2  - $latitude1;
  $delta_longitude = $longitude2 - $longitude1;
  $temp = pow(sin($delta_latitude/2.0),2) + cos($latitude1) * cos($latitude2) * pow(sin($delta_longitude/2.0),2);
  $earth_radius = 3956;
  $distance = $earth_radius * 2 * atan2(sqrt($temp),sqrt(1-$temp));
  if ($km)
    $distance = $distance * 1.609344;
  return $distance;
}

09-08 08:48