如何在Postgresql中计算3D对象的体积?

时间:2016-05-02 17:41:53

标签: postgresql 3d postgis

我对PostgreSQL很新,我正在尝试用矩形的形状计算3D对象的体积。

这是包含值的表格:

CREATE TABLE warehousethree(
 name character varying(100) NOT NULL,
 wid serial NOT NULL,
 CONSTRAINT warehousethree_pk PRIMARY KEY (wid));

SELECT AddGeometryColumn('warehousethree', 'location', '3785', 'POLYHEDRALSURFACE', 3)

INSERT INTO warehousethree (name, location, wid) 
values
('Helianthus Italy', ST_GEOMFROMTEXT('POLYHEDRALSURFACE(((43450771 11890747 0,43450755 11892667 0,43449727 11892882 0,43449688 11890994 0,43450771 11890747 0)),((43450771 11890747 500,43450755 11892667 500,43449727 11892882 500,43449688 11890994 500,43450771 11890747 500)),((43450771 11890747 0,43450755 11892667 0,43450755 11892667 500,43450771 11890747 500,43450771 11890747 0)),((43450755 11892667 0,43449727 11892882 0,43449727 11892882 500,43450755 11892667 500, 43450755 11892667 0)),((43449727 11892882 0,43449688 11890994 0,43449688 11890994 500,43449727 11892882 500,43449727 11892882 0)),((43449688 11890994 0,43450771 11890747 0,43450771 11890747 500, 43449688 11890994 500, 43449688 11890994 0)))', 3785), 1)

到目前为止,我已尝试将ST_Volume与ST_MakeSolid结合使用来计算音量,但我收到一条错误消息,指出ST_Volume后括号中的语法存在问题。我已经尝试了一些其他的返回错误,说功能没有退出。这是我的疑问:

SELECT name ST_Volume(ST_MakeSolid(location)) as ware_solid_vol
FROM warehousethree

非常感谢有关此查询的正确语法的任何想法!谢谢。

1 个答案:

答案 0 :(得分:2)

ST_VolumeST_MakeSolid都由postgis_sfcgal扩展程序提供,默认情况下不一定会安装postgis。您需要通过从操作系统shell中键入以下命令来安装它。

psql -d mydatabase -c 'create extension postgis_sfcgal';

在数据库上安装后,您的查询应更改为

SELECT ST_Volume(ST_MakeSolid(location)) as ware_solid_vol
 FROM warehousethree

请注意,我已经擦掉了名字'来自查询。