达梦空间数据学习(一)
DMGEO系统包
DMGEO系统包以 DM8 的对象数据类型为基础,构造空间数据对象类型,以第三方开源几何处理函数库 geos,proj,sfcgal 为运算基础,将其封装为 liblwgeom 数据库,实现对空间数据类型的几何计算。DMGEO2相比于 DMGEO 系统包增加了新的空间数据类型及几何体计算函数
创建、检测、删除语句
用户在使用 DMGEO2 包之前,需要提前创建 DMGEO2 包,包创建成功后就可以使用空间数据类型以及包提供的方法。
SP_INIT_GEO2_SYS(1);
如果 DMGEO2 包已存在,系统将只重建 DMGEO2 包方法,而不影响现有的空间数据类型以及数据。
SP_INIT_GEO2_SYS(2);
如果 DMGEO2 包已存在,将只重建 SPATIAL_REF_SYS 表,而不影响现有的空间数据类型以及数据。
SP_INIT_GEO2_SYS(3);
删除 DMGEO2 包,任何与空间数据类型相关的表、函数、过程、触发器等对象均会被级联删除。
SP_INIT_GEO2_SYS(0);
达梦空间数据类型
⚫ ST_Geometry:最基本的几何体,是其他几何类型的基类
⚫ ST_Point:点几何体
⚫ ST_LineString:线几何体。
⚫ ST_Polygon:面几何体。
⚫ ST_Multipoint:多点几何体
⚫ ST_Multilinestring:多线几何体
⚫ ST_Multipolygon:多面几何体
DMGEO2包增加对下类型的支持
⚫ ST_Geograph 地理数据类型
⚫ ST_BOX:ST_Box2D、ST_Box3D 边界框
空间对象定义(WKT格式)
在SQL语句中,用以下的方式可以使用WKT格式定义几何对象:
POINT(0 0) ——点
LINESTRING(0 0,1 1,1 2) ——线
POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) ——面
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 (1 1),linestring(0 0,1 1,2 2,3 3))——几何集合
几何体构造函数
达梦实现的几何体函数以包中方法的形式提供给用户,包名为 dmgeo。使用几何体构造函数时,必须加上包名 dmgeo。 下面介绍通过 WKT 信息与 SRID 信息构造的相关函数方法
ST_GeomFromText 根据 wkt 信息和 srid 信息构造空间数据基础类。
ST_PointFromText 根据 wkt 信息和 srid 信息构造点类。
ST_LineFromText 根据 wkt 信息和 srid 信息构造线类。
ST_PolyFromText 根据 wkt 信息和 srid 信息构造面类。
ST_MPointFromText 根据 wkt 信息和 srid 信息构造多点类。
ST_MLineFromText 根据 wkt 信息和 srid 信息构造多线类。
ST_MPolyFromText 根据 wkt 信息和 srid 信息构造多面类