OGRを使用してPostGISにインポートするジオメトリタイプを設定する


8

ogr2ogrPostGISデータベースへのデータのインポートに使用しています。インポートする必要がある各データセットは、(理論的には)正確に同じデータ構造を持っていますが、それらは同じジオメトリタイプではないようです。例、最初のレイヤーを既にインポートしており、「streets」というレイヤーがあります。このコマンドを実行して、最初のデータベースから最初のフィーチャクラスをインポートします(GDALを読み取るように構成しています.mdb)。

ogr2ogr -f PostgreSQL PG:"host=localhost user=postgres dbname=database port=5432" city1.mdb streets -nln streets -nlt MULTILINESTRING -lco GEOMETRY_NAME=geometry

-appendから同じストリートレイヤーを(フラグを使用して)追加しようとするcity2.mdbと、このエラーが発生します(おそらく2つの「ストリート」レイヤーのジオメトリタイプが競合していることが原因です)。

Warning 1: Geometry to be inserted is of type 3D Line String, whereas the layer geometry type is 3D Multi Line String.
Insertion is likely to fail
ERROR 1: INSERT command for new feature failed.
ERROR:  Geometry type (LineString) does not match column type (MultiLineString)

ogr2ogrインポート時にジオメトリを同じタイプにキャストする簡単な方法はありますか?または、事前に各テーブルのスキーマとジオメトリを事前定義してこれを処理する方法はありますか?

回答:


16

-nltオプションを使用します。この場合、以下が必要です。

-nlt MULTILINESTRING

あるPROMOTE_TO_MULTIいずれかの選択(GDAL 1.10以降)、MULTILINESTRING又はMULTIPOLYGON入力層に応じ。この使用例は、「さまざまなタイプのジオメトリを[混合]するシェープファイルの一括変換を行う」です。

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