`
iihero
  • 浏览: 258076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

访问Oracle Spatial中的SDO_GEOMETRY字段的方法(windows下)

阅读更多

1.使用oci或者occi,在安装oracle后可以在oraclehome\md\demo\examples目录下参考其C++实现,
该方法效率最高,但实现比较复杂;

2.使用Oracle提供的OO4O,是com,在vb6代码如下:
'***************************************************************
'Gisc Lab, Nanjing Normal University
'
'Purpose: This Demo Shows how to read spatial data from Oracle
'
'Input: User ID='Scott', Password='Tiger', Data Source='Apollo',
' SQL='select * from interstates where rownum<2'
'
'Output: xmlDocument or xmlReader
'
'Author: Charlie Chen
'
'Data: 7-28-2004
'***************************************************************

Dim OraSession As OraSessionClass
Dim OraDatabase As OraDatabase
Dim interstates As OraDynaset
Dim geom As OraObject
Dim coords As OraCollection

Private Sub Command1_Click()
Set OraSession = New OraSessionClass


Set OraDatabase = OraSession.OpenDatabase("apollo", "scott/tiger", 0&)

Set interstates = OraDatabase.CreateDynaset("select * from interstates where rownum<2", 0&)

Set geom = interstates.Fields("GEOM").Value

Set coords = geom.SDO_ORDINATES

For i = 1 To coords.Size
Debug.Print coords.Item(i)
Next i
End Sub

程序可读性和维护性较好,需要添加对oip9.tlb的引用

3.使用ODP.NET(Oracle公司提供的在.net平台上的数据访问组件),在.NET环境下可以直接转换为xml坐标字符串,但效率太低;

4.使用JDBC或者SDO API,无论从哪方面来讲都比较理想。

补充.net平台上的实现,代码如下:

    private XmlDocument GetSpatialData(string connectionString, string SQL)
{
OracleConnection con = new OracleConnection(connectionString);

try
{
con.Open();

OracleCommand cmd = new OracleCommand(SQL, con);
cmd.XmlCommandType = OracleXmlCommandType.Query;
cmd.BindByName = true;
int rows = cmd.ExecuteNonQuery();

XmlReader xmlReader = cmd.ExecuteXmlReader();

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.PreserveWhitespace = true;
xmlDocument.Load(xmlReader);

return xmlDocument;
}
catch(Exception e)
{
throw e;
}
finally
{
if (con.State == System.Data.ConnectionState.Open) con.Close();
con.Dispose();
}
}

    调用:
    string constr = "User Id=scott;Password=tiger;Data Source=apollo";
string sql = "select * from interstates where rownum<2";

XmlDocument xmlDocument = GetSpatialData(constr, sql);

Console.WriteLine((xmlDocument != null) ? xmlDocument.InnerXml : "fail to read");

 

分享到:
评论

相关推荐

    Oracle为sdo_geometry创建空间索引

    sdo_geometry 是 Oracle 中的一种特殊数据类型,用于存储空间数据。例如,下面是一个创建包含 sdo_geometry 数据类型的表的示例: ```sql CREATE TABLE G_GADGETS_TC2_LF_520 ( ID NUMBER, SHAPE SDO_GEOMETRY ); ...

    Oracle Spatial 中的SDO_GEOMETRY类型

    Oracle Spatial 中的 SDO_GEOMETRY 类型详解 Oracle Spatial 中的 SDO_GEOMETRY 类型是对空间对象的几何描述,定义了空间对象的形状和位置。SDO_GEOMETRY 类型是 Oracle Spatial 的核心数据类型,用于存储和处理...

    EclipseLink通过JPA方式映射Sdo_geometry字段

    首先,为了能够在EclipseLink中处理SDO_GEOMETRY字段,你需要引入Oracle提供的特定jar包,这些包包含了处理Oracle空间数据类型的类和接口。这些jar通常包括`ojdbc.jar`和`orai18n.jar`等,它们包含了对SDO_GEOMETRY...

    oracle spatial

    在 Oracle Spatial 中,空间数据被存储在 SDO_GEOMETRY 字段中,这是一个符合 OpenGIS 规范的对象类型,包含了关于几何形状的信息,如类型(SDO_GTYPE)、空间参考ID(SDO_SRID),以及点(SDO_POINT)、线(SDO_...

    OCCI添加Oracle特殊数据字段类型

    在 Oracle 数据库中,有多种特殊数据字段类型,例如 SDO_GEOMETRY 字段,该字段用于存储空间几何数据。SDO_GEOMETRY 字段是一种复杂的数据类型,无法使用普通的数据类型来存储,因此需要使用 OCCI 来添加对该字段的...

    Oracle Spatial讲义

    在 Oracle Spatial 中,空间数据主要通过两个关键概念进行管理:空间数据字段(SDO_GEOMETRY 字段)和元数据表。SDO_GEOMETRY 字段是用于存储空间对象的核心结构,它包含了关于几何形状的信息,如点、线和多边形。这...

    利用MapX访问Oracle Spatial空间数据库的研究.pdf

    Oracle Spatial利用SDO_GEOMETRY字段来存储空间数据,确保了空间信息与属性数据的一体化管理。通过USER_SDO_GEOM_METADATA_TABLE视图,用户可以便捷地管理和维护空间数据表。此外,R-Tree和四叉树索引技术提高了空间...

    Oracle Spatial和ArcSDE的应用比较研究.pdf

    Oracle Spatial把纯关系型数据库改造为对象关系型数据库,在数据类型中添加SDO_GEOMETRY类型,把空间信息作为一个字段存储;而ArcSDE则利用多张关联的表来把空间数据存储到纯关系型数据库中。 实际应用中,如何...

    Oracle Spatial的中文简介

    Oracle Spatial的核心功能是通过元数据表、空间数据字段(SDO_GEOMETRY)和空间索引来管理空间数据。元数据表存储了空间数据的相关信息,如数据表名称、空间字段、坐标范围、坐标参考系(SRID)和维度信息。用户通常...

    基于OracleSpatial的Shapefile数据存储研究

    在Oracle Spatial中,所有空间数据都存储在空间字段SDO_GEOMETRY中。SDO_GEOMETRY是根据OpenGIS规范定义的一个对象类型,包括以下几个关键组成部分: - **SDO_GTYPE**:定义存储对象的类型。 - **SDO_SRID**:标识...

    基于Oracle Spatial的环境应急数据库设计.pdf

    3. **创建空间索引**:为SDO_Geometry字段创建空间索引,如使用Oracle的SDO_INDEX创建R树索引。 4. **查询和分析**:编写SQL查询语句,结合Oracle Spatial函数进行空间查询和空间分析,如查找距离最近的应急资源、...

    基于Oracle Spatial的空间数据的研究.pdf

    在Oracle Spatial中,空间数据的管理主要依赖于元数据表、SDO_GEOMETRY字段和空间索引。SDO_GEOMETRY字段是存储空间数据的关键,它是一个对象类型,根据OpenGIS规范定义,包含了关于几何对象的信息,如类型、坐标和...

    基于Oracle Spatial的导航数据库的建立方法.pdf

    Oracle Spatial包含了SDO_GEOMETRY对象数据类型,这是一种特殊的数据结构,用于存储二维和三维的空间对象。此外,它还提供了SDO_CS(坐标系统)、SDO_FILTER和SDO_NN等包和函数,用于空间数据的操作、查询和分析。 ...

    基于Oracle Spatial实现位置服务的研究.pdf

    首先,Oracle Spatial通过元数据表来管理和追踪含有空间数据的表,这些表包含空间字段`sdo_Geometry`,用于存储空间对象。元数据表记录了数据表的名称、空间字段的信息,如坐标范围、坐标系和维度。用户可以通过访问...

    WebLogic添加空间字段支持

    在代码中,你可以使用TopLink Spatial提供的API来操作SDO_GEOMETRY字段。例如,如果你有一个实体类`GSegmentsTc2`,其中有一个`Shape`属性映射到SDO_GEOMETRY类型的数据库字段,你可以通过以下方式获取和打印其WKT...

    用OO4O实现Oracle Spatial接口.pdf

    Oracle Spatial通过元数据表、空间数据字段(如MDSYS.SDO_GEOMETRY)和空间索引来管理空间数据。 元数据表是Oracle Spatial的核心组成部分,它包含了关于含有空间数据的表格的详细信息,如表格名称、空间字段名、...

    如何用SQL语句创建Oracle Spatial的图层-MyGIS软件工作室-James MapInfo技术论坛.txt

    根据提供的文件信息,本文将详细解释如何使用SQL语句创建Oracle Spatial中的图层,并涉及到相关的步骤与具体操作方法。 ### 如何用SQL语句创建Oracle Spatial的图层 #### 步骤一:创建表结构 首先,需要创建一个...

    基于Oracle Spatial的上海市公交空间数据库设计与开发.pdf

    它采用对象关系模型(Object-Relational Model Spatial),通过定义MDSYS.SDO_GEOMETRY类型的字段来存储几何对象,实现了OpenGIS Feature实现规范中的“SQL 92 + Geometry”方案。这种设计使得空间数据和属性数据可以...

Global site tag (gtag.js) - Google Analytics