簡體   English   中英

在理論地理記錄中與給定坐標的距離

[英]Getting distance from given coordinates in doctrine geographical records

我正在開發一個Symfony 1.4項目,其中一個表具有“地理”模板。 本函數可以給出兩個記錄之間的距離,但不能給出記錄和給定坐標之間的距離。

如何以Symfony方式實現這種功能?

更具體地說:我需要按從給定緯度和經度坐標開始的降序對記錄進行排序

謝謝大家!

    $radius = 200;
    $lat = mysql_real_escape_string($zipcode1->getLatitude());
    $long = mysql_real_escape_string($zipcode1->getLongitude());
    $q = Doctrine_Query::create()
    ->select("j.address, j.longitude, j.latitude, (3959 * acos(cos
(radians('".$lat."')) * cos(radians(latitude)) * cos(radians
(longitude) - radians('".$long."')) + sin(radians('".$lat."')) * sin
(radians(latitude)))) AS distance")
    ->from("Job j")
    ->having("distance < ?", $radius)
    ->orderBy("distance desc");
    $results = $q->execute(); 

在此處找到此文件: http : //groups.google.com/group/doctrine-user/browse_thread/thread/5f4042649c9fa275

我猜想,更“ symfony”的方法是編輯模型,以便有如下功能:

$distance = $locationModel->DistanceFrom($anotherLocation);
$locations = LocationModel::GetLocationsClosestTo($lat, $long);

對於我的應用,我將經/緯度存儲為小數,如下所示:

latitude: {type: decimal(4), scale: 4}
longitude: {type: decimal(4), scale: 4}

由於Google Maps api返回經緯度,最多包含4個小數位

這聽起來不像是一種“ symfony方式”。 要從給定的緯度和經度坐標以遞減的距離從數據庫中檢索數據,只需以常規方式使用Doctrine DQL查詢即可。 但是,您確實需要了解一些關於實際距離的上升/下降緯度或經度含義的基礎知識。 我的意思不是說任何GIS專業知識,而是地圖上哪個緯度更高的方向。 這將使您能夠構造上升/下降學說查詢。

為了計算兩個緯度/經度之間的真實距離,我建議創建一個自定義輔助函數,您將緯度和經度傳遞給該函數並返回距離。 這完全是另一個問題與答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM