2016-05-02 42 views
1

我是PostgreSQL的新手,我试图用矩形的形状来计算3D对象的体积。如何计算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 

任何关于此查询的正确语法的想法将不胜感激!谢谢。

回答

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 

注意,我从查询抹掉了“名”。

+0

非常感谢您的答复,这很明显!我能否要求澄清一下安装扩展?我把这一行放在psql控制台中,但我一直得到-d的语法错误。我以前从未使用过,所以我不知道我是否正确输入。 –

+0

psql命令将从命令行运行。如果你已经在psql或图形客户端只是'创建扩展postgis_sfcgal';但你将需要权限。 – e4c5

+0

它是如此工作? – e4c5