以前、googlemapとopenlayersの距離計測について投稿。
googlemap APIもV3になり距離計算のAPIも変更されたようなので弊社の距離計算ツールとgooglemapの距離計算機能の差についてあらためて再考。
西武池袋線の清瀬駅とひばりが丘駅の距離をベースに調査。
清瀬駅の座標
139.51989499999999111、35.77196299999999951
ひばりが丘駅の座標
139.54577000000000453、35.75142900000000168
※座標は国土数値情報より入手
googlemapの距離測定機能で測ると3.26kmと表示される。
※googlemapの地図はAPIを介して表示しないと著作権的に問題があるのでぼやかして表示
地図上のポイントをクリックして距離計測を行なうので誤差の発生を考慮して、google map apiでも計測。
var from = new google.maps.LatLng( 35.77196299999999951,139.51989499999999111); var to = new google.maps.LatLng( 35.75142900000000168,139.54577000000000453); var distance = google.maps.geometry.spherical.computeDistanceBetween(from, to);
やはりこちらも3269mと表示される。
弊社のの距離計測TOOLで計算すると3265mになる。
コード,緯度,経度,名称,名称,コード,緯度,経度,名称,名称,距離,円半径 1,35.77196299999999951,139.51989499999999111,清瀬駅,清瀬駅,2,35.75142900000000168,139.54577000000000453,ひばりが丘,ひばりが丘,3265,10000 2,35.75142900000000168,139.54577000000000453,ひばりが丘,ひばりが丘,1,35.77196299999999951,139.51989499999999111,清瀬駅,清瀬駅,3265,10000
その差は4m、約0.1%の差が発生する。
国土地理院の距離と方位角の計算でもやはり3269mとなる。
google.maps.geometry.spherical.computeDistanceBetweenは3番目の引数に半径を渡すことができる。
つまり地球を楕円体ではなく球体として計算をしていることが分かる。
※デファルトでは半径を6378137mとしているようだ。
その為、誤差が発生している。