Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm điểm trong đa giác PHP

Đây là một hàm tôi đã chuyển đổi từ một ngôn ngữ khác sang PHP:

$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424);    // x-coordinates of the vertices of the polygon
$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // y-coordinates of the vertices of the polygon
$points_polygon = count($vertices_x) - 1;  // number vertices - zero-based array
$longitude_x = $_GET["longitude"];  // x-coordinate of the point to test
$latitude_y = $_GET["latitude"];    // y-coordinate of the point to test

if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){
  echo "Is in polygon!";
}
else echo "Is not in polygon";


function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)
{
  $i = $j = $c = 0;
  for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i++) {
    if ( (($vertices_y[$i]  >  $latitude_y != ($vertices_y[$j] > $latitude_y)) &&
     ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) )
       $c = !$c;
  }
  return $c;
}

Bổ sung: Để biết thêm các chức năng, tôi khuyên bạn nên sử dụng lớp polygon.php có sẵn tại đây Tạo Lớp bằng cách sử dụng các đỉnh của bạn và gọi hàm isInside với điểm kiểm tra của bạn làm đầu vào để có một chức năng khác giải quyết vấn đề của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 'pip install MySQL-python' không thành công với 'IndexError'

  2. MySQL:Làm thế nào để truy xuất một hàng ngẫu nhiên hoặc nhiều hàng ngẫu nhiên?

  3. mysql tham gia truy vấn thứ tự theo hai cột

  4. SubSonic 3 và MySQL, xóa dấu gạch dưới khỏi tên cột trong phương thức CleanUp () gây ra ngoại lệ khi sử dụng thuộc tính trong truy vấn linq

  5. Tự động hóa mysql_secure_installation bằng lệnh echo thông qua tập lệnh shell