ArcSDEからPostGISへのデータの移行?


19

もう一度この質問をすることをお勧めしますが、おそらく複数のシェープファイルをPostGIS一括ロードする方法とは異なる言い方をしています。

私はpostgisとsqlを初めて使用しますが、ArcSDEのスレーブとして(当分の間)postgisを使用したいです。したがって、私が望んでいるのは、毎晩PostGISにArcSDEデータをバッチアップロードする方法を理解するのに役立つことです。

Pythonスクリプトを作成してArcSDEデータを夜間にSHPにエクスポートできますが、エクスポートされたSHPファイルをPostGISにバッチアップロードし、postgisにすでに存在するファイルをすべて自動タスクとして上書きする方法がわかりません(バッチファイルだと思います) )。

私の大計画は、ArcSDE / ArcGISをPostGIS、QGIS、GeoServerまたはMapServerに時間をかけて置き換えることです。


1
ArcSDEはRDBMSデータストアを管理しませんか?今のデータは何ですか?
ショーン

1
どのバージョンのArcSDEを使用していますか?-ArcSDE 10はPostgresに書き込むことができます。resources.arcgis.com/content/arcsde/10.0/...
Mapperz

Medの質問を注意深く読むと、ArcSDEから正常に移行できるようになるまで、テストおよびWeb公開の目的で、データをPostGISに複製しようとしていると思います。つまり、ArSDEをネイティブPostGISに長期的に同期させるのではなく、短期的に同期させることがポイントです。
RyanKDalton-OffTheGridMaps

おそらく、同期は質の悪い質問タイトルの選択でした。確かに、SDEからPostGISにデータセットを移動および保守する短期的な方法としてこれが必要です。SDEには約600個のデータセットがあり、手動でデータを移行したくありません。Med(mr)。
-geosmiles

回答:


19

Esri ShapefilesがミドルマンのファイルベースのコンポーネントであるDB->ファイル-> DB変換を行うのではなく、より直接的なDB-> DB転送を調査する価値があります。これを実行できるツールはいくつかありますが、私はオープンソースのGDAL / OGRツールにのみ焦点を当てています。

Windows Serverがある場合、OSGeo4Wを使用してGDAL / OGRを簡単にインストールできます。拡張インストールモードでは、SDEドライバーなどのカスタムパッケージ構成を選択できます(パッケージのこのリストを参照して、SDEバージョンに適切に一致することを確認してください-SDEバージョン9.0から9.2のみがサポートされています)。これらのパッケージはヘッダーとラッパーのみであり、CD / DVD ROMに保存する必要があるSDEライブラリをインストールし、GDAL / OGRを見つけるためにPATH変数を適切に設定する必要があります。インストールが成功すると、OSGeo4Wシェルの次のコマンドで「SDE」が表示されます。ogr2ogr --formats

GDAL / OGRを構成した後、いくつかのツールを使用できます。

  • OSGeo4Wシェルのコマンドラインツールogr2ogrには、次のようなコマンドが必要ですogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version](さまざまな-append-overwriteまたは-updateオプションを調べることもできます)
  • SDEに接続する既存のPythonスクリプトをコピーして変更します。データを別のデータソースに転送するように変更できます。

この方法の主な注意点は、セットアップが複雑なことです。


+1を使用して、非常に明確で有益な応答を得る 複雑であっても、それは直接的な道です。
-DEWright

理論的には、直接DB転送を行うというアイデアは好きですが、「非常に基本的な」ものを探しています。しかし、我々はmoでSDE 9.3.1であるため、上記の答えはgo'aではありません。私が言うように、私はPostGISとSQLを初めて使用しますが、一括アップロードを自動化できるスクリプトが「そこに」あると思っていたでしょう!
-geosmiles

1
SDEのすべてのバージョン(および他の数百のフォーマット/ DB)のその他の「DB-> DB」オプションはFMEです。FMEは無料ではありません(テストできる無料試用版があります)。つまり、同期ソリューションを支援するサポートを提供できます。しかし、これには明らかに予算が必要です。最高の無料のオプションは、テーラーにとの良好なBATスクリプトであるshp2pgsqlpsqlなど、
マイク・T

2
ArcObjects GDALドライバーを作成した理由の1つは、まさにこれを行うためです。ESRIライセンスを持っているため、複雑なFeatureClassesを維持し、毎晩PostGISにダンプする必要がありました。arcsdeドライバーはarcsde apiレイヤーを通過しますが、arcobjectsドライバーはarcobjectsを通過します。私たちは1年間使用しており、非常にうまく機能しています。
ラギヤセルバーフム

既存のPythonスクリプトを使用できるように「SDE」ドライバーを入手する場所 見つけることができません
...-ePascoal

