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

cách tìm dữ liệu chính xác giữa vùng đường chéo đã chọn trong truy vấn mysql

Để loại bỏ các điểm trong truy vấn hộp giới hạn của bạn nhưng không nằm trong đa giác, bạn yêu cầu sử dụng Điểm trong đa giác thuật toán.

Cách dễ nhất để làm điều này là có các tọa độ trong các mảng. Chúng có thể được sử dụng để tìm tọa độ tối đa và tối thiểu cho truy vấn và cho các tham số cho hàm pointInPolygon ().

function pointInPolygon(polySides,polyX,polyY,x,y) {
 var j = polySides-1 ;
  oddNodes = 0;
  for (i=0; i<polySides; i++) {
    if (polyY[i]<y && polyY[j]>=y  ||  polyY[j]<y && polyY[i]>=y) {
        if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x)  {
            oddNodes=!oddNodes; 
        }
    }
   j=i; }

  return oddNodes;
}

Trong mã Bản đồ của bạn, sử dụng jQuery getJSON ()

var polySides = 4;//number of points in polygon
//horizontal Latitude coordinates of polygon  
var polyLat = new Array();
polyLat[0] = 51.5;
polyLat[1] = 51.5;
polyLat[2] = 52.5;
polyLat[3] = 53;
polyLat[4] = 51.5;//First point repeated to close polygon
//vertical Longitude coordinates of polygon 
var polyLng =  new Array();
polyLng[0] = 0.5;
polyLng[1] = -1.9;
polyLng[2] = -1;
polyLng[3] = 0.6;
polyLng[4] = 0.5;
//Coordinates for bounding box
var maxLat = Math.max.apply(null,polyLat);
var minLat = Math.min.apply(null,polyLat);
var maxLng = Math.max.apply(null,polyLng);
var minLng = Math.min.apply(null,polyLng);

//Using jQuery
var url = "yourFile .php";
 url +="?maxLat="+maxLat +"&minLat="+minLat +"&maxLng="+maxLng +"&minLng="+minLng;
 $.getJSON(url,function(data) {
    $.each(data.marker,function(i,dat){
        if (pointInPolygon(polySides,polyLat,polyLng,dat.lat,dat.lng)){
            var latlng = new google.maps.LatLng(dat.lat,dat.lng); 
            addMarker(latlng,dat.name);
            bounds.extend(latlng);
        }
    });
    map.fitBounds(bounds);
});

Bản đồ thu được bằng cách sử dụng Hộp giới hạn và Điểm trong Đa giác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - length () so với char_length ()

  2. MySQL đang chuyển đổi các giá trị dấu thời gian của tôi thành 0000-00-00

  3. Tải hình ảnh lên máy chủ và lưu trữ đường dẫn hình ảnh trong cơ sở dữ liệu mysql

  4. Hành vi BẬT XÓA mặc định của MySQL là gì?

  5. cách thay đổi thời gian chờ cho các kết nối liên tục mysql