ST_Geometry存储格式技术研究与总结

环境配置:

本次技术调研采用了一下软件配置:WindosServer2003系统,ArcGISDesktop9.3,ArcSDE9.3,Oracle10G数据库。

1、数据库服务器端环境配置方法

由于ST_Geometry的存储格式是由Esri公司提出的一种新空间数据存储标准,如果要通过SQL函数访问存储在Oracle中的ST_Geometry类型的数据,则需要通过扩展Oracle的的externalprocedureagent或者extproc来实现,因此,直接使用这些SQL函数需要配置oracle的listener,让oracle能够找到这些扩展库。如果使用SDE读取这些数据,则不需要配置。下面简单介绍一下Windows下配置步骤:

下面主要介绍一下默认情况下如何配置(windows下面)。

1)找到oracle数据库的安装目录(服务器端),然后定位到oraclehome\NETWORK\ADMIN目录

2)备份listener.ora文件,这点很重要,在对oracle的配置做任何更改的时候都要进行备份

3)打开listener.ora文件,找到(PROGRAM=extproc)这一行,在这行下面添加对ST_SHAPELIB的引用,即指定ST_SHAPELIB的地址,如下:

(ENVS="EXTPROC_DLLS=C:\ProgramFiles\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll")

其中“D:\ProgramFiles\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll”为ST_SHAPELIB的物理路径,可以根据安装情况自己修改。

4)保存listener.ora文件,重新启动监听程序。

barry

附录:

未修改前的listener.ora

#listener.oraNetworkConfigurationFile:D:\oracle\product\10.2.0\db_1

\network\admin\listener.ora

#GeneratedbyOracleconfigurationtools.

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(PROGRAM=extproc)

(SID_NAME=PLSExtProc)

(ORACLE_HOME=F:\oracle\product\10.2.0\db_1)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))

)

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=rqgw)(PORT=1521))

)

)

修改后的listener.ora

#listener.oraNetworkConfigurationFile:D:\oracle\product\10.2.0\db_1

\network\admin\listener.ora

#GeneratedbyOracleconfigurationtools.

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(PROGRAM=extproc)

(ENV="EXTPROC_DLLS=d:\programfiles\arcgis\arcsde\ora10gexe\bin\st_shapelib.dll")

(SID_NAME=PLSExtProc)

(ORACLE_HOME=F:\oracle\product\10.2.0\db_1)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))

)

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=rqgw)(PORT=1521))

)

)

2、常用函数介绍(oracle)

更多的函数使用说明,请感兴趣的人自己查看这里帮助:

ArcGISDesktophelp->GeodatabaseandArcSDE->WorkingwithgeodatabasesusingSQL->SQLfunctionsreference

1、sde.st_crosses(g1sde.st_geometry,g2sde.st_geometry)返回值1or0,判断两个几何要素是否相交2、sde.st_within(g1sde.st_geometry,g2sde.st_geometry)返回值1or0,判断第一个要素是否完全包含在第二个要素内3、sde.st_contains(g1sde.st_geometry,g2sde.st_geometry)返回值1or0,判断第一个要素是否完全包含第二个要素4、sde.st_intersects(g1sde.st_geometry,g2sde.st_geometry)返回值1or0,判断两个几何要素intersection部分是否为空5、sde.st_buffer(g1sde.st_geometry,distancedouble_precision)返回st_geometry类型,计算几何体的缓冲范围3、简单几何要素的表示方法点POINT(46457.6312255948886.52319336)线LINESTRING(46853.4371948248912.61218262,46855.5592041048902.85321045)面POLYGON((46146.1632080149057.50921631,46279.9082031348845.41619873,46286.4451904348846.73419189,46286.8532104549082.47521973,46284.2902221749084.51019287,46154.7142334049071.47521973,46147.4042358449066.10620117,46146.1632080149057.50921631))

相关推荐