ogr2ogrの代わりにshp2pgsqlを使用してシェープファイルをPostGISにインポートしますか?[閉まっている]


8

私はここで何か悪いことをしているかもしれませんが、

shp2pgsqlを使用していくつかのシェープファイルをPostGISデータベースにインポートする場合、まずそのシェープファイルのSRID / EPSGを把握する必要があります。これは、少なくとも2つのステップからなるプロセスだと思います。まず、次のようにシェープファイルを照会します。

>ogrinfo -al -so someshapefile.shp

これは、既知のテキスト(wkt)投影情報を返しますが、少し冗長で、やや不透明です(私には)。何かのようなもの:

GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
    SPHEROID["GRS 1980",6378137,298.257222101,
        AUTHORITY["EPSG","7019"]],
    AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
    AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
    AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]]

次に、通常はPrj2EPSGなどの変換ツールを使用してwkt情報を実行し、EPSG / SRIDを見つけます。

この時点で、次を使用してシェープファイルをインポートできます。

>shp2pgsql -I -s 4269 someshapefile.shp <schema>.<table> | psql -U <user> -d <dbname> -h <hostaddress> -p 5432

-sフラグでSRIDを指定していることに注意してください。

SRIDを指定せずにshp2pgsqlを実行すると、プロジェクションが設定されず、geom列を手動で更新してプロジェクションを含める必要があると思います。

または、ルックアップをスキップして、ogr2ogrを使用することもできます

>ogr2ogr -f "PostgreSQL" "PG:host=<hostaddress> user=<user> dbname=<dbname> password=<password>" "C:/shapefile.shp" -nln <schema>.<table>

どうやら、投影を細かく設定し、おそらくソースシェープファイル/ prjから自動的に抽出します。

質問

では、ogr2ogrを使用することの欠点は何ですか?実際にフラグがあるので、shp2pgsqlは自動的に適切なプロジェクションを抽出して設定しますか?そうでない場合、なぜそうではないのですか?


補遺

興味深いのは、上の利用可能shp2pgsqlと対ogr2ogr使用の日付、比較分析おそらく少し、ありますnaturalgis.ptが。それはことを、彼らの特定のサンプルデータのための実証ogr2ogr小さなデータセットに対して有意に良好に機能するが、それshp2pgsqlと行いがわずかに優れ、より大きなデータセットに

これで決定的な答えが得られるとは思いません。コードベースが進化し、それぞれのパフォーマンスが向上した可能性があります。彼らは非常に小さなサンプルデータのセットのみをテストしました。代表的な「大きな」データセットは実際にはそれほど大きくありません。また、主にパフォーマンスの問題について説明していますが、これはユーザビリティに確実に影響しますが、元の質問は、ユーザビリティに関連するユーザ入力要件に関心があります。


1
SRSを疑ったシェープファイルがあったことはないと思います。私は確かにシェープファイルを持っているので、他の多くのレベルに住むという私の意志に疑問を投げかけてきましたが、それについての問題は、あらゆる種類の自己交差するジオメトリを許可する、古い2Gb制限フォーマットを解析するためのより良い環境です。他の多くの恐怖はそれらの1つではありません。
ジョンパウエル

回答:


4

shp2pgsql開発者と話すことなく私の答えは意見に基づいていますが、少なくともshp2pgsqlは、プロジェクションの自動検出なしではるかに簡単です。ソースコードの主要な部分は約1800http://postgis.net/docs/doxygen/2.2/d8/da3/shp2pgsql-core_8c_source.htmlで、本質的なことを行います。形状と属性をシェープファイルからPostGISに変換します。

GDALソースでは、ESRI .prjファイルの解釈のみを処理するコードは2700行ですhttps://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogr_srs_esri.cpp

長所と短所:

ユーザーの観点から見ると、shp2pgsqlの主な利点は次のとおりです。

shp2pgsqlの主な欠点は、シェープファイルのみをサポートすることです。

GDALとogr2ogrは、シェープファイルに対してshp2pgsqlと同じ機能を提供しますが、GDALは数十の異なるベクトル形式https://gdal.org/ogr_formats.htmlを処理でき、変換中にデータを選択および処理するためのより多くのオプションを提供します。ただし、GDALでは

  • ユーザーはGDALをインストールする必要があります
  • ユーザーは、GDAL、特にogr2ogrPostGISドライバーの多くのオプションの使用方法を学ぶ必要があります。
  • ogr2ogrはGUIのない​​コマンドラインユーティリティです。

有効なポイントがあります。.prjファイルを解析するためのロジックは複雑で、対処されていないコーナーケースがあります。しかし、私の質問は、主にツールのユーザビリティに関連しています。
jac

ogr2ogrとgdalは必要な悪ですが、あなたのポイントは良いものです-それらは自明ではなく、学習曲線を持っています。shp2pgsqlは缶で言うことをします。
ジョンパウエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.