在DB2中它也是一个Polygon。它看起来像你存储网格,所以快速检查可能是,如果ST_ENVELOPE(几何)==几何那么你有一个方形
此代码是从
DB2's documentation
SET CURRENT PATH = CURRENT PATH, db2gse;
CREATE TABLE sample_geoms (id INTEGER, geometry ST_Geometry);
INSERT INTO sample_geoms VALUES
(1, ST_Geometry(ST_Point('point EMPTY',0)));
INSERT INTO sample_geoms VALUES
(2, ST_Geometry(ST_Point('point zm (10 10 16 30)' ,0)));
INSERT INTO sample_geoms VALUES
(3, ST_Geometry(ST_Multipoint('multipoint m (10 10 5, 50 10 6,
10 30 8)' ,0)));
INSERT INTO sample_geoms VALUES
(4, ST_Geometry(ST_Linestring('linestring (10 10, 20 10)',0)));
INSERT INTO sample_geoms VALUES
(5, ST_Geometry(ST_Polygon('polygon((40 120, 90 120, 90 150,
40 150, 40 120))',0)));
SELECT id, CAST(ST_AsText(ST_Envelope(geometry)) as VARCHAR(160)) Envelope
FROM sample_geoms;
结果:
ID ENVELOPE
----------- ---------------------------------------------------------------
1 -
2 POLYGON ((9 9, 11 9, 11 11, 9 11, 9 9))
3 POLYGON ((10 10, 50 10, 50 30, 10 30, 10 10))
4 POLYGON ((10 9, 20 9, 20 11, 10 11, 10 9))
5 POLYGON ((40 120, 90 120, 90 150, 40 150, 40 120))
请参阅ID = 5?最后一个POLYGON == ST_ENVELOPE(几何)
但ST_envolope是一个函数,而不是一个类型的,据我可以看到? – 2009-08-17 22:01:25
对不起,我刚刚删除了许多令人费解的废话。这些点在Postgis中存储为一系列的float4,对DB2不太确定,但它必须大致相同,或者可能是db2/Oracle的“数字”类型之一。我猜测所有的矩形都只是作为一些基本的浮点类型存储的坐标,通过智能索引为常见的空间查询启用地理功能。 – unmounted 2009-08-17 22:16:56
Troels是正确的。 ST_ENVELOPE是一个返回ST_POLYGON的函数; ST_ENVELOPE不是一种类型。 “浮点”优化特定于PostGIS。 – 2009-08-28 16:04:05