彩票走势图

TatukGIS中Oracle空间层或GeoRaster层的使用教程

原创|其它|编辑:郝浩|2013-01-09 15:42:45.000|阅读 392 次

概述:TatukGIS支持Oracle Spatial/Locator (矢量)和Oracle GeoRaster数据格式,本文通过代码介绍了如何打开Oracle空间层或Oracle Georaster层、如何导出数据到Oracle Spatial层等。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

TatukGIS Developer KernelGIS开发包(VCL、ActiveX和.NET Enterprise版本)、TatukGIS Internet Server GIS网络服务器TatukGIS Editor GIS编辑器均直接支持Oracle Spatial/Locator (矢量)和Oracle GeoRaster数据格式。

详细的功能支持有:

  • 读/写/编辑Oracle Spatial Vector Coverages (SDO_GEOMETRY)。
  • 创建新的Oracle Spatial表和导入数据到该表。
  • 使用定位器空间操作符进行服务器端的空间查询(基于DE9IM模型)。
  • 利用Oracle Spatial索引。
  • 支持Oracle Georaster层的只读。

导入数据到基于图层名称的Oracle Spatial:

  • 从空间USER_SDO_GEOM_METADATA表使用名称和已注销的表删除现有的表。
  • 创建包含该图层名称的新表,在表中新建一列, 例如:FID是主键,GEOMETRY是几何图形类型和所有领域的层结构。
  • 创建并插入空间数据。
  • 在USER_SDO_GEOM_METADATA中注册新图层。
  • 如果可能的话,创建一个空间索引(R-TREE)。

打开Oracle Spatial层

Oracle Spatial层可以使用名为name_of_layer.ttkls的*.ttkls文件打开。TTKLS文件是TatukGIS的存根文件,他包含了连接到SQL矢量图层的连接设置。TTKLS文件的创建方式有两种:

  • 使用任何文本编辑器手动创建(如记事本);
  • 使用TatukGIS Editor中的SQL连接向导创建(请参考菜单:Layer/Add SQL Layer)。

连接到ArcSDE图层也可以不使用*.ttkls文件进行连接,方法也有两种:

  • 将所有的*.ttkls文件参数作为一个CRLF或'\n'字符串(作为一个新行)嵌入到Path属性中;
  • 使用SQLParameters['KEY']=VALUE为SQLParameters属性分配*.ttkls文件参数。

Oracle空间层的*.ttkls文件的结构如下:

  [TatukGIS Layer]
  Storage=OracleSpatial
  Dialect=ORACLE
  Layer=layer table name 
  Features=TABLE/VIEW NAME; if provided, will be joined with standard table
  GeometryColumn=geometry column name (MDSYS.SDO_GEOMETRY)
  IndexColumn=unique ID column name of the UID (must be numeric type)
  Srid=Custom protection ID, use for writing, must exist in MDSYS.CS_SRS
  GeometryRelationships=Server|Client - default is server if parameter is omitted
  ValidateSettings=True|False - default is True, validates the above parameters
  MetadataTable=Native|Internal - default is Native
  ForceSpatialIndex=True|False
  ...

  Database=database name (TNS alias or SERVER:port/Service)
  User_Name=user name
  Password=user password
  ...

例如:

  [TatukGIS Layer]
  Storage=OracleSpatial
  Dialect=ORACLE
  Layer=DROGI
  GeometryColumn=GEOMETRY
  IndexColumn=FID
  ValidateSettings=False
  Database=SERVER/SPATIAL
  User_Name=SCOTT
  Password=TIGER