6

PostGISには、シェイプファイルをPostGISデータベースにロードするために使用できるshp2pgsqlというローダーがあります。オプションの1つ( "-d")は、データをロードする前に既存のデータベーステーブルを削除します。すべてのシェープファイルをループしてロードできるバッチファイルまたはスクリプトを作成するのは非常に簡単です。

もっと詳しく知りたい場合は、GDALをインストールし、Orcツール(ArcSDEコネクタを備えています)を使用して、シェープファイルのエクスポートをスキップできます。ArcSDEコネクタの詳細については、こちらをご覧ください


非常に基本的な用語では、既存のテーブルを削除するスクリプト(Windowsスケジュールタスクとして追加される)をどのように/どのように記述し、Listed_Buildingsと呼ばれ、それからD:\のshpとして保持される新しいバージョンをアップロードしますsde_export。
-geosmiles

1
他の11文字が削除されるため、フィールド名が11文字よりも大きい場合、シェープファイルのアプローチは悪化します!!
シズラム

1

私はパーティーに遅れていることを知っていますが、これには2つのデータベースを持つことを避けるための別のオプションがあります。

Postgresql + Postgisの上にArcSDEを置くことができます。これがマスターであり、唯一のデータベースになります。

ArcSDEは、st_geometriesではなくpostgisジオメトリを使用するように構成できます(ESRI独自)。

これは、実際にはpostgisネイティブテーブルであるため、postgisツールを使用してArcSDEのロード/編集された空間テーブルを直接使用できることを意味します。

たとえば、qgisを使用してpostgisデータベースに直接接続し、arcsdeを介してarcgisと同じデータを読み取ることができます。


1

別のアプローチは、Geokettle(オープンソース)のような空間ETLを使用することです。

http://www.spatialytics.org/projects/geokettle/

Geokettleを使用して、常にSQLサーバーとPostGISの間でデータを移動します。ただし、PostGISではうまく機能しますが、SQL Serverの空間データタイプを使用する場合には課題があります(以下のヒントを参照)。また、これは、SDEジオメトリをSQL Serverネイティブの空間データタイプとして格納していることを前提としています。ArcCatalogを介してデータを読み込むときに、Geometryキーワードを使用してこれを行うことができます。

ヒント1:SQLサーバーからデータを選択する場合、.STAsText()をジオメトリフィールドに適用するか、GeokettleがSQLサーバーのデータタイプで停止します。

ヒント2:SQLサーバーにデータを挿入するときは、テキストとしてテキストフィールドにジオメトリを挿入する必要があります。次に、SQLステップを使用して新しいジオメトリ列を追加し(必要な場合)、テキストジオメトリからデータを入力します。このように、SQL Serverを使用して、ジオメトリのOGC標準テキスト表現からジオメトリを構築します。

ヒント3:新しい空間テーブルを必ずSDEに登録してください。


SDE.ST_AsText()を使用するには、SDE.ST_GEOMETRY_SHAPELIB_PKGが必要です。正しいですか?
ePascoal

0

元の9.3 dbでデータベース複製をセットアップすることを検討してください。
新しい10の場合と同じようには機能しませんが、
postgisデータ型pg_geometryを使用して、それをpostgresqlの別のsdeに複製します。

ここにいくつかのesriヘルプがあります
注:両方のdbが同じマシン上にない場合、これには重複したライセンスが必要です


重複したライセンスを取得することは、オープンソースに移行するポイントを無効にしているようです!
-geosmiles

元のデータベースがpostgresqlにあった場合は、同じデータベース(マルチsdeインスタンス)ですべて行うことができます。または、sdeと同じマシンにpostgresqlをインストールします。そうでない場合は、開発を検討し、暫定で約2.5k年のEDN(別のSDE)を購入する可能性があります。
ブラッドネソム

0

ArcObjectsは次の目的で作成できます。

A)arcsdeデータベースをダンプします。B)shp2pgsqlのsqlを生成するプレーンなc#コード。C)古いテーブルをダンプするプレーンなc#コード。D)すべてのshp2pgsqlをpostgresqlに実行するプレーンなc#。

npgsqlドライバーを使用してこれを実現し、関数とsqlステートメントをpostgisデータベースに直接実行できます。


0

ArcSDEジオメトリ(リレーショナルデータベースのジオデータベースストレージ)は何ですか?このようなシナリオでは、ST_Geometryタイプの使用を検討してから、PostGre / PostGISレプリケーション(PostGIS Replication @ FOSS4G)ツールを使用することができます。このスキームには、エディションのArcSDE / ArcGIS / geodatabase機能(エディションデータベース)および拡散用のオープンソースツール(複製拡散データベース)を使用する利点があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.