Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL 8.0にShapeファイルをインポートする

MySQL 8.0にShapeファイルをインポートする

2019年6月8日に開催された「第10回 関西DB勉強会」での発表資料です。
MySQL 8.0にShapeファイルをインポートする方法について解説しています。

※第10回 関西DB勉強会
 https://kansaidbstudy.connpass.com/event/126970/

YoshiakiYamasaki

June 08, 2019
Tweet

More Decks by YoshiakiYamasaki

Other Decks in Technology

Transcript

  1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    MySQL 8.0にShapeファイルをインポートする updated: 2019/06/10 Yoshiaki Yamasaki / 山﨑 由章 MySQL Senior Sales Consultant, Asia Pacific and Japan
  2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    Safe Harbor Statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするも のではない為、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、 弊社の裁量により決定されます。
  3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    Shapeファイルとは? • 他の地理情報システム(GIS)間でのデータの相互運用における オープン標準として用いられるファイル形式 • ポイント、ライン、ポリゴンなどを保存できる • 単一のファイルではなく、複数ファイルから構成されている – 複数ファイルを同一フォルダに格納して使用する 3
  4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    やること • e-Stat(政府統計の総合窓口)からダウンロードしたShapeファイルを GDAL 2.3.2のogr2ogrを使ってMySQL 8.0にインポートし、 MySQL Workbenchのジオメトリビューアーで表示する • Googleマップで市町村の形を確認し、 MySQL Workbenchの ジオメトリビューアーから確認した形と一致していることを確認する 4
  5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    e-StatからのShapeファイルのダウンロード • e-Stat https://www.e-stat.go.jp/ • e-StatからShapeファイルをダウンロードする手順 – e-StatからShapeファイルをダウンロードする https://www.youtube.com/watch?v=2eBWFQizBjU 5
  6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    デモで使用したコマンド 1. MySQL上にテスト用のスキーマ(geotest)を作成 2. ogr2ogrを使って沖縄県のShapeファイルをgeotestデータベースに インポート 3. MySQL上に作成されたテーブルの確認 7 mysql> create database geotest; C:¥> ogr2ogr.exe -f "MySQL" MySQL:"geotest,host=127.0.0.1,user=root, password=root,port=3306“ C:¥work¥e-Stat¥h27ka47.shp mysql> USE geotest; mysql> SHOW TABLES; mysql> SHOW CREATE TABLE geotest.geometry_columns¥G mysql> SHOW CREATE TABLE geotest.h27ka47¥G
  7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    デモで使用したコマンド 4. インポートされたデータを確認 5. MySQL Workbenchのジオメトリビューアーで 「沖縄県那覇市牧志3丁目」のポリゴンデータを確認する際に実行した SQL 6. Googleマップで「沖縄県那覇市牧志3丁目」の形を確認 8 mysql> SELECT OGR_FID, HEX(SHAPE), pref_name, city_name, s_name FROM geotest.h27ka47 LIMIT 1¥G mysql> SELECT OGR_FID, ST_AsText(SHAPE), pref_name, city_name, s_name FROM geotest.h27ka47 LIMIT 1¥G SELECT OGR_FID, SHAPE, pref_name, city_name, s_name FROM geotest.h27ka47 WHERE OGR_FID=51;
  8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    参考:MySQL Workbenchのジオメトリビューアーでの確認結果 9
  9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    現状の課題 ※このスライド以降は、発表時間の関係で当日説明しきれなかった点ですが、 資料公開時に追記しています。 10
  10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    現状の課題 • 文字コードがSJISのShapeファイルをogr2ogrでインポートした際に、 エラーが発生するケースがある • この問題についてGDALのissueを登録しました – ogr2ogr with MySQL 8 (Shape file import error) #1089 https://github.com/OSGeo/gdal/issues/1089 • 文字化けが原因と思われます – エラー発生時のINSERT文では、文字列データの区切りとなるシングルクォートが 欠けていました – 該当ファイルの文字コードをUTF-8に変換することでエラーを回避できました 11
  11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    現状の課題 • 「ogr2ogrにSQLスクリプトを作成するオプションを追加して欲しい」という 機能追加リクエストも登録しました(優先度が低いと判断されていますが) – Feature request: Create SQL Script option to ogr2ogr #1090 https://github.com/OSGeo/gdal/issues/1090 12
  12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    、、、とGDALに頼ってしまって いますが、 13
  13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    本音を言えばMySQLが提供する Shapeファイルをインポートする ためのツールも欲しい 14
  14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    Affects me 大歓迎です!! Bug#90023: [Feature request] Shape File import/export tool https://bugs.mysql.com/bug.php?id=90023 15