ESRI Personal Geo Database(mdb)ファイルの読み込ませ方

712 views
Skip to first unread message

sakuya_izayoi

unread,
Oct 2, 2018, 3:49:49 AM10/2/18
to QGIS初心者質問グループ
こちらsakuya_izayoiのizayoiです。
お世話になります。
表題の通りのESRI Personal Geo Database(mdb)ファイルをQGISで読み込む方法を探しております。
上記ファイル自体はQGISで対応はしているみたいなのですが、参考URL
を読むと、どうにも中に日本語が入っていると駄目みたいでして難儀な事態になっております。


どうにかしてQGISで読み込める形に変換してみたいのですが可能なものでしょうか?
持っているファイルを投稿することが出来ないため、文字だけでの質問になり申し訳ありません。
なにか良い読み込み方法があれば教えてください。

adachi

unread,
Oct 2, 2018, 4:08:34 AM10/2/18
to QGIS初心者質問グループ
izayoi様

URL先の記述を見ると
「mdbがある階層とmdb自体に日本語が使われていると」エラーになる
とありますが、
mdbの名前を英字にしてCドライブ直下等に置いてもダメでしょうか。

単純なことなのでとっくに試されているかもしれませんが…

sakuya_izayoi

unread,
Oct 2, 2018, 4:21:42 AM10/2/18
to QGIS初心者質問グループ
adachiさま
階層とファイル名は半角英字に変えて実行しております。

あとは、レイヤの追加を行う時に赤枠内に

望んでいる書式にアクセスはできるみたいなのですが、こいつに読み込まさせる方法が分かりません。
これに関しても分かりやすい資料や方法を教えて頂けたら嬉しいです。

adachi

unread,
Oct 2, 2018, 4:25:09 AM10/2/18
to QGIS初心者質問グループ
izayoi様

連投すみません。

解決の方向が違うかもしれませんが、海外のサイトに以下の方法が投稿されておりました(64bitバージョンのQGISを使用している場合のみ)。


1.  Microsoft Access Database Engine 2010 Redistributable をダウンロード



2. ダウンロードしたexeファイルでインストール。ただし、
 ・32bitのオフィスをPCにインストールしていない場合 → そのままexeファイルを実行
 ・32bitのオフィスをPCにインストールしている場合 → コマンドプロンプトでexeファイルを実行、このとき末尾に /passive を付ける
  例:(exeファイルがある階層)/AccessDatabaseEngine_x64.exe /passive


