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");
分享到:
相关推荐
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 类型是对空间对象的几何描述,定义了空间对象的形状和位置。SDO_GEOMETRY 类型是 Oracle Spatial 的核心数据类型,用于存储和处理...
首先,为了能够在EclipseLink中处理SDO_GEOMETRY字段,你需要引入Oracle提供的特定jar包,这些包包含了处理Oracle空间数据类型的类和接口。这些jar通常包括`ojdbc.jar`和`orai18n.jar`等,它们包含了对SDO_GEOMETRY...
在 Oracle Spatial 中,空间数据被存储在 SDO_GEOMETRY 字段中,这是一个符合 OpenGIS 规范的对象类型,包含了关于几何形状的信息,如类型(SDO_GTYPE)、空间参考ID(SDO_SRID),以及点(SDO_POINT)、线(SDO_...
在 Oracle 数据库中,有多种特殊数据字段类型,例如 SDO_GEOMETRY 字段,该字段用于存储空间几何数据。SDO_GEOMETRY 字段是一种复杂的数据类型,无法使用普通的数据类型来存储,因此需要使用 OCCI 来添加对该字段的...
接下来,我们来看如何在 Oracle 中创建一张包含 SDO_GEOMETRY 类型字段的表,并插入一些空间数据。 ```sql CREATE TABLE cola_markets ( mkt_id NUMBER PRIMARY KEY, name VARCHAR2(32), shape SDO_GEOMETRY ); ...
在 Oracle Spatial 中,空间数据主要通过两个关键概念进行管理:空间数据字段(SDO_GEOMETRY 字段)和元数据表。SDO_GEOMETRY 字段是用于存储空间对象的核心结构,它包含了关于几何形状的信息,如点、线和多边形。这...
Oracle Spatial利用SDO_GEOMETRY字段来存储空间数据,确保了空间信息与属性数据的一体化管理。通过USER_SDO_GEOM_METADATA_TABLE视图,用户可以便捷地管理和维护空间数据表。此外,R-Tree和四叉树索引技术提高了空间...
Oracle Spatial把纯关系型数据库改造为对象关系型数据库,在数据类型中添加SDO_GEOMETRY类型,把空间信息作为一个字段存储;而ArcSDE则利用多张关联的表来把空间数据存储到纯关系型数据库中。 实际应用中,如何...
Oracle Spatial的核心功能是通过元数据表、空间数据字段(SDO_GEOMETRY)和空间索引来管理空间数据。元数据表存储了空间数据的相关信息,如数据表名称、空间字段、坐标范围、坐标参考系(SRID)和维度信息。用户通常...
在Oracle Spatial中,所有空间数据都存储在空间字段SDO_GEOMETRY中。SDO_GEOMETRY是根据OpenGIS规范定义的一个对象类型,包括以下几个关键组成部分: - **SDO_GTYPE**:定义存储对象的类型。 - **SDO_SRID**:标识...
3. **创建空间索引**:为SDO_Geometry字段创建空间索引,如使用Oracle的SDO_INDEX创建R树索引。 4. **查询和分析**:编写SQL查询语句,结合Oracle Spatial函数进行空间查询和空间分析,如查找距离最近的应急资源、...
在Oracle Spatial中,空间数据的管理主要依赖于元数据表、SDO_GEOMETRY字段和空间索引。SDO_GEOMETRY字段是存储空间数据的关键,它是一个对象类型,根据OpenGIS规范定义,包含了关于几何对象的信息,如类型、坐标和...
Oracle Spatial包含了SDO_GEOMETRY对象数据类型,这是一种特殊的数据结构,用于存储二维和三维的空间对象。此外,它还提供了SDO_CS(坐标系统)、SDO_FILTER和SDO_NN等包和函数,用于空间数据的操作、查询和分析。 ...
首先,Oracle Spatial通过元数据表来管理和追踪含有空间数据的表,这些表包含空间字段`sdo_Geometry`,用于存储空间对象。元数据表记录了数据表的名称、空间字段的信息,如坐标范围、坐标系和维度。用户可以通过访问...
在代码中,你可以使用TopLink Spatial提供的API来操作SDO_GEOMETRY字段。例如,如果你有一个实体类`GSegmentsTc2`,其中有一个`Shape`属性映射到SDO_GEOMETRY类型的数据库字段,你可以通过以下方式获取和打印其WKT...
Oracle Spatial通过元数据表、空间数据字段(如MDSYS.SDO_GEOMETRY)和空间索引来管理空间数据。 元数据表是Oracle Spatial的核心组成部分,它包含了关于含有空间数据的表格的详细信息,如表格名称、空间字段名、...
根据提供的文件信息,本文将详细解释如何使用SQL语句创建Oracle Spatial中的图层,并涉及到相关的步骤与具体操作方法。 ### 如何用SQL语句创建Oracle Spatial的图层 #### 步骤一:创建表结构 首先,需要创建一个...
它采用对象关系模型(Object-Relational Model Spatial),通过定义MDSYS.SDO_GEOMETRY类型的字段来存储几何对象,实现了OpenGIS Feature实现规范中的“SQL 92 + Geometry”方案。这种设计使得空间数据和属性数据可以...