この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。
内容が古くなっている可能性がありますのでご注意下さい。
地球上の同じ地点であっても、その座標を表すために用いられた測地系によって、緯度経度の値が異なる場合があります。
最近では、WGS84(世界測地系1984)が用いられることが多いですが、日本の場合、2002年4月1日に世界測地系を導入するまでは、日本測地系(旧日本測地系、Tokyo Datum)と呼ばれる測地系を用いていました。ややこしいことに、2002年に導入された測地系は日本測地系2000(JGD2000)とも呼ばれています。
そこで、
- 世界測地系1984(WGS84)
- 旧日本測地系(Tokyo)
- 日本測地系2000(JGD2000)
の3種類において、どのようなズレが生じるのか、簡単なプログラムによってQGIS上で実験してみました。結果は以下のようになり、旧日本測地系(Tokyo)は大きくズレていたものの、世界測地系1984(WGS84)と日本測地系2000(JGD2000)はポイントが重なって目視ではズレを確認できませんでした。
実験に用いたのは以下のPythonスクリプトです。
dictCrs = {'JGD2000':'4612', 'WGS84':'4326', 'TOKYO':'4301'} dictPoint = {'Hokkaido':'141.34694,43.06417', 'Tokyo':'139.69167,35.68944', 'Fukuoka':'130.41806,33.60639', 'Okinawa':'127.68111,26.2125'} for crs, epsg in dictCrs.items(): newLayer = QgsVectorLayer('Point?crs=epsg:' + epsg, crs, 'memory') QgsProject.instance().addMapLayer(newLayer) newLayer.startEditing() newLayer.addAttribute(QgsField('Ken', QVariant.String)) for ken, lonlat in dictPoint.items(): lon, lat = lonlat.split(',', 1) newFeature = QgsFeature(newLayer.fields()) newFeature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(float(lon), float(lat)))) newFeature.setAttribute('Ken', ken) newLayer.addFeature(newFeature) newLayer.commitChanges() newLayer.updateExtents()
3種類の測地系と4県(北海道、東京、福岡、沖縄)の県庁所在地をディクショナリで定義しています。県庁所在地の緯度経度はこちらのサイトを参考にし、測地系はWGS84とのことです。
測地系のディクショナリを列挙してレイヤを作成し、さらにその中に県庁所在地のポイントを作成しています。
プログラムの実行には、QGISのPythonコンソールを使用します。
「プラグイン」メニューから「Pythonコンソール」を選択すると、Pythonコンソールが表示されます。
「エディタの表示」ボタンをクリックします。
上記のプログラムを読み込み、「スクリプト実行」ボタンをクリックします。
3つのレイヤが作成され、マップキャンバスにはポイントが4つ(に見える)表示されます。
背景地図を表示させると、北海道、東京、福岡、沖縄にポイントがあることが分かります。
東京のポイントにズームすると、旧日本測地系(Tokyo)は他の2つ(WGS84、JGD2000)とズレていることが分かります。
線の長さを測ると、450m以上ズレていることが分かります。