Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从纬度和经度查找邮政编码_Java_Php_Mysql_Geolocation - Fatal编程技术网

Java 从纬度和经度查找邮政编码

Java 从纬度和经度查找邮政编码,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

我知道有一些web服务包含这些信息,但是它们可以限制为每天的请求。我有大约114000张唱片需要邮政编码。我有一个充满邮政编码的数据库,上面有lat和long。但是,我不确定如何根据邮政编码lat和long计算给定的lat和long


基本上,我需要对照提供的邮政编码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基本上我需要。。问一个问题。更好的是,把它变成一个具体的问题。看看这个…-你可以使用谷歌,但他们的服务条款规定你必须显示地图!我一直把它看作是服务。如前所述,他们的API调用有一些限制,每小时只能调用2000次。我有11.4万张唱片需要邮政编码。是否有可能从给定的ZIP lat和longs计算出这一数据?大多数邮政服务都出售这类数据的许可证。如果您在地理位置、地址和邮政编码方面做了大量工作,那么购买许可证是有意义的。如果这些数据用于非商业项目,一些国家会免费提供这些数据。使用谷歌地理编码界面,如果需要,让脚本限制其调用。谁在乎需要几天才能得到你需要的所有数据呢?我已经有了一个邮政编码为lat和longs的数据库。我希望能交叉引用这个。我将尝试SQL代码,看看会发生什么。如果所有这些都失败了,我可以尝试API服务。我只是希望能快点。但我确信,在我弄明白如何引用所有内容后,我已经通过API运行了它。我会随时通知你的。没问题,如果我现在不在工作,我可能会尝试帮助你更深入,但我只能拖延这么久才会遇到麻烦。它工作正常,不是100%准确,但它必须比通过API运行更快。是的,不幸的是,几乎所有zipcode DB的lat/lon点都与zipcode位置的中心相关联。这不是关键问题。把距离缩短到1到2英里。这是一个废话,因为一些计算可能会失败。一般来说,虽然总比没有好,但最终会将您从100k+减少到数千个空条目,您可以通过其他较慢的方式获得这些条目,而无需由于api限制而连续等待几天,很高兴它在一定程度上为您工作