02.SDO_GEOMETRY对象类型
Geometry对象2

下 面 的 代 码 使 用
Segment 对 象 来 组 成 一 个 环
pRing.Close();
在Geometry中,封闭的几何形体包括Envelope、 Ring和Polygon,封闭的几何形体可以确定其面积, 因此它们都实现了IArea接口。IArea:Centroid可以 返回这些几何形体的重心;IArea:LabelPoint可以返 回这些几何形体的标注点。
IGeometryCollection Polyline
Polygon对象
Polygon对象是一个有序环 对象的集合,这些环可以是 一个或者多个。 多边形对象通常可以用于描 述具有面积的多边形离散矢 量对象。
IPolygon接口是 Polygon类主要接口。 ExteriorRingCount 属性可以返回一个多 边形全部外部环的数 目。 InteriorRingCount 返回一个多边形的内 部环数目。
(1)ConstructEnvelope可以通过一 个给定的包络线来产生一个内置的 椭圆对象。 (2)ConstructQuarterEllipse构造 器要求输入起始点和终止点和方向 属性以产生一个椭圆弧。 (3)ConstructTwoPointsEnvelope 方法需要输入四个参数,起始点、 终止点、包络线、以及方向属性。 (4)ConstructUpToFivePoints可以 输入5个点来构造一个椭圆弧,这 五个点分别是起始点、终止点、一 个弧上任意点以及两个椭圆对象上 的附加点。
口�� ������ ������ ������ ������ ������ ������ IPoint pPoint1; IPoint pPoint2; pPoint1 = new PointClass(); pPoint1.PutCoords(100, 20); pPoint2 = new PointClass(); pPoint2.PutCoords(20, 310); IGeometryCollection pPolyline; pPolyline = new PolylineClass(); ISegmentCollection pPath; pPath = new PathClass(); //产生线段对象将其添加到路径对象������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ILine pLine; object Missing1 = Type.Missing; object Missing2 = Type.Missing; pLine = new LineClass(); pLine.PutCoords(pPoint1, pPoint2); pPath.AddSegment(pLine as ISegment,ref Missing, ref Missing2); //将路径对象添加到多义线对象������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������
OracleSpatial中SDO_Geometry详细说明

