地図物語|共有スケートボード牽引区物語


MySQLが提供するst centro心関数の記事は前文で作成されています.
この文章では、st centro心関数と他のst x、st y関数を使用する例を書きたいと思います.
ZivikのユーザーアプリZikutterアプリを開き、ソウルエリアの地図を拡大すると、下図のように八角形の駐車禁止エリアが見えます.

ソウル市の政策によると、牽引区に駐車する際に牽引金を徴収するという概念があり、以下のようなイメージで駐車する際に牽引費を徴収する場合がある.

当初、この位置に駐車禁止区域はなく、ユーザーがその位置に駐車して引きずられた場合、そのユーザーに牽引費を徴収するが、この位置は駐車禁止区域に変更され、駐車自体が不可能になった.
横断歩道地下鉄の出入り口など多くの場所では、10 m以内に駐車禁止区域を描くべきだが、人がいちいち描けないため、地下鉄の出入り口や横断歩道などの場合、ソウル市が提供した公共データをアクセルで入力し、残りの区域を職員が直接追加する方法を選択した.このように働く.
私がそんな状況でやったことは...
3つの程度と言える

マークを八角形の牽引領域にする


私が最初にしなければならないのは、管理者が1つの点に重点を置く場合、その点を基準に半径内nmの八角形に設定する必要があります.
Naver Mapはタグとポリライン描画を提供していますが、点を1つクリックするとポリゴンを生成する関数検索も出てこないので、どうすればいいか分かりません.
自分でこの機能を作りましょう.考えてみましたが、方法は大体以下の通りです.
  • 牽引区の重点の位置にマークをつけます.
  • 撮影
  • にマークされたイベント(MarkerAdded)が発生した場合、Listenerにより検索され、そのポイントから8ポイントが取得される.
  • 8個のポイントを使用して、ドラゴンを追加します.
  • 初期に撮影されたタグは削除処理される.
  • はい.

    八角構想の作成

  • Latitude(1度)1 KM=1/109.95848912969955=0.0091
  • 低緯度(1度)1 KM=1/88.74=0.0113
  • lat 1m = (1/1000/109.958489129649955) = 0.00000909
  • lng 1m = (1/1000/88.74) = 0.00001127
  • 各緯度と経度の1 mについて、その数値は上記とは異なる.
    したがって,10 m以内にするためには,半径を5 m以内に制御すればよいと考えられ,5 m当たりの数値は以下のようになる.
  • lat 5m = 0.00000909 * 5
  • lng 5m = 0.00001127 * 5
  • 中点で長方形を描き、上、下、左、右(半径/2)に移動すると、八角形が生成され、論理が実現されると思います.

    上記の画像は、論理を作成する前に描画されます.
    大まかな八角形描画ロジックは次のとおりです.
    △私はすべてのコードを公開できないので、私が書いたコードだけをアップロードします.
    /**
     * marker 생성 시 폴리곤으로 만들어준다.
     */
    drawingManager.addListener('markerAdded', function (overlay) {
        const lat = overlay.position['_lat'];
        const lng = overlay.position['_lng'];
        //10mX10m
        const lat_radius = 0.00000909 * 5; //반경 5m정도로 폴리곤 그려주기
        const lat_radius2 = lat_radius / 2; //2로 나눈 이유는 정사각형 모서리를 기준으로 두개의 꼭지점을 만들어서 팔각형을 만들기 위함!!
        const lng_radius = 0.00001127 * 5; 
        const lng_radius2 = lng_radius / 2;
        //하나의 사각형
        const markerPolygon = {
            'max_lat': lat + lat_radius,
            'max_lng': lng + lng_radius,
            'min_lng': lng - lng_radius,
            'min_lat': lat - lat_radius
        };
    
        let polygon = [];
        //사각형을 기준으로 정팔각형을 그린다.
        if (lat !== 0 || lng !== 0) {
            //min_lat , min_lng
            polygon.push({'lat': markerPolygon["min_lat"] + lat_radius2, 'lng': markerPolygon["min_lng"]});
            polygon.push({'lat': markerPolygon["min_lat"], 'lng': markerPolygon["min_lng"] + lng_radius2});
    
            polygon.push({'lat': markerPolygon["min_lat"], 'lng': markerPolygon["max_lng"] - lng_radius2});
            polygon.push({'lat': markerPolygon["min_lat"] + lat_radius2, 'lng': markerPolygon["max_lng"]});
    
            polygon.push({'lat': markerPolygon["max_lat"] - lat_radius2, 'lng': markerPolygon["max_lng"]});
            polygon.push({'lat': markerPolygon["max_lat"], 'lng': markerPolygon["max_lng"] - lng_radius2});
    
            polygon.push({'lat': markerPolygon["max_lat"], 'lng': markerPolygon["min_lng"] + lng_radius2});
            polygon.push({'lat': markerPolygon["max_lat"] - lat_radius2, 'lng': markerPolygon["min_lng"]});
        }
        
        //해당 8개의 점으로 폴리곤 그리는 함수 호출
        지바이크_폴리곤_그리기_함수(polygon);
    
        overlay.setMap(null); //초기 선택했던 좌표에 대한 마커는 삭제한다.
    });
    今私たちはもう一つのことを完成しました.
    これらの内容は1つのタグしかありません.
    2番目のタスクは次のとおりです.

    ソウル市の公共データを八角形に押し込む


    ソウル市横断歩道&地下鉄出入り口の座標EXCELファイルはすでに他の職員に渡されており、仕事さえすればいい.
    シナリオは次のとおりです.
  • excel
  • を読む
  • の複文を回して、1つの座標を八角形にして保存します.
  • ギベック>当社のチームが現在使用している開発言語はPHPなので、JSで記述した内容をPHPコードに変換してExcelを受信して重複文を返すだけです.
    ロジック自体は上のJSコードと同じで、開発言語が違うだけなので追加しません!
    3番目のタスクは次のとおりです.

    ボナ、牽引区の大きさを大きくしてください!


    つぼみは私の会社の英語の名前です.🌝
    このように押し込まれた牽引領域は、アプリケーション上では小さく見え、いくつかの理由で、既存のサイズのN%程度のみを培養することが要求される.
    この時私がやったことです.
  • 挿入牽引領域選択
  • 各牽引領域の多角形に対してst centro心、st x、st y関数により中点を求める.
  • を使用して中点座標を求め、既存の論理で半径値だけを変更して八角形を作成し、update
  • はい!

    st_x, st_y, st_centroid


    st centro心は、前文に記載されているように、多段線の中点を求める関数である.
  • st x:longtute(硬度)
  • st y:latitude(緯度)
  • select 
    	st_x(st_centroid(geo_col)) as lng,
        st_y(st_centroid(geo_col)) as lat
    from
    	test_tb
    where 견인구역 조건;
    上記のSQL形式で経度と緯度を評価し、これらの値を使用して牽引領域の八角のサイズを大きくすることができます.
    牽引区の育成を要求されたとき、頭で検索したところ、st centro心、st x、st yという関数があり、安全に処理されていることがわかりました.
    それ以外にも、こまごました処理が施されているものもありますが、上記の3つのコンテンツラインだけを公開するのが正しいようです.🌝
    歩いていると、駐車してはいけない場所に停めているのか、倒れているのか、バイクを見ると心が痛む.
    誰もがきれいな駐車と安全運転のきれいなスケートボード文化を持ってほしい.
    私がやった牽引区に関する小さな仕事は、その文化の創造に役立つことを望んでいます.