簡體   English   中英

獲取多邊形的中心和最遠點以在mysql中按半徑擴展區域

[英]Get center and furthest point of polygon to extend area by radius in mysql

因為我的另一個問題沒有成功( 如何在PHP / Mysql中將多邊形擴展一定距離? ),我想找到一個更簡單的解決方案。

我有一個地方表(由lat和lng定義)和一個位置表(多邊形存儲為幾何)。 我需要的是在多邊形+特定半徑(例如1/4英里)內搜索mysql中的記錄。

有一個函數ST_Centroid用於獲取多邊形的中心點但是如何獲得中心點和最遠點之間的距離以獲得圓的擴展半徑?

在此輸入圖像描述

圓是最簡單的解決方案,如何擴展多邊形,但總比沒有好。

這是獲取多邊形最遠點的計算。 $ polygon$ centroid取自數據庫(在mysql: ST_AsText(polygon),ST_AsText(ST_Centroid(polygon)) )並轉換為數組。

function get_max_point ($polygon,$centroid) {
  foreach ($polygon AS $point) {
    $distance = (sin(deg2rad($centroid['lat'])) * sin(deg2rad($point['lat']))) + (cos(deg2rad($centroid['lat'])) * cos(deg2rad($point['lat'])) * cos(deg2rad($centroid['lng'] - $point['lng'])));
    $distance = acos($distance);
    $distance = rad2deg($distance);
    $distance = $distance * 60 * 1.152;
    if($distance>$distance_max) $distance_max=$distance;
  }
  return (round($distance_max,2));
}

暫無
暫無

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

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