sql >> データベース >  >> RDS >> Mysql

mysqlクエリで選択した対角領域間のデータを正確に見つける方法

    バウンディングボックスクエリ内でポリゴン内ではないポイントを削除するには、ポリゴン内のポイントを使用する必要があります。 アルゴリズム。

    これを行う最も簡単な方法は、座標を配列にすることです。これらを使用して、クエリおよび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;
    }
    

    マップコードで、 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);
    });
    

    バウンディングボックスとポリゴンの点を使用して取得したマップ。




    1. Mysql:テーブルを作成するときにDATETIMEの形式を「DD-MM-YYYYHH:MM:SS」に設定します

    2. SQLSelectの今後の誕生日

    3. PostgreSQLを使用している場合、役割が存在せず、データベースを作成できません

    4. ClusterControlを使用してPostgreSQLをDockerコンテナにデプロイする方法