我有一個查詢到一個sql數據庫來查找給定的郵政編碼(該數據庫表包含經度和緯度信息)給定半徑內的所有匹配的郵政編碼。半徑郵政編碼搜索的替代算法?
我就是用這個算法,我發現這裏的計算器:
$ SQL = 'SELECT DISTINCT(郵編)FROM郵政編碼WHERE(3958 * 3.1415926 *的sqrt((緯度 - ' $ LAT「)*。 (Latitude - '。$ lat。')+ cos(Latitude/57.29578)cos('。$ lat。'/ 57.29578)(經度 - '。$ lon。')*(經度 - '。$ lon。' ))/ 180)< ='。$ radius。';';
它的功能,但我發現結果並不完全符合預期。例如,如果我從11572(Oceanside,NY)進行40英里半徑的搜索,它不會返回顯然在40英里半徑內的許多曼哈頓郵政編碼(即10023)。
我希望有人可能有另一種方法?
謝謝,馬克
嘗試:where sqrt(pow(Latitute - '$ .lat',2)+ pow(Longitude - '。$ lon',2))<='$ .radius' – rocketspacer
我可能猜測問題是這樣正在測量40英里半徑範圍內的郵政編碼中心 - 你可能想要和郵政編碼和40英里半徑的區域。這聽起來可能嗎? – gbtimmon
我給了一個鏡頭,nmtuan,但它返回了一個超出40英里給定半徑的巨大列表,並導致了一個致命的超時異常。 – zargosh