3. qgis.batファイルを探し出して以下の2行を追加(通常 C:\OSGeo4W64\bin\qgis.bat のようなところにあるようです

set OGR_SKIP=ODBC
set PGEO_DRIVER_TEMPLATE=DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%%s


4. QGISを起動、mdbをドラッグ&ドロップで追加できるようになる

sakuya_izayoi

unread,
Oct 2, 2018, 4:52:09 AM10/2/18
to QGIS初心者質問グループ
adachiさま
上記の方法を実施してみました。
無効なデータソースですと言われてしまいました。

QGIS自体は64bitを使っていて、32bitオフィスをインストールしているため
AccessDatabaseEngine_x64.exe /passive
でインストール後、ご指示通りのを実行しましたがダメっぽい。

ファイル自体はArcGISで間違いなく見れるというみたいなので、ファイル自体には問題ないみたいです。

adachi

unread,
Oct 3, 2018, 11:00:50 PM10/3/18
to QGIS初心者質問グループ
izayoi様

いろいろと無駄足を踏ませてしまったようですみません。
うまく読み込ませる方法はわからないままですが、いくつかわかったことがあるので共有します。


◯Personal Geodatabase(mdb)の読み込み
 
 
 このページを読んでみると、おっしゃるように「ベクタデータの追加」 → 「データベース」オプションは、mdbの読み込みには役に立たないみたいです。
 読み込み方法としては「ファイル」オプションでmdbファイルを選択、あるいはブラウザパネルで右クリック→追加 しかないようです。
 (↑この追加時点でエラーが出る、ということですよね)


◯ESRI特有のデータベースファイルを読み込む方法

 mdbのサンプルは見つけられませんでしたが、gdbの形式はダウンロードできるところがありましたので試してみました(ただし日本語データは入っていない)。
 gdbフォルダの場合は
 「ベクタデータの追加」 → 「ディレクトリ」オプションでタイプを「Open File GDB」にセット、データソースにgdbフォルダを指定
 で読み込めました。

 ということで、以下は実際にやってないので正しくできるかなんとも言えませんが
 上記、ご提示のサイト内にあった「ogr2ogr」コマンドを使ってmdb ⇒ gdbあるいはSQLiteやPostGISなどQGISで読み込みやすい?形式に変換してみるのはどうでしょうか。
 
 データ提供元に「mdbではなくgdbフォルダの形でもらう」という手段もありかと思いますが
 それだとshapeにしてもらったほうが早いかもですね。


以上、サンプルがないので漠然とした回答で申し訳ないですが、、

福岡

unread,
Oct 4, 2018, 12:09:37 AM10/4/18
to QGIS初心者質問グループ
izayoi 様
adachi 様

横入り失礼いたします。m(__)m

ここにあるデータはサンプルとして利用できるものでしょうか?

sakuya_izayoi

unread,
Oct 4, 2018, 12:25:13 AM10/4/18
to QGIS初心者質問グループ
adachiさま
福岡さま
こちらizayoiです。お世話になっております。
質問しておいてアクションを返せず申し訳ありません。
今週あれから研修と調査のため現在も外に出ておりましてなかなか通信できませんでした。

福岡さまが教えて下さったファイルも見ることができず、qgisやosgeoも入っていないタブレット端末しか無いのでadachiさまの方法も現在実行できません。

まことに申し訳ありません。勝手ながら、返信は遅れてしまいますがお許し下さい。

adachi

unread,
Oct 4, 2018, 12:55:22 AM10/4/18
to QGIS初心者質問グループ
福岡様

情報提供ありがとうございます。
おかげ様で、完全とはいいませんが以下のようにいくつか動作検証することができました。かなりの進歩です。


izayoi様

2回目に投稿した Microsoft Access Database Engine 2010 Redistributableをインストールする方法で、QGISのバージョンが3の場合にひと手順抜けておりました。
最後に、

「設定」メニュー → オプション → システム の下のほうに「環境」とありますが
ここの「カスタム変数を用いる」にチェック、右側の「+」ボタンが使えるようになるので以下の2つの変数を追加

①変数:OGR_SKIP 値:ODBC
②変数:PGEO_DRIVER_TEMPLATE 値:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s

(「適用」はどちらも「追加」としましたが、「上書き」でもよいかもしれません)


この作業をした上でQGISを再起動すると、mdbのドラッグ&ドロップでレイヤを追加できるようになりました。


ただし、、相変わらず「日本語を含むmdb」の検証にはなっておりません。ご了承ください。

いずれにしても、mdbファイルを見れるようになるとかなり応用の幅が広がりそうです。
izayoi様、福岡様のおかげで私もいろいろ勉強になっております。

adachi

unread,
Oct 4, 2018, 3:46:56 AM10/4/18
to QGIS初心者質問グループ
追記:

32bit版のOfficeと64bit版のAccessDatabaseEngineを共存させると、普通のエクセルファイルを開こうとしたときに
「ライブラリが見つかりません~」等のエラーが出て毎回再構成しなければならない状況に陥りました。
このとき、以下のページにある方法でレジストリキーからmso.dllを削除することで解決しました。

なお32bit版のAccessDatabaseEngineのインストールでは、mdbは読み込めないことは確認済です。


五月雨式に投稿してしまい回答がばらけてしまいました。。
izayoi様に検証いただいたあと、うまくいきそうであれば手順を1スレッドにまとめようと思います。

sakuya_izayoi

unread,
Oct 5, 2018, 3:20:58 AM10/5/18
to QGIS初心者質問グループ
adachiさま
こちらizayoiです。色々と御投稿ありがとうございます。
現在帰り道でして、記事を読まさせてもらっております。

adachiさまはものすごく引き出しが多い方ですごいなと思っております。
64bit版のAccessDatabaseEngineのエラーは確かでますね。じゃまだなぁ~64bitソフトを無理やり共存のせいだな~とおもいつつ、オートデスク製品ユーザーであったため、以前からこのような現象は多く慣れていたため
特に気にせずにサクッと消していてスレッドに記載するの忘れていました。申し訳ありません。

adachiさまの3つ前のレス

 上記、ご提示のサイト内にあった「ogr2ogr」コマンドを使ってmdb ⇒ gdbあるいはSQLiteやPostGISなどQGISで読み込みやすい?形式に変換してみるのはどうでしょうか。
以下は実際にやってないので正しくできるかなんとも言えませんが」
という部分なのですが、ogr2ogrで形式変換は"ESRI Shapefile"の指定以外の時はそういえばどうやればよろしいのですか?"ESRI Shapefile"の部分を"gdb"や"sqlite"などで指定すればOK?



adachi

unread,
Oct 5, 2018, 4:25:10 AM10/5/18
to QGIS初心者質問グループ
izayoi様

ものすごく引き出しが多い、というのはここにいる皆様の回答を拝見して私がいちばん感じております。。
私の場合は調べることはできますがまだ自分の知識に変換できていないことが多々あります。

それはさておき…
ogr2ogrのフォーマットについてですが、コマンドのヘルプによると以下の記述になるようです。

     -f "ESRI Shapefile"
     -f "MapInfo File"
     -f "TIGER"
     -f "S57"
     -f "DGN"
     -f "Memory"
     -f "BNA"
     -f "CSV"
     -f "GML"
     -f "GPX"
     -f "KML"
     -f "GeoJSON"
     -f "Interlis 1"
     -f "Interlis 2"
     -f "GMT"
     -f "SQLite"
     -f "PostgreSQL"
     -f "MySQL"
     -f "DXF"
     -f "Geoconcept"
     -f "GeoRSS"
     -f "GPSTrackMaker"


これを見るとmdbやgdbは「出力先」としては対応していない?ような気もしますが


こちらのページの下の方に、mdbからPostgreSQLに変換するコマンドの例が書いてありました。

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" C:\GISData\Geonames.mdb -a_srs EPSG:26986

データベースはデータベースにしか変換できない、ということでしょうか。

sakuya_izayoi

unread,
Oct 5, 2018, 4:55:44 AM10/5/18
to QGIS初心者質問グループ
adachiさま 福岡さま。
こちらizayoiです。お世話になります。というより、色々と御迷惑おかけいたしました。
先ほど戻り、さっそく試してみました。
QGIS3.2で
①変数:OGR_SKIP 値:ODBC
②変数:PGEO_DRIVER_TEMPLATE 値:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s
を追加した結果、読み込んでくれるようになりました。
QGIS2.18.23では同じように実施してみたのですが、読めないよっていうエラーが返ってきました。QGIS2.X系とは相性の問題でしょうか?

QGISで福岡様の教えて下さったファイルはきちんと中身が見られ、図形の再現も可能でした。
日本語が入っているファイルも、読み込むことはできて、属性フィールドでも文字エンコードをsystem(shift-jis)に設定してやることではきちんと再現されました。
しかしながら読み込めたデータベースの数が実際は10個あると言われていたのですが、3つしか認識されず、ちょっと残念な状態になっておりました。
ArcGIS用に作られたファイルだという相性の問題なのかな?ESRI Personal Geo Database(個人用データベース)ですし他のGISシステムとの互換性は考えていないですわね。
(というより、納品データ形式、本当にこれで良いのかお役所よ。ArcGIS専用形式じゃなかなかつらいよ。)

sakuya_izayoi

unread,
Oct 5, 2018, 5:10:18 AM10/5/18
to QGIS初心者質問グループ
adachiさま
ogr2ogrの構文、ありがとうございます。そうか、コマンドヘルプか。
お恥ずかしい話、あまりコマンドライン上での操作が得意でなく、このあたりの事をすぐに忘れてしまう。
GUIに慣れすぎた弊害ですかね。

shpファイルだと、タイトルに10文字までしか記述できないからGeojsonに変換してみようと
ogr2ogr -f "GeoJSON" C:\Users\Desktop\test C:\Users\Desktop\test\chousakekka.mdb
という構文を入力してみたのですが

というエラーが返ってきました。何故だ?しっかりとアクセス用のドライバインストールされたんじゃないのか?
対策が分かったらまた投稿いたします。まずはご報告まで。

sakuya_izayoi

unread,
Oct 8, 2018, 2:34:12 AM10/8/18
to QGIS初心者質問グループ
こちらizayoiです。
adachiさまが教えてくださった内容をいったんまとめてみます。
ここでは私がmdbをロードすることができたQGIS3.X系の64bitのみを対象にさせていただきます。
注意点としては、4番目の工程を失敗すると最悪OSが立ち上がらなくなってしまうため、細心の注意を持って行ってください。


1.  Microsoft Access Database Engine 2010 Redistributable の64bitをダウンロード

2. ダウンロードしたexeファイルでインストール。ただし、
 ・32bitのオフィスをPCにインストールしていない場合 → そのままexeファイルを実行
 ・32bitのオフィスをPCにインストールしている場合 → コマンドプロンプトでexeファイルを実行、このとき末尾に /passive を付ける。(コマンドプロンプト・・・ウインドウズキー+Rでファイル名を指定して実行からcmdと入力でエンター。)
例:(exeファイルがある階層)/AccessDatabaseEngine_x64.exe /passive

3. qgis.batファイルを探し出して以下の2行を追加(通常 C:\OSGeo4W64\bin\qgis.bat のようなところにあるようです
set OGR_SKIP=ODBC
set PGEO_DRIVER_TEMPLATE=DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%%s

4.32bit版のOfficeと64bit版のAccessDatabaseEngineを共存させると、マイクロソフトのオフィスソフトを起動した時に
「ライブラリが見つかりません~」等のエラーが出て毎回再構成しなければならない状況になってしまうためレジストリエントリーを削除する。方法は、以下のページにある方法でレジストリキーからmso.dllを削除することで解決可能。
https://knowledge.autodesk.com/ja/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/JPN/How-to-install-64-bit-Microsoft-Database-Drivers-alongside-32-bit-Microsoft-Office.html
リンクが消えてしまった時用のメモ。
ウインドウズキー+Rでファイル名を指定して実行からregeditと入力してエンター。
レジストリの値としては
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths
にある
mso.dll
を削除。

5.QGIS3.Xを起動したのちに
「設定」メニュー → オプション → システム の下のほうに「環境」とあります。
ここの「カスタム変数を用いる」にチェック、右側の「+」ボタンが使えるようになるので以下の2つの変数を追加する。
①変数:OGR_SKIP 値:ODBC
②変数:PGEO_DRIVER_TEMPLATE 値:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s
(「適用」はどちらも「追加」としましたが、「上書き」でもよいかもしれません)


6.設定を入力したあとにOKを押下したらQGIS3.Xをいったん終了。QGIS3.Xを起動しなおす。

7.福岡さまが教えてくれました
にアクセスし、mdbファイルをダウンロードする。ダウンロード完了後、QGIS3.Xにmdbファイルをドラッグアンドドロップする。
その後にどのデータベースを読みこむか選択できれば方法成功。


日本語が入っているmdbファイルも読みこめはしますが、すべてのレイヤーが読みこめるわけではなさそうなため注意が必要。
私が最後に投稿した内容に関しては現在調査中ですが、手詰まりになっています。

adachi

unread,
Oct 8, 2018, 10:58:51 PM10/8/18
to QGIS初心者質問グループ
izayoi様

私がやるといっておきながら、、整理していただいてありがとうございます。大変助かります。
レジストリをいじるのは、いつも何気なくやってしまうのですが、注意点で書いていただいたような枕詞は必要ですね。

日本語データが完全に読み込めないのはかなり片手落ちな感じがしてもやもやしてしまいます。
引き続き何かわかりましたら共有いただければと思います。

sakuya_izayoi

unread,
Oct 9, 2018, 1:19:27 AM10/9/18
to QGIS初心者質問グループ
adachiさま
こちらizayoiです。勝手してしまってすみません。
私も何気なしに調整してしまうレジストリですが、慣れればふ~んで終わるのですけど、最初はなかなかうまくいきませんね。
(一度レジストリを間違って消してOS壊した覚えあり。その時は仮想化OSだったため巻き戻しで問題なかったけど、実環境だったらと思うと恐怖の代物。)

日本語データに関しては、やはりレイヤーの中にある図形の参照が上手くいってません。フィールドはある程度読み込めて入るのですが・・・それでもテーブル数は圧倒的に不足していました。当該データのアップロードができればいいのですが
それは今回できないデータでして。うん、もどかしい。
mdbだからもしかしたらopen_officeのbaseで読めば何か分かるかなと思って読み込んでみたのですが、図形に関する部分は引っ張り出せませんでした。
・・・図形データはどうやって格納されているのだろう?
Reply all
Reply to author
Forward
0 new messages