Java 从纬度和经度查找邮政编码
我知道有一些web服务包含这些信息,但是它们可以限制为每天的请求。我有大约114000张唱片需要邮政编码。我有一个充满邮政编码的数据库,上面有lat和long。但是,我不确定如何根据邮政编码lat和long计算给定的lat和longJava 从纬度和经度查找邮政编码,java,php,mysql,geolocation,Java,Php,Mysql,Geolocation,我知道有一些web服务包含这些信息,但是它们可以限制为每天的请求。我有大约114000张唱片需要邮政编码。我有一个充满邮政编码的数据库,上面有lat和long。但是,我不确定如何根据邮政编码lat和long计算给定的lat和long 基本上,我需要对照提供的邮政编码lat和long交叉引用给定的地址lat和long。我可以使用PHP、Java或MySQL过程,也可以只进行计算 我可以给你一块垫脚石,但在这种情况下,仅此而已 $distance = 10; $latitude = 37.29509
基本上,我需要对照提供的邮政编码lat和long交叉引用给定的地址lat和long。我可以使用PHP、Java或MySQL过程,也可以只进行计算 我可以给你一块垫脚石,但在这种情况下,仅此而已
$distance = 10;
$latitude = 37.295092;
$longitude = -121.896490;
$sql = "SELECT loc.*, (((acos(sin(($latitude*pi()/180)) * sin((`latitude`*pi()/180))+cos(($latitude*pi()/180)) * cos((`latitude`*pi()/180)) * cos((($longitude - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` FROM table_with_lonlat_ref loc HAVING distance < $distance"
如果您创建一个查询,在您拥有的两个表之间进行连接,并将距离减少到1或2,您可以在概念上提出所需的几乎所有lat/lon组合。或者您也可以找到一个包含所有US zipcodes的数据库,该数据库也包含lat/lon,然后根据匹配的zipcodes查询一个表以插入另一个表。我在某处有这样一个zipcode数据库
我也可以建议它永远不完整,除非你愿意为它付费,而且它经常会改变。从这一点上,您可以得到几乎所有可能用作参考点的lat/lon组合,基于访客的IP,在某些情况下,IP可能会从一个城镇或两个城镇以外的枢纽喷出。但它总比什么都没有好,只给了您服务器可以处理的限制,不必担心maxmind使用条款之外的API限制
总之,我在很多网站上使用这种组合已经有一段时间了,到目前为止还没有遇到很多问题。我知道这不是对你问题的直接回答,但我希望它能引导你找到一个解决方案因为你已经有了一个lat和long数据库,我假设它描述了一组矩形区域,从latA,lonA到latB,lonB,每个区域都有一个相关的邮政编码。我还将假设或建议您已经为这四个字段编制了索引 您的查询可以相当容易地匹配坐标coordA,coordB是否适合描述该矩形的两个范围
update coords set zip_code=(
select zip_code from zip_codes
where coords.coordA >= zip_codes.latA
and coords.coordA <= zip_codes.latB
and coords.coordB >= zip_codes.lonA
and coords.coordB <= zip_codes.lonB
limit 1
)
Caviat:您应该验证邮政编码数据库中的latA