空のPostGISテーブルのジオメトリタイプを取得するにはどうすればよいですか?


9

行を挿入する前に、PostGISテーブルのgeomフィールドのジオメトリタイプを知る必要があるWebアプリケーションがあります。次のクエリを使用して、geom列のジオメトリタイプを決定します。

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

これは実際の行のジオメトリタイプを返すため、テーブルが空の場合は機能しません。ジオメトリ列自体のジオメトリタイプを判別するにはどうすればよいですか?

回答:


16

クエリはgeometry_columnsこの方法でテーブルに対して実行できます

SELECT type 
FROM geometry_columns 
WHERE f_table_schema = 'my_schema' 
AND f_table_name = 'building' 
and f_geometry_column = 'geom';

(あなたが使用している場合や、地理タイプを、subsititute geometry_columnsgeography_columnsf_geometry_columnしてf_geography_column


答えのsql geometryはタイプに対して返されますが、ジオメトリがポイントかラインかはまだわかりません。
giser

1
これは、ジオメトリ列がジオメトリタイプ「geometry」に設定されていることを意味します(つまり、すべての種類のジオメトリを受け入れます)。この場合は、ST_GeometryTypeを使用して各ジオメトリを個別にチェックする必要があります
atlefren

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1OPポストとしてこのように?テーブルが空の場合は機能しません。
-giser、

そして、もう1つ、すべてのジオメトリ列がgeometryすべてのテーブルのタイプに設定されている場合、すべてのテーブルを含むビューを作成できますpoints lines polyognか?
giser

1
正しい。類推:geomカラムが「geometry」タイプであることを宣言することは、任意の色の靴下用の引き出しを指定することに似ています。この引き出しが空の場合、この引き出し内の靴下の色を確認することはできません。
atlefren 2018

3

テーブルgeometry_columnsを探します。sridとgeometryタイプのすべてのgeo列がここに登録されます。タイプGEOMETRYの列がある場合、すべてのジオメトリタイプを格納できます。

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