预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

1使用ST_Geometry存储空间数据(oracle)简介ArcSDEforOracle提供了ST_Geometry类型来存储几何数据。ST_Geometry是一种遵循ISO和OGC规范的,可以通过SQL直接读取的空间信息存储类型。采用这种存储方式能够更好的利用oracle的资源,更好的兼容oracle的特征,比如复制和分区,并且能够更快的读取空间数据。使用ST_Geometry存储空间数据,可以把业务数据和空间数据存储到一张表中(使用SDENBLOB方式业务数据和空间数据是分开存储在B表和F表中的),因此可以很方便的在业务数据中增加空间数据(只需要在业务表中增加ST_Geometry列)。使用这种存储方式还能够简化多用户的读取,管理(只需要管理一张表)。从ArcGIS9.3开始,新的ArcSDEgeodatabasesforOracle会默认使用ST_Geometry方式来存储空间数据。它实现了SQL3规范中的用户自定义类型(user-defineddatatypes),允许用户使用ST_Geometry类型创建列来存储诸如界址点,街道,地块等空间数据。使用ST_Geometry类型存储空间数据,具有以下优势:1)通过SQL函数(ISOSQL/MM标准)直接访问空间数据;2)使用SQL语句存储、检索操纵空间数据,就像其他类型数据一样。3)通过存储过程来进行复杂的空间数据检索和分析。4)其他应用程序可以通过SQL语句来访问存储在geodatabase中的数据。从ArcGIS9.3开始,新的ArcSDEgeodatabasesforOracle要求所以ST函数调用的时候前面都要加上SDEschema名称。例如:要对查询出来的空间数据进行union操作,则SQL函数需要这样写:"sde.ST_Union",在9,2版本之前,可以不加SDEschema名称。存储结构ST_Geometry存储空间数据的结构如下表:NameTypeENTITYNUMBER(38)NUMPTSNUMBER(38)MINXFLOAT(64)MINYFLOAT(64)MAXXFLOAT(64)MAXYFLOAT(64)MINZFLOAT(64)MAXZFLOAT(64)MINMFLOAT(64)MAXMFLOAT(64)AREAFLOAT(64)LENFLOAT(64)SRIDNUMBER(38)POINTSBLOBEntity:为要素类型,包括(linestring,multilinestring,multipoint,multipolygon,point,orpolygon)。具体的值对应的类型可以通过st_geom_util存储过程获得。NUMPTS为坐标点的个数Minx,miny,maxx,maxy:对应几何的外包络矩形Area:几何的面积Len:几何的周长SRID:空间参考系ID,对应ST_Spatial_References表中的空间参考信息POINTS:坐标序列操作函数下面是一些针对ST_Geometry进行操作的函数,输入为ST_Geometry类型数据,输出为Number型数据、ST_Area返回几何的面积。ST_Len返回几何的周长。ST_Entity返回几何类型.ST_NumPoints返回几何坐标点的个数.ST_MinM,ST_MinX,ST_MinY,ST_MinZ返回几何不同维度的最小坐标.ST_MaxM,ST_MaxX,ST_MaxY,ST_MaxZ返回几何不同维度的最大坐标.ST_SRID返回空间参考系ID.Get_release返回版本信息.如下面例子,在us_states表中查找所有state的名字并计算state的面积。SELECTname,st_area(geometry)FROMus_statesORDERBYname;构造ST_Geometry对象ST_LineString,ST_MultiLineString,ST_MultiPoint,ST_MultiPolygon,ST_Point,和ST_Polygon全部是ST_Geometry的子类.ST_Geometry和他的子类共享属性和方法.ST_LineString,ST_MultiLineString,ST_MultiPoint,ST_MultiPolygon,ST_PointandST_Polygon的构造函数的定义是相同的,构造函数的名字就是类型名。ST_Point是个有限对象(只有一个点),因此可以使用下面的方法来构造。1,使用xy坐标和SRID来构造ST_PointMETHODFINALCONSTRUCTORFUNCTIONST_POINTRETURNSSELFASRESULTArgumentNameTypeIn/OutDef