常见几何对象的构造
介绍ESRI的ST_GEOMETRY的几何对象构造方法比Oracle Spatial就轻松多了,我们已经知道ST_GEOMETRY的各个子类型中的构造函数构造几何对象时都会首根据参数拼装成WKT格式的字符串,然后调用ST_SHAPELIB链接库转化到二进制的几何对象返回,那相对更通用的方法就是直接使用ST_GEOMETRY的构造函数,给一个WKT格式的字符串作为初始化参数就可以了:
SQL> select sde.st_geometry('POINT(1 1)',0) from dual;
SDE.ST_GEOMETRY('POINT(11)',0)(ENTITY, NUMPTS, MINX, MINY, MAXX, MAXY, MINZ, MAXZ, MINM, MAXM, AREA, LEN, SRID, POINTS)
------------------------------------------------------------------------------------------------------------------------
ST_GEOMETRY(1, 1, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 0, 0, 0, '0C0000000100000080A8B3D7AB1780A8B3D7AB17')
在下面给出一些常见几何对象的示例,其中前两个对象的定义可以和上面Oracle Spatial中相同对象的定义作下比较:
矩形
POLYGON((1 1,5 1,5 7,1 7,1 1))
有洞的多边形
POLYGON((2 4,4 3,10 3,13 5,13 9,11 13,5 13,2 11,2 4),(7 5,10 5,10 10,7 10,7 5))
点
POINT(1 1)
线
LINESTRING(0 0,1 1,1 2)
面(多边形)
POLYGON((0 0,1 0,1 1, 0 1,0 0),(2 0, 3 0,3 1,2 1,2 0))
多点
MULTIPOINT(0 0,1 2)
多线
MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
多面
MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
几何对象集合
GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))