Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak znaleźć dokładnie dane pomiędzy wybranymi obszarami przekątnymi w zapytaniu mysql

Aby wyeliminować punkty w zapytaniu obwiedni, ale nie w obrębie wielokąta, musisz użyć Punkt w wielokącie algorytm.

Najprostszym sposobem na to jest umieszczenie współrzędnych w tablicach. Można ich użyć do znalezienia maksymalnych i minimalnych współrzędnych zapytania oraz parametrów funkcji pointInPolygon().

Funkcja
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;
}

W kodzie mapy za pomocą 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);
});

Mapa uzyskana za pomocą Bounding Box i Point in Polygon.




  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 Great Circle Distance (wzór Haversine)

  2. Entity Framework + MySQL — dlaczego wydajność jest tak straszna?

  3. WebApp (Tomcat-jdbc) Połączenie z pulą bazy danych zgłaszające wyjątek porzucenia

  4. Docker — uruchom Apache na hoście i kontenerze dla różnych witryn

  5. Czy można użyć zmiennej zdefiniowanej przez użytkownika MySql w .NET MySqlCommand?