QGISを使用してODBC接続を読み取りますか?[閉まっている]


15

私は同僚が追跡するさまざまな場所のXおよびYフィールドを含む大規模なMS Accessデータベースを管理しています。以前にデータをCSVにエクスポートし、QGIS Delimited Text Pluginを使用して場所をプロットしました。

(CSVへのエクスポートではなく)ODBC接続を介してMS Accessデータベースに接続することにより、QGISでこのデータを直接プロットしたいと思います。

  1. QGISは、ODBC接続からのデータを使用してXY位置をプロットできますか?
  2. ODBC接続に「ライブリンク」して、プロジェクトを再度開くと、レイヤーが古い場所と新しく追加されたすべての場所を動的に「再プロット」することができます(シェープファイルにエクスポートするとスナップショットが作成されます)。
  3. QGIS内の空間テーブルに結合できる表形式のODBC接続を作成できますか?

これはすべてArcGIS(「XYデータの追加」ツール)で実行できるため、この機能がQGISに存在するのは素晴らしいことです。その存在について言及している場所はどこにもありません。

空間データベースに移動する予定はありません。私自身はGIS担当者として、空間データベースに移行するのが理にかなっていることを知っています。そして、この種のデータを管理するためにPostGISを使用しました。しかし、これらは現在オプションではありません。ユーザーはGISのユーザーではなく、なりたくないので、MS Accessで自分のデータベースを管理しますが、それは変わりません。私は彼を蹴ってGISの世界に向かって叫んでいるので、できるだけ簡単にしたいと思っています。彼はCSVへのエクスポートに耐えることができます。ODBCfor MS ACCESSを使用し、QGISでXYデータを表示するより良いソリューションがあることを望んでいました。


それから、私の知る限り、QGISで要求したとおりにはできません。CSVインポートに相当するODBCで何らかの用途があることに同意しますが、あらゆる種類のパフォーマンスのためには、CSVプラグインと同様に、動的接続ではなくインポートでなければなりません。そのため、自分でサポート/開発しない限り、まったく受け入れられない可能性があります。
MerseyViking

@ MV-私は一般的にあなたに同意し、あなたのポイントを見ます。ただし、データを分析するのではなく、単にデータをマッピングすることに主に関心がある非GISユーザーの場合、QGISのパフォーマンスはそれほど重要ではありません。データへの動的な「常にライブ」な接続がパフォーマンスの懸念をほぼ確実に上回ることを想像します(これも非GISユーザーの観点から考えます)。
RyanKDalton

回答:


7

警告:私はこれを試したことがないので、直接経験のある人なら誰でも喜んでお辞儀をします。

「ベクターレイヤーの追加」ダイアログでODBCデータソースに接続できます。ソースタイプとして「データベース」を選択し、データベースタイプとしてODBCを選択します。QGISはOGRODBCドライバーを使用するため、同じ注意事項が適用されます。つまり、GEOMETRY_COLUMNSなどのテーブルが必要になるため、おそらく同僚がデータベースを変更する必要があります。

バージョン1.0のリリース直後からAccessを使用していませんが、空間的に有効になっていないため、パフォーマンスが問題になる可能性があります。おそらく、Accessをドロップして空間的に有効化されたデータベースを使用し始めることはおそらくないでしょう。経済的に実行できる可能性は低いためです。パワフル。


@ MV-これは役立つ情報です。「ベクターレイヤーの追加」オプションを使用して表形式のデータを追加できるとは思いませんでした。ただし、空間的に有効になっていないため、空間形式に何らかの方法でエクスポートする必要があります。そして、あなたが正しいのは、ユーザーがGISでもデータベースでもないので、ユーザーは空間的に有効なdbに切り替えるつもりはないということです。危険なアクセストレーニングが十分にあります
...-RyanKDalton

7

QGIS 2で利用可能な新しい「処理」ツールを使用すると、これが少し簡単になります。データを「ライブリンク」する方法をまだ見つけていませんが(MS Accessテーブルの値を変更すると、ポイントは自動的に移動します)、この方法はかなりうまくいくようです。

クレジットは、MS AccessデータベースへのODBC接続を作成する方法について、このページのコメントセクションの「Christina」と「Bernd」(そしてもちろんブログの@underdark)にあります。

ODBC接続を作成します。

Win7、32ビットの場合:コントロールパネル/管理ツール/データソースに移動(ODBC)

