我有一个工作的PHP脚本,它获取经度和纬度值,然后将它们输入到MySQL查询中.我想把它做成MySQL.这是我目前的PHP代码:
if ($distance != "Any" && $customer_zip != "") { //get the great circle distance
//get the origin zip code info
$zip_sql = "SELECT * FROM zip_code WHERE zip_code = '$customer_zip'";
$result = mysql_query($zip_sql);
$row = mysql_fetch_array($result);
$origin_lat = $row['lat'];
$origin_lon = $row['lon'];
//get the range
$lat_range = $distance/69.172;
$lon_range = abs($distance/(cos($details[0]) * 69.172));
$min_lat = number_format($origin_lat - $lat_range, "4", ".", "");
$max_lat = number_format($origin_lat + $lat_range, "4", ".", "");
$min_lon = number_format($origin_lon - $lon_range, "4", ".", "");
$max_lon = …Run Code Online (Sandbox Code Playgroud) 嗨,我需要计算具有lat和long的两个点之间的距离.
我想避免任何外部API调用.
我尝试在PHP中实现Haversine公式:
这是代码:
class CoordDistance
{
public $lat_a = 0;
public $lon_a = 0;
public $lat_b = 0;
public $lon_b = 0;
public $measure_unit = 'kilometers';
public $measure_state = false;
public $measure = 0;
public $error = '';
public function DistAB()
{
$delta_lat = $this->lat_b - $this->lat_a ;
$delta_lon = $this->lon_b - $this->lon_a ;
$earth_radius = 6372.795477598;
$alpha = $delta_lat/2;
$beta = $delta_lon/2;
$a = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($this->lat_a)) * cos(deg2rad($this->lat_b)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ;
$c = …Run Code Online (Sandbox Code Playgroud) 我尝试实现这个公式:http ://andrew.hedges.name/experiments/haversine/ aplet对我测试的两个点有好处:

但我的代码不起作用.
from math import sin, cos, sqrt, atan2
R = 6373.0
lat1 = 52.2296756
lon1 = 21.0122287
lat2 = 52.406374
lon2 = 16.9251681
dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))**2 + cos(lat1) * cos(lat2) * (sin(dlon/2))**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = R * c
print "Result", distance
print "Should be", 278.546
Run Code Online (Sandbox Code Playgroud)
它返回的距离是5447.05546147.为什么?
我想从下面的数据库表中找到最近的位置
Address Latitude longitude
Kathmandu 44600, Nepal 27.7 85.33333330000005
Los, Antoniterstraße 37.09024 -95.71289100000001
Sydney NSW, Australia 49.7480755 8.111794700000019
goa india 15.2993265 74.12399600000003
Run Code Online (Sandbox Code Playgroud)
我从谷歌地图中获取了所有这些数据.在这里,我必须找到一个地方最近的位置.假设我在Surkhet的地方,它的纬度是28.6,经度是81.6,我怎样才能找到距离Surkhet最近的地方.
应用程序如何执行邻近搜索?例如,用户键入邮政编码,然后该应用程序列出通过邻近排序的20英里内的所有商家.
我想在PHP和MySQL中构建类似的东西.这种方法是否正确?
这个可以吗?在第3步中,我将计算每个查询的接近度.有一个PROXIMITY表是否更好地列出了每个企业和几个参考位置之间的距离?
所以我一直在网上寻找一个Python库,它会返回你确切的当前位置,并发现没有任何可用的东西,除非你通过你的IP地址找到你的位置的廉价和不准确的方法,我已经在我的移动热点上进行了测试,并且距离100英里.
我有另一个解决方案,但它需要将JavaScript与Python混合,我需要帮助,我只在Python/Django上工作了几天.
由于Python是服务器端,我无法找到任何可以精确定位您的精确经度和纬度的库.但是使用客户端JavaScript,这非常简单,无需任何库:
所以我想知道是否有任何Python程序员在那里有更多的经验,可以在这里解释如何运行上面的javascript代码,并将javascript输出作为Python字符串返回:
python
>>>javascriptOutput = runJavaScript("<script> function showPosition(position) </script>")
>>>print javascriptOutput
<p id="long">-122.15563439999998</p> <p id="lat">37.4458668</p>
>>>
Run Code Online (Sandbox Code Playgroud)
所以我的想法是在我在单个python函数中提供的JSfiddle URL中运行整个HTML块,它将返回JSfiddle提供的相同结果.
有了这个结果,我可以将它存储在一个python变量中并对它进行一些字符串连接,最终存储我准确的客户端经度和纬度坐标.
那么可以在Python函数中运行一些JavaScript吗?
要么
您可以使用Python/Django以某种方式读取用户在运行javascript/HTML5地理位置后看到的HTML源吗?
我现在越想到这一点,我就越开始认为Javascript将需要AJAX到Django服务器......
我有一个 MongoDB 集合,其中包含数百万条记录,如下所示
{
"_id" : ObjectId("5e662d6e9ce8bf144c715afd"),
"X" : 19.229000091552734,
"Y" : 233.723388671875,
"Data" : {
// Some data
}
}
{
"_id" : ObjectId("5e662d6e9ce8bf144c715afe"),
"X" : 19.229000091552734,
"Y" : 2773.426513671875,
"Data" : {
// Some data
}
}
Run Code Online (Sandbox Code Playgroud)
我想出了两个地理坐标的远程计算器
public static double DistanceTo(this Coordinates baseCoordinates, Coordinates targetCoordinates, UnitOfLength unitOfLength)
{
var baseRad = Math.PI * baseCoordinates.Latitude / 180;
var targetRad = Math.PI * targetCoordinates.Latitude / 180;
var theta = baseCoordinates.Longitude - targetCoordinates.Longitude;
var thetaRad = Math.PI * theta / …Run Code Online (Sandbox Code Playgroud) 我有这些数据:
纬度:50.223137
经度:18.679558
现在我想在PHP中创建一个特殊的函数,该函数将能够计算小于50 km的最小经纬度和最大经纬度。最后,我想获得4个参数,并希望在简单的SQL查询中使用这些参数:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];
我知道,我只能使用一个sql查询来做到这一点:纬度/经度查找最近的纬度/经度-复杂的sql或复杂的计算,但是我的数据库中现在有20.000.000条记录,并且它仍在增长。我还必须在sql数据库中搜索其他内容,因此我想基于PHP计算所有内容,然后以这种方式在sql中搜索:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];因为我认为-这是更快的方法。
我也找到了这个函数:https : //www.geodatasource.com/developers/php,这很不错,但是我想以其他方式创建该函数-我想声明为参数:lat,lng和distance(例如:50 km) )。最后,我想获取4个参数-min_lat,min_lng,max_lat,max_lng。
有人可以帮助我创建此功能吗?
谢谢。
php ×5
mysql ×3
geocoding ×2
google-maps ×2
python ×2
c# ×1
coordinates ×1
django ×1
geo ×1
geography ×1
great-circle ×1
haversine ×1
mongodb ×1
proximity ×1