如何获取空PostGIS表的几何类型?


10

我有一个Web应用程序,需要在向其中插入行之前了解PostGIS表的geom字段的几何类型。我使用以下查询来确定geom列的几何类型:

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

这将返回实际行的几何类型,因此当我的表为空时,它将不起作用。如何确定几何列本身的几何类型?

Answers:


17

可以通过geometry_columns这种方式针对表运行查询

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

(或者,如果您使用的是地理位置类型,请geometry_columnsgeography_columnsf_geometry_column替换为f_geography_column


答案中的sql将返回geometry类型,而我们仍然不知道几何是点还是线。
giser

1
这意味着您的几何列设置为几何类型“ geometry”(即,它接受所有类型的几何)。在这种情况下,您必须使用ST_GeometryType分别检查每个几何图形
atlefren

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1像这样的OP帖子?如果表为空,则无法使用。
giser

还有一件事,如果将所有表的所有geometry列都设置为geometrytype,我是否可以创建一个包含所有表的视图points lines polyogn
giser

1
对。打个比方:声明一个geom列为“ geometry”类型,就像为任何颜色的袜子指定一个抽屉。空的时候无法检查此抽屉中袜子的颜色。
atlefren

3

查找表geometry_columns。所有具有srid和几何类型的地理列均在此处注册。如果存在类型为GEOMETRY的列,则可以存储所有几何类型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.