Win7、64ビットの場合:デフォルトの「コントロールパネル/管理ツール/データソース(ODBC)」方式を使用する代わりに、64ビットバージョンでは、C:\ Windows \ SysWOW64 \ odbcad32.exeを使用する必要があります。

  1. [ユーザーDSN]タブをクリックしてから、[追加]
  2. Microsoft Access Driver(* mdb)までスクロールダウンし、「終了」をクリックします。
  3. 接続に名前を付け、「選択」を選択してデータベースの場所を参照し、「OK」をクリックしてダイアログを終了し、再度dsnウィンドウを閉じます。

レイヤーをQGISにロードします。

  1. ベクターレイヤーを追加して、データベースオプションを選択します。
  2. データベースの「タイプ」ボックスに「ODBC」と表示されていることを確認し、「新規」をクリックします
  3. 名前ボックスに接続の名前を入力します
  4. ホストはlocalhostです
  5. データベース名は、手順4で作成したdsnの名前です
  6. 他のすべてのボックスは空白にする必要がありますが、「パスワードを保存」ボックスにチェックマークを付けることができます。
  7. 接続をテストし、エラーを書き留めます。成功したら、「OK」をクリックして「ベクターレイヤーの追加」ダイアログに戻ります
  8. 「開く」をクリックしてこの接続を開き、パスワードを求められたら「OK」をクリックします。レイヤーがないことを念頭に置いて、レイヤー(データベースからのテーブル)を選択します。

XYデータをポイントに変換します。

  1. TOCのテーブルを使用して、「処理」->ツールボックス->ジオアルゴリズム->ベクトル->作成-> "テーブルからのポイントレイヤー"に移動します。
  2. 以下に示すようにフォームに入力します。

テーブルのポイントレイヤー


このアプローチで問題が発生している場合は、QGIS 2.4 access .mdb add error
RyanKDalton 14

msアクセスをQGISに接続する際のヘルプに感謝します。層に参加し、それは非常にうまく働いていたように私は国の3つの文字コードを使用しています

LineまたはPolygonのテーブルがある場合、どのようにしてマップを生成できますか?
MichaelR

5

他のオプションが利用できるかどうかはまだ聞きたいですが、eVis Pluginを使用してこれが可能であると述べたメッセージポストに出くわしました。

ドキュメントには、 、静的なスナップショットを作成せずに、MS AccessまたはODBC接続に接続してデータベースからXYポイントの場所を作成する方法についてデータベース接続セクションで説明しています。「select * from」と入力するだけで、レイヤー名とXYフィールドの入力を求めるダイアログボックスが表示されます。

残念ながら、次回プロジェクトを開くとQGISが混乱する(「1つ以上のプロジェクトレイヤーを開くことができない」)ため、MS Access dbへの「ライブリンク」接続は作成されません。ただし、これに対する解決策は、、ユーザーが選択できる定義済みのXMLクエリことです。

したがって、完璧なソリューションではありませんが、これはCSVにエクスポートするよりも1つのステップです。将来的には、この目的でODBC接続を受け入れるように拡張テキストプラグインが拡張されることを期待しています。


あ!知っておくと本当に便利です。これにはいくつかのフープが含まれますが、少なくとも1回限りのセットアップにする必要があります。QGISでビューを変更すると、データがリロードされますか?または、手動でクエリを再実行するまでキャッシュするだけですか?
MerseyViking

@ MV-実験を通じてわかることから、eVisはQGISでキャッシュされたレイヤーを作成するようです。たとえば、レイヤーにeVisを読み込んだ後、Access DBからレコードの1つを削除し、QGIS画面を更新し、「削除済み」ポイントが保持されました。しかし、新しいキャッシュレイヤーを作成すると、削除されたポイントは表示されませんでした(予想どおり)。パンとズームは、キャッシュされたレイヤーの表示には影響しませんでした。
RyanKDalton

4

別のアプローチは、データをpostgisに移動することです。postgresqlのcopyコマンドを使用してcsvファイルを直接読み取ることができます。次に、xyフィールドからポイントを作成できます。

アクセス時にレポートやその他の機能を使用する場合は、アクセスからpostgisに接続できます。

利点は、何らかの理由でまだアクセス中のデータを表示したい場合、それが属する空間データを空間データベースに配置し、odbcを使用してアクセスして非空間データを処理することです。

postgresline.comの接続にアクセスするためのpostgis / postgresqlの素晴らしいチュートリアルがあります。bostongis.orgの同じ著者が見つけることができるpostgis / postgresqlへの修正に関するチュートリアル

/ Nicklas


0

ms-accessデータをpostgresまたはSQLiteに変換し、再び変換できる変換製品がいくつかあります。データを一方から他方へ非常に迅速に移動します。これらのアプリケーションのいずれかを使用すると、データのスナップショットでQGISを実行するオプションが提供される場合があります。


1
そのようなツールを提案できますか?
イェンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.