OracleSpatial中SDO_Geometry详细说明Oracle Spatial中SDO_Geometry详细说明在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储⽅式,分别有:⼆进制Long Raw 、ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等等。
关于这⼏种⽅式的各⾃的优缺点不是主要的探讨的⽅向,这些我们可以通过ArcGIS中的ArcGIS Server Help得到相关的帮助。
这⾥主要是学习关于基于Oracle Spatial的存储⽅式,通过这种存储⽅式⼏何列Shape的字段类型为mdsys.sde_geometry类型。
Oracle Spatial定义的SDO_GEOMETRY类型为:CREATE TYPE sdo_geometry AS OBJECT (SDO_GTYPE NUMBER, //前⾯字符串为字段名;后⾯字符串为字段类型SDO_SRID NUMBER,SDO_POINT SDO_POINT_TYPE,SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,SDO_ORDINATES SDO_ORDINATE_ARRAY);其中sdo_geometry AS OBJECT ,标识该类型为对象类型。
开始我们可以想想它为ArcObjects 中的Geometry对象(本来要素的shape字段中的对象就是Geometry),⽽不要理解他是怎么样组织的。
⾄于该类型中的SDO_POINT_TYPE、SDO_ELEM_INFO_ARRAY、SDO_ORDINATE_ARRAY也是Oracle Spatial⾃定义的类型和sdo_geometry 是⼀样的。
现在对sdo_geometry 类型中的各个参数简单的介绍:1、SDO_GTYPE :表⽰要存储的⼏何类型,如点线⾯。
它是通过NUMBER类型来表达的;2、SDO_SRID :⼏何的空间参考坐标系,类型也为NUMBER;3、SDO_POINT :如果⼏何类型点类型的话,就是存储点坐标,否则为空。
geometry数据类型

geometry数据类型
Geometry数据类型是一种能够描述空间几何对象的数据类型,在地理信息系统 (GIS) 中得到广泛应用。
它主要用于表示点、线、面和多面体等几何对象的几何形态和空间位置信息。
Geometry 数据类型的基本属性包括:坐标、形状、尺寸、空间关系等。
其中,坐标是描述几何对象位置的最基本属性,通常使用二维或三维坐标系来表示。
形状则是描述几何对象外形的属性,通常包括点、线、面等。
尺寸则是描述几何对象大小的属性,通常包括长度、面积、体积等。
空间关系则是描述几何对象之间空间位置关系的属性,通常包括包含、相邻、交叉等。
Geometry 数据类型的应用范围十分广泛,包括测绘、地理信息系统、建筑设计、工程设计等领域。
在测绘中,Geometry 数据类型可用于描述地物的形态和位置信息;在地理信息系统中,Geometry 数据类型可用于描述地图上各种几何对象的形态和位置信息,以及进行空间分析和空间查询等操作;在建筑设计和工程设计中,Geometry 数据类型可用于描述建筑物和工程设施的形态和位置信息,以及进行空间分析和空间查询等操作。
总之,Geometry 数据类型是一种重要的空间数据类型,广泛应用于各种领域。
在未来,随着技术的不断进步和应用需求的不断增加,Geometry 数据类型的应用前景将越来越广阔。
- 1 -。
oracle 根据一组经纬度计算面积的函数

一、介绍Oracle数据库和空间数据类型Oracle数据库是世界上最流行的关系型数据库管理系统之一,它具有强大的数据处理和管理能力。
随着地理信息系统的兴起,空间数据处理成为数据库管理系统的一个重要领域。
Oracle数据库提供了丰富的空间数据类型和功能,能够灵活处理地理信息数据。
二、空间数据类型的概念和用途1. 空间数据类型是指用来描述和存储地理空间信息的数据类型,例如点、线、面等。
在数据库中,空间数据类型可以用来表示地理对象的几何形状,以及与之相关的属性信息。
2. 空间数据类型的主要用途包括空间分析、空间查询、地理信息系统等领域,能够帮助用户更方便地管理和分析地理信息数据。
三、Oracle数据库中的空间数据类型1. Oracle数据库支持多种空间数据类型,包括SDO_GEOMETRY、SDO_POINT、SDO_LINESTRING、SDO_POLYGON等。
这些数据类型可以用来表示不同形状的地理对象,如点、线、面等。
2. 通过使用这些空间数据类型,用户可以在数据库中存储和管理各种地理信息数据,实现空间数据的存储、查询和分析。
四、根据一组经纬度计算面积的函数1. 在Oracle数据库中,可以通过编写函数来实现根据一组经纬度计算面积的功能。
这个函数可以接受输入的经纬度信息,并根据该信息计算出对应地理对象的面积。
2. 在函数内部,可以使用Oracle数据库提供的空间数据类型和相关函数来实现地理信息的计算和分析。
可以使用SDO_GEOMETRY类型来表示地理对象的几何形状,使用SDO_GEOM.SDO_AREA函数来计算地理对象的面积。
五、编写根据一组经纬度计算面积的函数1. 需要创建一个新的函数,用于接受输入的经纬度信息,并计算对应地理对象的面积。
2. 在函数内部,需要使用空间数据类型和相关函数来实现面积的计算。
通过读取输入的经纬度信息,创建对应的SDO_GEOMETRY类型对象,并调用SDO_GEOM.SDO_AREA函数来计算该对象的面积。
oracle 经纬度范围检索 实例

Oracle经纬度范围检索实例一、背景介绍在现代社会中,地理位置信息的应用越来越广泛。
而经纬度作为地理位置的标识,被广泛应用于各种领域,如地图导航、物流配送、旅游规划等。
在数据库领域中,Oracle作为一种强大的关系型数据库管理系统,也提供了对经纬度范围的检索功能。
本文将介绍如何在Oracle中实现经纬度范围检索,并给出相应的示例。
二、经纬度坐标系统经纬度坐标系统是一种用于地球表面位置描述的坐标系统。
其中,经度表示东西方向的位置,纬度表示南北方向的位置。
经纬度的单位为度(°),分为正负值,东经和北纬为正,西经和南纬为负。
例如,北京的经纬度为东经116.4°,北纬39.9°。
三、Oracle中的地理数据类型在Oracle数据库中,提供了专门的地理数据类型用于存储和处理地理位置信息。
其中,最常用的地理数据类型是SDO_GEOMETRY,它可以表示点、线、面等几何对象。
对于经纬度信息,可以使用SDO_POINT_TYPE类型来表示。
四、创建空间索引为了提高经纬度范围检索的性能,我们可以在经纬度列上创建空间索引。
空间索引是一种特殊的索引,可以加速地理位置相关的查询。
在创建空间索引之前,需要确保Oracle数据库已经安装了Oracle Spatial组件。
在创建空间索引之前,需要先创建一个空间表,用于存储经纬度数据。
可以使用以下SQL语句创建一个名为LOCATIONS的空间表:CREATE TABLE LOCATIONS(ID NUMBER,NAME VARCHAR2(100),COORDINATES SDO_GEOMETRY);接下来,可以使用以下SQL语句创建一个名为LOCATIONS_IDX的空间索引:CREATE INDEX LOCATIONS_IDXON LOCATIONS(COORDINATES)INDEXTYPE IS MDSYS.SPATIAL_INDEX;五、插入经纬度数据在LOCATIONS表中插入经纬度数据,可以使用以下SQL语句:INSERT INTO LOCATIONS(ID, NAME, COORDINATES)VALUES(1, '北京', SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(116.4, 39.9, NULL), NULL, NULL));其中,2001表示点类型,4326表示坐标系为WGS84,SDO_POINT_TYPE表示经纬度值。
地理数据库——精选推荐

