SQL-MM格式定义了一些插值曲线,这些插值曲线和EWKT有点类似,也支持3DZ、3DM、4D坐标,但是不支持嵌入空间参考。
几何类型 | SQL-MM |
---|---|
插值圆弧 | CIRCULARSTRING(0 0, 1 1, 1 0) |
插值复合曲线 | COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1)) |
曲线多边形 | CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)) |
多曲线 | MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4)) |
多曲面 | MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11))) |
本文通过实例演示几何对象的定义。
1.建表
CREATE TABLE postgismm (
id SERIAL PRIMARY KEY,
name VARCHAR(128),
geom GEOMETRY
);
2.添加GIST索引
CREATE INDEX postgismm_gix ON postgismm USING GIST (geom);
3.插入数据
3.1 CIRCULARSTRING
INSERT INTO postgismm (name, geom) VALUES ('c1',
ST_GeomFromText('CIRCULARSTRING(0 0, 1 1, 1 0)', 26910)
);
INSERT INTO postgismm (name, geom) VALUES ('c2',
ST_GeomFromText('CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0)', 26910)
);
QGIS中显示几何
3.2 COMPOUNDCURVE
INSERT INTO postgismm (name, geom) VALUES ('c1',
ST_GeomFromText('COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))', 26910)
);
INSERT INTO postgismm (name, geom) VALUES ('c2',
ST_GeomFromText('COMPOUNDCURVE(CIRCULARSTRING(2 0, 3 3, 3 0),(3 0, 2 0))', 26910)
);
QGIS中显示几何:
3.3 CURVEPOLYGON
INSERT INTO postgismm (name, geom) VALUES ('p1',
ST_GeomFromText('CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),CIRCULARSTRING(0 0, 1 0, 1 1,0 1, 0 0))', 26910)
);
INSERT INTO postgismm (name, geom) VALUES ('p2',
ST_GeomFromText('CURVEPOLYGON(CIRCULARSTRING(7 0, 9 0, 9 4, 7 4, 7 0), (7 0, 9 0, 8 2, 7 0))', 26910)
);
QGIS中显示几何:
3.4 MULTICURVE
INSERT INTO postgismm (name, geom) VALUES ('m1',
ST_GeomFromText('MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))', 26910)
);
QGIS中显示几何:
3.5 MULTISURFACE
INSERT INTO postgismm (name, geom) VALUES ('m1',
ST_GeomFromText('MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((7 5, 11 7, 8 5, 7 5),(8 6, 8.5 6, 8 6.5, 8 6)))', 26910)
);
QGIS中显示几何: