PostGISクエリの結果として空間PostGISテーブルを作成する


8

空間クエリの結果を別のPostGISテーブルとして保存する場合、どうすればよいですか?一連の区画に含まれるすべての住宅の建物を特定することに興味があります。

CREATE TABLE residentialBuildings AS
SELECT buildings.the_geom
FROM parcels as p
JOIN buildings as b
ON ST_Contains(p.the_geom, b.the_geom)
WHERE p.residentialarea > 0;

これは機能しているようですが、空間的な結果は返されません。代わりに、テーブルにはジオメトリのバイナリ表現があります。結果としてテーブルを作成するために何をすべきかわかりません。最初にテーブルを作成してから、結果をジオメトリに変換する必要がありますか?

(私はドキュメントを読みましたが、これはかなり明白なことだと思うので、適切な検索用語が欠けているように感じます)。

ジオメトリを作成するためのコマンドがたくさんあることに気づきました

ST_GeogFromText 
ST_GeographyFromText 
ST_GeogFromWKB 
ST_GeomCollFromText 
ST_GeomFromEWKB 
ST_GeomFromEWKT 
ST_GeometryFromText 
ST_GeomFromGML 
ST_GeomFromKML 
ST_GMLToSQL 
ST_GeomFromText 
ST_GeomFromWKB 

しかし、どのオプションを選択するか、またはこれが正しいアプローチかどうかはわかりません。

回答:


8

手動でジオメトリ列をgeometry_columnsに登録できます。何かのようなもの:

INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")
VALUES ('', 'public', 'residentialBuildings', 'the_geom', 2, <yourSRID>, 'MULTIPOLYGON')

1
ERROR: column "polygon" does not exist SQL state: 42703エラーの原因が何かわかっていますか?というエラーメッセージが表示されます。テーブルは存在し、私もを使用してみましたPOLYGON
djq

追加するのを忘れました ''。
アンダーダーク

5

結果は、ジオメトリ形式の列が1つだけの空間テーブルです。バイナリ表現は正しいです。PostGIS(ArcGISやQGISなど)の外部でこれを使用している場合、おそらく次の2つを探しています。


明確にするために(質問を更新します)PostGISで結果を含むテーブルを作成します。
djq

ええ、あなたのアプローチと結果は大丈夫です。GeoDatabasesと同様に、geometry列の行はシリアル化されたジオメトリで構成されています。内容を確認したい場合は、他のpostgisテーブルと同じように、geometry列でST_AsTextを使用してください。
Ragi Yaser Burhum、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.