1.1数据库与数据库系统引言
1.1数据库与数据库系统引言
1. 2 数据管理技术的演变
– 数据管理技术的发展经历了以下三个阶段: 人工管理阶段 (20世纪50年代中期前)
...… ...…
应用程序1 应用程序2
应用程序n
数据集1 数据集2
数据集n
特点: 1. 数据不保存 2. 应用程序管理数据 3. 数据不共享
字段类型为SDO_GEOMETRY。
l 缺点:
l 用户不能任意定义空间数据结构。 l 不存储拓扑关系。 l 没有解决对象的嵌套问题。
1.3 地理数据库概述
l 面向对象GIS数据库管理系统
l 面向对象数据模型最适应于空间数据的表达和管理, 它不仅支持变长记录,而且支持对象的嵌套、信息的 继承与聚集,允许用户定义对象和对象的数据结构和 操作。
作业
l 试述数据、数据库、数据库管理系统、 数据库系统的概念。
l 试述数据库系统的特点。 l 简述空间数据管理五种模式的特点。
l 思考:为什么要学习和研究数据库理论、 地理数据库理论?
l 常用软件有:Mapinfo ArcView MapGIS等
GIS数据库
RDBMS
空间数据
1.3 地理数据库概述
l 全关系型GIS数据库管理系统
l 即图形和属性数据都用现有的关系数据库管理系统进行管理。
l 用关系数据库管理系统管理图形数据有两种模式:
l 1 基于关系模型的方式,图形数据按照关系数据模型组织。 l Oracle 8i:关系模型,用多行记录和字段类型为Number的一张表
l Shashi Shekhar,空间数据库,机械工业 出版社,2004.1
l 崔铁军,地理空间数据库原理,科学出 版社
SDO_Geometry结构说明
null,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),
MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度)
)
带洞的简单多边形
MDSYS.SDO_GEOMETRY(
2003,
8307,
null,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,n,2003,1),--n表示第二个多边形起始位置
)
2.2.2
折线串
MDSYS.SDO_GEOMETRY(
2002,
8307,
null,
MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),
MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,……)
)
2.2.3
一个环的简单多边形
MDSYS.SDO_GEOMETRY(
MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,点I经度,点I维度,点II经度,点II维度……,点I经度,点I维度)
)
2.2.4
常规格式
MDSYS.SDO_GEOMETRY(
2005,
8307,
null,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1,n),n表示点数
dl04
COLLECTION
是元素的集合,其中的元素只要是非COLLECTION类型的即可
dl05
MULTIPOINT
含一个或多个点的几何体
dl06
MULTILINE or MULTICURVE
含一个或多个线串的几何体
地理空间数据库原理课件要点.docx
数据库:就是为了一定的目的,在计算机系统中以特定的结构组织、存储、管理和应用的相关联的数据集合。
空间数据库是存取、管理空间信息的数据库地理信息系统中的数据库就是一种专门化的数据库,由于这类数据库具有明显的空间特征,所以有人把它称为空间数据库。
空间数据库的内容:矢量地形要素数据库、数字高程模型数据库、数字正射影像数据库、数字栅格地图数据库、元数据库、专题数据库空间数据管理演变过程:人工管理阶段(50年代中期以前)、文件系统阶段(50年代后期一60 年代中期)、文件与数据库管理阶段(20世纪70年代初)、全关系型空间数据库管理系统(20 世纪70年代后期)、对象关系数据库管理系统、面向对象的数据库管理系统地理空间数据库主要研究内容:空间数据模型、地理空间数据的获取与处理、地理空间数据组织、空间数据库管理系统、地理空间数据共享研究空间实体一一指具有确定的位置和形态特征并具有地理意义的地理空间物体。
(河流、道路、城市、航线等)空间实体:地理信息系统中不可再分的最小单元现象称为空间实体•属性是空间实体已定义的特征(如人口数量、林地上林木名称等)空间实体:是指现实世界中地理实体的最小抽象单位,主要包括点、线和面三种类型•空间检索的目的是对给定的空间坐标,能够以尽快的速度搜索到坐标范围内的空间对象,进而对空间对象进行拓扑关系的分析处理空间对象模型特征:1 •图斑模型将一个地理空间划分成一些简单的连通域,每个区域用一个简单的数学函数表示一种主要属性的变化。
根据表示地理现象的不同,可以对应不同类型的属性函数。
2、等值线模型等值线的特点:(1)用一组等值线将地理空间划分成一些区域,每个区域中的属性值的变化是相邻的两条等值线的连续插值;(2)每条线唯一值;(3)两条等值线不相交;3、选样模型地理空间上的属性值是通过釆集有限个点的属性值来确定的。
场的特征⑴空间结构特征和属性域2)连续的、可微的、离散的3)与方向无关的和与方向有关的(各向同性和各向异性)4)空间自相关矢量数据结构的几何数据表达优点:结构简单、直观、易实现以实体为单位的运算和显示。
oracle 计算点到线距离函数
oracle 计算点到线距离函数Oracle数据库提供了一个函数来计算点到线的距离。
该函数称为SDO_GEOM.SDO_DISTANCE。
以下是使用该函数的示例:我们需要在数据库中创建一个表来存储点和线的几何数据。
我们可以使用以下DDL语句创建一个名为GEOMETRY_TABLE的表:CREATE TABLE GEOMETRY_TABLE (ID NUMBER,POINT SDO_GEOMETRY,LINE SDO_GEOMETRY);接下来,我们可以向表中插入一些示例数据:INSERT INTO GEOMETRY_TABLE VALUES (1,SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(1, 1, NULL), NULL, NULL),SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1), SDO_ORDINATE_ARRAY(1,1,5,5)) );现在,我们可以使用SDO_GEOM.SDO_DISTANCE函数来计算点到线的距离。
以下是一个示例查询:SELECT ID, SDO_GEOM.SDO_DISTANCE(POINT, LINE, 0.005) AS DISTANCEFROM GEOMETRY_TABLE;在上面的查询中,我们使用了SDO_GEOM.SDO_DISTANCE函数来计算点到线的距离。
该函数接受三个参数:点的几何数据、线的几何数据和一个可选的容差值。
容差值是一个用于指定距离计算的精度的可选参数。
在上面的示例中,我们将容差值设置为0.005。
通过运行上面的查询,我们可以得到点到线的距离。
结果将包括一个ID列,用于标识每个计算结果的唯一标识,以及一个DISTANCE 列,用于存储计算出的距离值。
通过使用Oracle提供的SDO_GEOM.SDO_DISTANCE函数,我们可以方便地计算点到线的距离,从而满足各种空间分析需求。
Geometry对象浅析
Geometry对象浅析
ArcEngine Geometry库定义了基本几何图形的矢量表达形式,顶级的几何图形有Points、Multipoints、Polylines、Polygons、Multipatches,Geodatabase和绘图系统使用这些几何图形来定义其他各种形状的特征和图形,提供了编辑图形的操作方法和地图符号系统符号化特征数据的途径。
Geometry库中几个核心类和接口构成了Geometry对象的基本框架。
CHINAZ
GeometryEnvironment CHINAZ
GeometryEnvironment提供了从不同的输入、设置或获取全局变量来创建几何图形的方法,以便控制geometry方法的行为。
GeometryEnvironment对象是一个单例对象。
以下为引用的内容:
}
版权说明
如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
作者:温景良
文章出处:/ 或 /。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CREATE TYPE sdo_geometry AS OBJECT(
SDO_GTYPE NUMBER,
SDO_SRID NUMBER,
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY
);
SDO_GTYPE表示几何实体的类型,采用4位数字表示(dltt)其中
1.d表示维数(2、3、4)
2.l表示三维线性参考系(LRS)几何实体的线性参考度量,也就是说,含有度量的那一维(也可能是第三维或第四维)。
否则对一个非LRS几何实体而言,必须接受spatial默认的最后一维作为LRS几何实体的度量维,指定值为0
比如,2003时,表示一个二维的多边形
同时,如果1位SDO_GTYPE中值转换为4位值,SDO_ELEM_INFO中的以3或5结尾的SDO_ETYPE值都要进行相应的转换
维数反映了每个顶点的坐标个数(比如二维则为X和Y)。
点与线都认为是二维对象
对于任意给定的图层(列),所有几何实体的维数必须相同。
不能在同一个图层里混合插入二维数据和三维数据
SDO_SRID用于标示坐标系(空间坐标参考系),与几何实体关联。
若SDO_GRID为空,则几何实体不与空间坐标参考系相关联。
若非空,则必须包含一个来自MDSYS.CS_SRS表中的SRID 字段的值,该值必须要插入到USER_SDO_GEOM_METADATA视图的SRID字段中
在空间表的几何实体类型字段里所有的几何实体必须拥有相等的SDO_SRID值(即使是null)
SDO_POINT
使用X、Y、Z属性值定义对象类型(NUMBER类型)。
若SDO_GEOMETRY的SDO_ELEM_INFO 以及SDO_ORDINDTES数组为空,则SDO_POINT为非空,X与Y值就是点几何实体的坐标值。
否则,SDO_POINT属性将被Spatial忽略。
在SDO_POINT属性里存储点几何实体是为了优化存储;如果在一个图层里只有点数据,spatial推荐将点几何实体保存到SDO_POINT属性中。
SDO_ELEM_INFO
SDO_ELEM_INFO使用变长NUMBER数组表示。
该属性告知如何解释SDO_ORDINATES里面的坐标值。
SDO_ELEM_INFO里的三元组(连续三个值)解释如下:
1.SDO_STARTING_INFO表示某元素在SDO_ORDINATES数组中第一个坐标位置。
起始值为1
(不是0)。
第一个元素的第一个坐标值是SDO_GEOMETRY.SDO_ORDINATES(1)。
若有第二个元素,则其第一个坐标值为SDO_GEOMETRY.SDO_ORDINATES(2),以此类推
2.SDO_ETYPE表示元素类型。
——值为1、2、1003、2003时为简单元素;由单个三元组表示。
当值为1003和2003时,首位为1表示外部,为2表示内部。
1003:多边形外环(必须是逆时针方向);2003:内部多边形环(必须是顺时针方向)。
——spatial不推荐使用SDO_ETYPE为3来表示单一多边形(只有在不知道简单多边形是外部还是内部时才可这样指定)
——在同一几何实体中,不能混合1位和4位的SDO_ETYPE值;(推荐使用4位)
——值为4,1005,2005时表示复合元素,至少有一个三元组属于复合元素。
当值为1005和2005时,第一位表示是外部(1)和内部(2);1005:多边形外环(坐标必须逆时针顺序排列);2005:多边形内环(坐标必须是顺时针顺序排列)。
复合元素中元素是相邻的,复合元素一个子元素的最后一个点就是下一个子元素的第一个点,该点不重复存储。
3.SDO_INTERPRETATION中它有两层含义,具体依赖于SDO_ETYPE是否是一个复合元素
——若SDO_ETYPE表示一个复合元素(4,1005,2005),那么SDO_INTERPRETATION域将表示该元素有多少个子元素。
——若SDO_ETYPE表示非复合元素(1,2,1003,2003),则SDO_INTERPRETATION值用于解释该元素的坐标序列。
例如,一个线串或者多边形边界可能分别由直线段连接和圆弧连接而成。
前一个,几何实体的最后一个元素通过它的起始偏移位置到SDO_ORDINATES变长数组的最后一个值之间的所有的坐标值来描述的。
对复合元素(SDO_ETYPE值为4、5)而言,由多个三元组集合用于描述该元素。
其中重要的一点就是复合元素的各子元素是相邻的。
一个子元素的最后一个点是下一个元素的第一个点。
从第1个子元素到第n-1个子元素,每个子元素的终点与其后继元素的起点相同。
第n个子元素的最后一个坐标是SDO_ORDINATES变长数组的最后一个坐标。
变长数组的当前大小可以使用PL/SQL中的函数varray_variable.Count确定
SDO_ORDINATES
SDO_ORDINATES使用一个变长NUMBER型数组来定义,存储坐标值,形成空间对象的边界。
该数组必须与SDO_ELEM_INFO变长数组联合使用。
数组的值按维排序。
空间索引创建、空间操作、空间函数将忽略Z值(因为spatial目前只支持二维的空间对象)。
点的维数将作为源信息保存到xxx_SDO_ELEM_METADATA视图里面。
SDO_ORDINATES数组中的值必须都是有效值且非空。
在多元素的几何实体中,没有特定的值用于划分各个元素的边界。
序列中描述特定元素的起始点要由STARTING_OFFSET值
确定。
起始值从1开始计算,SDO_ORDINATES(1)是几何实体第一个元素的第一个点的坐标
注意事项
Spatial要检查下面几项:
1.当SDO_GTYPE值为d001或d005时,任何SDO_ETYPE值不为1的子元素将被忽略;
2.当SDO_GTYPE值为d002或d006时,任何SDO_ETYPE值不为2或4的子元素将被
忽略;
3.当SDO_GTYPE值为d003或d007时,任何SDO_ETYPE值不为3或者5的子元素将
被忽略(这将包括SDO_ETYPE值为1003、2003、1005、2005的情况)
SDO_GEOM.VALIDATE_GEOMETRY函数可以用来检查空间表中的所有几何实体对象的一致性。