注意事项:

  • 本地计算机必须按照Oracle客户端驱动。Oracle客户端驱动可以从甲骨文官网下载。TatukGIS建议你使用Oracle Instant Client,下载地址:.
  • 导入一个新图层到Oracle Spatial时,确保TableName和图层名称有效(第一个字符应该是英文字母等,符合Oracle要求即可)。
  • 如果GeometryColumn为空,图层将从USER_SDO_GEOM_METADATA尝试检测一个有效的列。
  • 如果IndexColumn为空,图层将尝试检测一个有效的列的索引分配。
  • 确保任何个顶几何空间表的列的空间索引存在并有效。
  • 确保用户表已经在USER_SDO_GEOM_METADATA中注册。
  • 确保表的列允许为空值时会使用一个新的形状保留UID记录。
  • 如果你检查几何对象之间的DE9-IM Coindicence,请记住设置GeometryRelationships属性。默认值为Server(减少返回的行数)。
  • 为了使用服务器端空间拓扑算子,执行层FindFirst方法应包含适当的_de9im<.i>参数,如:shp := lv.FindFirst( Extent, Scope, buffer, RELATE_INTERSECT)。 尝试使用GisTopology模型中预定义的拓扑算子。
  • ValidateSettings=True强制验证IndexColumn、GeometryColumn和空间索引。否则参数被完全信任,图层将更快速的打开。
  • Srid允许设置列投影ID,在MDSYS.CS_SRS中定义,在图层EPSG写入操作时会用到。
  • 用户可以通过设置图层的SmartSize属性修改返回的形状的数量,以控制SDO_FILTER中min_resolution的值(如果该形状目前变焦的最小边界框很小,则形状不返回)。
  • MetadataTable属性指明了图层建立数据信息需要的基本参数在哪里,比如几何列、Srid和广度。
  • Scope属性,如:Scope=country_code='POL',可以用于限制从大数据集读取数据的数量。这个属性可以在图层配置文件.ini中或者通过代码来设置。
  • 加入一个视图(外部属性数据)到一个图层,在.ttkls文件中设置Features属性,如:Features=view_my_table。连接需要在视图中存在一个列名为 'IndexColumn'的列。
  • 如果一个图层是基于视图,它不能检查是否存在和禁用空间索引的空间查询。ForceSpatialIndex=True强制层使用空间索引。

导出数据到Oracle Spatial层

  1. 在中打开主题矢量图层。
  2. 准备和创建一个基于以上信息的*.ttkls文件。确保满足了KB项目注释部分的所有限制。
  3. 使用TatukGI Editor的“Layer\Export...”菜单找到“Layer Export tool”,选择适当的导出属性(广度、查询、形状类型)。然后点击[OK]按钮。
  4. 修改文件类型为*.ttkls扩展名,选择已经准备好的.ttkls导入文件,点击[Save]按钮。确认文件是否需要替换。
  5. 如果配置的有效的,导出时会有一个进度条。成功完成导出操作后会弹出消息框。
  6. 测试导出的数据,相同配置的文件可以用于在TatukGI Editor中打开图层。

关于性能

  1. 软件和硬件的好坏均会影响数据库(服务器)的性能。
  2. 加载的速度依赖于:
    ①对象的数量。对于较大的层,一个单独的表索引可以提高性能。
    ②空间索引。如果没有空间索引,操作会慢很多。
  3. 元数据索引(主键)。

故障排除

Oracle Spatial的连接问题

Oracle Spatial/Locator的原生支持需要设置一些Windows环境变量。这些变量告诉DK Oracle客户端二进制文件、库和tnsnames.ora信息在哪儿。更重要的环境变量是:

  • ORACLE_HOME - "oracle客户端主目录"
  • ORACLE_SID - "从tnsnames.ora默认的数据库SID"
  • TNS_ADMIN - "tnsnames.ora存在哪个文件夹"

功能问题

Oracle Spatial是Oracle数据库的一个空间盒。所有Oracle数据库均包含Oracle Spatial/Locator盒,这是一个完整的Oracle Spatial功能集的子集。 Oracle Spatial/Locator和完整Oracle Spatial之间的差异:.

数据读取的问题

由于空间数据库的供应商不同,并且由不同的应用程序生成,有可能会在读取数据的时候出现问题,原因是:

  1. 没有空间索引。TatukGIS Oracle Spatial在有或没有空间索引的情况下都能工作。TatukGIS软件试图测试,如果空间索引可以为运营商提供一个空间索引的空间的话。因为几何图形有时候是无效的,空间索引可能不正确或者空间操作符返回不正确的数据。
  2. 无效的广度。给定的表格的USER_SDO_GEOM_METADATA信息可能无效或丢失。

打开Oracle Georaster图层

TatukGIS DK Spatial Database Extensions(VCL、ActiveX和.NET 9.0版本以及更高版本)包含Oracle Georaster图层格式的读支持(打开和显示)。TatukGIS Internet Server(9.0以及更高版本)和TatukGIS Editor(2.0以及更高版本)也支持Oracle Georaster地图层。

TatukGIS使用名为name_of_layer.ttkls的*.ttkls文件连接到Oracle Georaster层。上面已经提到,*ttkps文件可以使用文本编辑器比如记事本创建。

*.ttkps文件的结构如下:

[TatukGIS Layer]
Dialect=Oracle
Storage=OracleGeoraster
Layer=name_of_the_registered_layer_table;where_filter
...

DATABASE=database_service_name 
USER_NAME=user_name
PASSWORD=user_password

例如:

[TatukGIS Layer]
Storage=OracleGeoraster
Dialect=Oracle
Layer=raster_test1;
DATABASE=test-db:1521/spatial
USER_NAME=scott
PASSWORD=tiger

标签:GIS

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP