昨日の補足:サーバを起動するWindowsユーザの種別について
昨日書き忘れた点。Windows 7の管理者権限ユーザ、標準ユーザ、ゲストユーザいずれでも、バッチファイルによるポータブル&アドホックなMySQLサーバ起動ができました。
当然ながらサーバのデータフォルダには、ユーザの書き込み権限が必要。またサーバ起動中はWindowsの一時フォルダ(環境変数TMPかTEMPの場所)にも書き込みが発生するので、特にゲストユーザではその場所を適切に作っておく必要がありますが、ともかくPostgreSQL Portableの時と同様に柔軟なデータベースサーバ利用が可能です。
↓ ゲストユーザで起動したmysqldコンソールと、一時フォルダに書き込まれてる様子。mysqldがデフォルトでWindowsのシステムログに書き込もうとするらしく、ゲストユーザではそれがブロックされエラーが出ますが(オレンジの線)サーバ自体は起動しています。
PostGISのshp2pgsql的なインポートツールは付属してない
ここから今日の本題。MySQLの日本語マニュアルにならって「空間データ」と書きます。意味はPostGISのジオメトリと同じ「点・線・面」の地理データです。
データ型や簡単な関数は以前のバージョンからあった一方、MySQL 5.7で関数が増えたり、関数名自体をST_の接頭辞に揃えるなど、何か新しい段階に入った感じはします。そう言えばPostGISは1.2 → 1.3の時に関数名をST_でリネームしてました。
で、マニュアルに空間データを入れる項 ↓ はあるものの、LINESTRING(0 0,1 1,2 2)のように簡単な座標群を直接クエリに書く例のみ。実際に空間データベースとして使うなら、最低限シェープファイルのインポートが必要になります。普通のデータでCSVをインポートするとの同様に。
PostGISの場合、付属のshp2pgsqlというコマンドラインツールでいったんシェープファイルをSQLファイルに変換し、それをpsqlに渡すのが基本的な手順。最近はpgAdminプラグインとしてGUIのインポートツールも付いてます。MySQLでは、マニュアルを見る限り、こうした実際のデータインポートに言及がない。
Percona社の解説にならい、シェープファイルをogr2ogrでインポート ①
調べた結果、Percona社という(PostgreSQLで言えばEnterpriseDB社みたいな?)企業のAlexander Rubinという人がブログ等でMySQL空間データの実際の利用例を述べており、下記スライドでogr2ogr(GDALのコマンドラインツール)を使ってました。
これは5.6での例ですが、今回の5.7.8rcでも使えると予想し、同じシェープファイル(米国の郵便番号別の区画、US Zip codes/boundaries)をインポートすることに。元データは下記。アメリカのセンサス局データはFTPでダウンロードできるらしく、日本もこうだといいなぁ。
ZIPのサイズは500MB、解凍すると800MBあり、最初のテストとしては結構重いけど…。
ZIPを適当な所に解凍したら次にogr2ogrの準備ですが、これがWindowsでは意外に面倒。今回ならったスライドではLinuxのことが少し書かれているだけなので、GDALの公式サイトからGDAL/OGR BinariesのWindowsの項を読み、そこからリンクされているGISInternals support siteのサイトへ行ってGDAL全体のダウンロードページ(Stable Releases)を開くと ↓ 何かいっぱいある(*_*)
とりあえず一番上がWin32だったのでそれをクリックすると ↓ また何か多くのダウンロード一覧が(*_*)
挫けずにリストを見て、一番上がCompiled binariesのZIPだったのでダウンロード&解凍し、binフォルダを開くと ↓ またファイルがいっぱいあってogr2ogrはどこ(*_*)
ConEmuを開いてDIRコマンドで下位フォルダを一気に探すと ↓ ようやくありました(´∀`;)
ogr2ogr.exeのあるフォルダに移り、まずバージョン表示させてみると ↓ 単独では動かずGDALのライブラリも必要らしい(*_*)
解凍した中に当然GDALのライブラリが入っていると思うけど、時間がなくなったので今日はここまで。何か消耗しました。MySQLの問題では全然ないとは言え、肝心のデータインポート用コマンドラインツールを外部に委ねると、Windowsでのハードルが急に上がってしまう。やっぱりshp2pgsqlが付属しているPostGISの方がいいなぁと思いつつ、明日に続きます。