日本測地系から世界測地系に変換する方法

Exploratoryのマップでは、世界測地系を使用しています。データが日本測地系の場合、経度緯度マップで可視化した時に多少位置がずれてしまうことがあります。

そのため、日本測地系から世界測地系に変換するための方法を紹介します。

spとrgdalパッケージをインストールする

日本測地系から世界測地系に変換するために、spとrgdalという2つのパッケージをインストールします。

プロジェクト一覧またはプロジェクト内のメニューからRパッケージの管理を選択します。

Rパッケージの管理のダイアログが表示されます。

パッケージをインストールをクリックします。

CRANからspとrgdalパッケージをインストールします。

spと入力してインストールボタンをクリックします。

rgdalと入力してインストールボタンをクリックします。

パッケージをインストールすることができたら、インストール済みパッケージからspとrgdalにチェックマークがついているか確認します。

Rスクリプトを作る

日本測地系から世界測地系に変換するためのRスクリプトを作成していきます。

スクリプトのプラスボタンからスクリプトを選択します。

スクリプト名に任意の名前をつけて作成ボタンをクリックします。

Rスクリプトのエディタが開かれました。

下記のRスクリプトをコピーして、エディタにペーストします。

convertJapanToWorldGeodetic <- function(df, lon.col.name, lat.col.name) {
  library(sp)
  library(rgdal)
  # Create a data frame for conversion.
  loc <- data.frame(latitude=df[[lat.col.name]], longitude=df[[lon.col.name]])  
  # Create spatial point object.
  coordinates(loc) <- c("longitude", "latitude")
  # Set Japan geodetic system.
  proj4string(loc) <-  CRS("+proj=longlat +ellps=bessel +towgs84=-146.336,506.832,680.254,0,0,0,0 +no_defs")
  # Convert Japan geodetic system to World geodetic system.
  loc <- spTransform(loc, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
  df[[lat.col.name]] <- loc$latitude
  df[[lon.col.name]] <- loc$longitude
  df
}

保存ボタンをクリックします。

これで日本測地系から世界測地系に変換する準備が整いました!

日本測地系から世界測地系に変換する

今回は日本の市区町村データを使用します。

ステップメニューからカスタムRコマンドを選択します。

カスタムRコマンドには、下記を入力します。

convertJapanToWorldGeodeticは、先程作成したRスクリプトの関数を呼んでいます。

お手持ちのデータに合わせて経度や緯度の列名を引数として指定します。

convertJapanToWorldGeodetic(<経度列名>, <緯度列名>)

入力できたら実行ボタンをクリックします。

これで、日本測地系から世界測地系へと変換することができました。

地図の経度緯度を使って確認します。

チャートからタイプに地図 - 経度/緯度を選び、グループ化に市区町村詳細を選びます。

チャートピンは測地系を変換する前のステップを選びます。

神奈川区に注目してみると、横浜新道という道路の近くにプロットされていることが確認できます。

チャートピンを測地系を変換したRコマンドのステップにドラッグ&ドロップで移動します。

測地系が変換されたことにより、神奈川区は先ほどよりも左上にプロットされていることが確認できました。

参考記事

他にも地図に関するノートがありますので、興味のある方はぜひご覧になってください。