c# – 给定坐标,如何获得10英里半径内的所有邮政编码?

c# – 给定坐标,如何获得10英里半径内的所有邮政编码?,第1张

概述我有一个位置(纬度和经度).如何获取在我所在位置的10英里范围内部分或全部的邮政编码清单? 该解决方案可以是对一个众所周知的Web服务(google maps,bing maps等)或本地数据库解决方案(客户端具有sql server 2005)或算法的调用. 我看到有些similar question,但是所有的答案在很大程度上涉及使用SQL Server 2008地理功能,这是不可用的. 首先 我有一个位置(纬度和经度).如何获取在我所在位置的10英里范围内部分或全部的邮政编码清单?

该解决方案可以是对一个众所周知的Web服务(Google maps,bing maps等)或本地数据库解决方案(客户端具有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;}
总结

以上是内存溢出为你收集整理的c# – 给定坐标,如何获得10英里半径内的所有邮政编码?全部内容,希望文章能够帮你解决c# – 给定坐标,如何获得10英里半径内的所有邮政编码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存