Friday, October 11, 2013

技術|MySQLにシェープファイル(*.shp)をインポートする (Mac OS X 10.8.4)

以前の記事で、シェープファイル(shpfile)をPostgreSQLにインポートをしました。今度はogr2ogrを利用して、MySQLでシェープファイルのインポートを行ってみます。


0.リファレンス



1. ogr2ogrについて


地理情報のデータフォーマットの変換では、GDAL (Geospatial Data Abstraction Library)にある、ogr2ogrコマンドを使います。シェープファイル専用という訳ではなく、対応するフォーマットならいかようにも変換してくれます。

2.MySQLへのインポート


MySQLにシェープファイルをインポートするには、ogr2ogrに以下の引数をつけて実行します。引数は、したいことによって変わるかと思いますので、リファレンスのご一読をお勧めします。
user$ ogr2ogr -s_srs (シェープファイルのEPSGコード)-f MySQL MySQL:(データベース名),user=(ユーザー名),host=(ホスト名),password=(パスワード) (インポートするシェープファイル名) -lco engine=MYISAM,CHARSET=utf8 -nln (テーブル名)-append
例)
user$ ogr2ogr -s_srs EPSG:2451 -f MySQL MySQL:db_name,user=hogehoge,host=localhost,password=hoge test.shp -lco engine=MYISAM,CHARSET=utf8 -nln test_table -append

-s_srs で投影系のSRIDを渡します。例の場合、EPSG:2451ですから平面直角座標系(GRS80)9系ということです。わからなければ、QGISなどでシェープファイルを開いてみたりすると調べることができます。

-f MySQL以下はデータベースへの接続に必要な情報を入れます。

-lcoでは、MySQLに向けて環境変数を渡します。MySQLではいくつかのデータベースエンジンを利用できますが、地理情報はMyISAMでしか扱えないため、きちんと設定してあげます。また、文字コードはutf=8を利用することもあわせて知らせます。

-nln 以下は作り出すテーブルの名前です。

-appendはデータベースにテーブルを追加するという意味です。

3.MySQLでの確認


テーブル内をそのまま確認すると、ポリゴンなどのデータが文字化けします。geometry型のカラムをのぞきたいときは、下記のようなSQL文を使います。

例)
SELECT ASTEXT(カラム名) as geomtext FROM テーブル名;

ASTEXT()だけでなくX(カラム名)やY(カラム名)で経度緯度が取り出せます。

No comments: