javascript gis ライブラリ turf.js 入門
TRANSCRIPT
turf.jsとは• 軽量・高速・オープンなWeb地図用のGISライブラリ
• 米国 MapBox社が開発・公開
• クライアント(Webブラウザ)、サーバ(Node.js等)両方で実行可能
http://turfjs.org/static/docs/ドキュメントサイト
できる事:空間計測・関係• 重心・中心点の算出 :Centroids and centers
• 集合・統計関数 :Aggregation & stastics functions
• バッファ分析:Buffer analysis
• TIN(不整三角形網):Triangulated irregular networks
• クラスタリング:Data classification
• 距離計算:Distance calculations
(一部抜粋)
できる事:空間編集処理• 簡略化:Simplify features
• 結合・併合:Union ・Merge
• 凹・凸包処理 :Concave & convex hulls
• 補間:Interpolation
• 矩形・六角形 グリッド出力:Grids・Hexagonal binning
• フィルタリング・選択:Filter / select by attribute
(一部抜粋)
導入方法• Webに公開されたデータをリンクする
<script src='//api.tiles.mapbox.com/mapbox.js/plugins/turf/v1.4.0/turf.min.js'></script>
そのまま貼り付け、ダウンロードして利用して下さい
処理内容1. GeoJSON形式の地点(新宿・代々木)の作成
2. 距離計算単位の宣言
3. 距離計測関数による距離計算の実行
サンプルコード https://github.com/tkama/turf_sample/blob/gh-pages/turf.distance.html
1.GeoJSONの作成//新宿駅のGeoJSONデータ var point1 = { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.70058739185333,35.68956144849349] } }; //代々木駅のGeoJSONデータ var point2 = { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.7020572423935,35.683975674120234] } };
2.距離計算単位の宣言//単位を表現する文字列を変数に入力 var units = "kilometers"; //can be degrees, radians, miles, or kilometers
選択可能な単位 • 度:degrees • ラジアン : radians • マイル : miles • キロメートル : kilometers
3.距離計算の実行//距離計算 turf.distance( 地点1, 地点2, 計算単位 ); var distance = turf.distance( point1 , point2 , units );
//実行結果 0.635336862243156
計算の結果 2駅間の直線距離は 約635m
処理内容1. GeoJSON形式の地点(新宿駅)の作成
2. 距離計算単位の宣言
3. バッファ作成関数 turf.bufferによる空間演算
サンプルコード https://github.com/tkama/turf_sample/blob/gh-pages/turf.buffer.html
1.GeoJSONの作成//新宿駅のGeoJSONデータ var point1 = { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.70058739185333,35.68956144849349] } };
2.距離計算単位の宣言//単位を表現する文字列を変数に入力 var units = "meters";
選択可能な単位 • 度:degrees • フィート : feet • マイル : miles • キロメートル : kilometers • メートル : metrs
3.バッファの作成//単位を表現する文字列を変数に入力 var buffered = turf.buffer( point1 , 500 , units );
//地図に追加L.geoJson(buffered).addTo(map);
turf.buffer関数 • 第1引数:地物型 / 複合地物型(点、線、面、複合型) • 第2引数 : 数値型 半径 • 第3引数 : 文字列型 単位('miles', 'feet', 'kilometers', 'meters', or 'degrees')
• 戻り値:地物型 / 複合地物型(面)