[Turf.js]指定した範囲に等間隔にポイント(ポイントグリッド)を生成する
ポイントグリッドを生成する
bboxで指定した範囲に、任意の間隔でポイントグリッドを生成します。
1 2 3 |
var bbox = [-70.823364, -33.553984, -70.473175, -33.302986]; var pointGrid = turf.pointGrid(bbox, 3, {units: 'kilometers'}); //-> point grid geojson |
leafletを使ったサンプル
描画ツール(四角)で描画された範囲をポイントグリッドで埋めます。
あまり広い範囲を選択すると、処理の負荷が高すぎてブラウザが固まるor落ちます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
var mymap = L.map('mapid').setView([36.3426631, 138.6092733], 13); L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', { attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', maxZoom: 18, id: 'mapbox.streets', accessToken: 'Mapboxのアクセストークンを記載' }).addTo(mymap); var controler = mymap.pm.addControls({ position: 'topleft', drawMarker:false, drawPolyline:false, drawRectangle:true, drawPolygon:false, drawCircle: false, editMode:false, dragMode:false, cutPolygon:false, removalMode:false, }); //図形が生成された時に発火するイベント mymap.on('pm:create', function(e){ //生成したrectangの座標を取得する var bbox = e.layer.getBounds().toBBoxString().split(",") .map(function(d){ return +d }); //ポイントグリッドを作成する var pointGrid = turf.pointGrid(bbox, 0.5, {units: 'kilometers'}); L.geoJSON(pointGrid).addTo(mymap); }); |