7
5

More than 3 years have passed since last update.

MySQLに対応したogr2ogr(GDAL)をインストールする方法まとめ

Last updated at Posted at 2019-12-01

※本記事はRDBMS-GIS Advent Calendar 2019の1日目の記事です。

はじめに

現時点(2019/12/1)では、MySQLにシェープファイルをインポートするにはogr2ogrというGDALというライブラリに含まれるコマンドラインツールを利用するのが一般的です。

ただ、GDALをインストールする方法がいくつか存在するため、慣れていないと「どれを使うのが良いの?」と戸惑います。本記事は「これからogr2ogrを使ってMySQLにシェープファイルをインポートしたい」という人用におすすめの方法をまとめておきます。

PostGIS使いもシェープファイル以外のファイルをシェープファイルに変換する際等にogr2ogrを使えるので有用かもしれません。

GDALインストール方法の選基準は下記です。

  • MySQLドライバが有効な状態でビルドされていること。
    • MySQLのインポートに必要であるため。
  • 最新(に近い)ソースでビルドされていること。
    • MySQLドライバの開発スピードが早いため。(古いと致命的なバグもある)

ogr2ogrを使ったシェープファイルのインポートについては本記事ではあまり説明しません。本記事ではあくまでGDALのインストール方法について解説します。

ogr2ogrを使ったMySQLへのシェープファイルのインポート方法については下記記事を参照して下さい。

結論

公式で配布されてるDockerイメージ使うのが最も手っ取り早いです。

ただ、ogr2ogrのためだけににDockerを使うのはオーバーヘッドが大きすぎるのも事実です。

ので、各プラットフォーム毎でいえば下記もおすすめです。

  • Windows
    • OSGeo4W
    • GISInternals
  • Linux
    • ソースからコンパイル

以降はそれぞれの方法についての解説です。

Dockerイメージを使う(Windows/Mac/Linux共通)

Dockerエンジンのインストールや使い方については省略します。

GDALのDockerイメージは下記で配布されています。

まずはイメージを準備しましょう。いくつかイメージが用意されていますが、使うのはosgeo/gdal:ubuntu-full-latestである点に注意して下さい。(MySQLドライバが含まれるため)

 $ docker pull osgeo/gdal:ubuntu-full-latest

コンテナを起動します。ここではホストの/home/ディレクトリをマウントしています。

 $ docker run -v /home:/home -it --rm osgeo/gdal:ubuntu-full-latest

コンテナに入ったら、こんな感じでシェープファイルの文字コードを変換したり、MySQLにインポートしたりできます。

 root@43dd82bfeb90:/# cd [シェープファイルが格納されたディレクトリ]
 root@43dd82bfeb90:/# ogr2ogr -f "ESRI Shapefile" -lco ENCODING=UTF-8 -oo ENCODING=CP932 [変換後のシェープファイル名] [変換前のシェープファイル名]
 root@43dd82bfeb90:/# ogr2ogr -f "MySQL" "MySQL:[MySQLのデータベース名],host=[MySQLのホスト名],user=[MySQLのユーザ名],password=[MySQLのパスワード]" [変換後のシェープファイル名]

Windows

Windowsの場合はOSGeo4WやGISInternalsで配布されているインストーラを使うのがお手軽です。

OSGeo4Wを使う場合は、インストールするGDALのバージョンが選択できるので、最新版を選ぶと良いでしょう。
どちらもMySQLドライバが有効な状態でビルドされているようです。

Linux

ソースからのコンパイルについてはこちらの記事で紹介しています。MySQLを有効にするのを忘れないようにしましょう。

OSのパッケージリポジトリに登録されているGDALを使うと、本記事執筆時点ではバージョンが古かったりMySQLドライバが有効でなかったりするのでおすすめしません。

Mac

未調査です。私はDockerを使っています。

まとめ

shp2mysqlみたいなコマンドが早くできたら、わざわざこんな面倒な作業しなくて済むんですけどね。

という機能追加リクエストも出ているので「Affects me」すると優先順位が上がるかもしれないのでおすすめです。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5