Oracle Spacial(空间数据库)sdo_lrs包函数
sdo_lrs包
Subprograms for Creating and Editing Geometric Segments
1、SDO_LRS.DEFINE_GEOM_SEGMENT(过程)
语法:
SDO_LRS.DEFINE_GEOM_SEGMENT(
geom_segment IN OUT SDO_GEOMETRY
[, start_measure IN NUMBER,
end_measure IN NUMBER]);
or
SDO_LRS.DEFINE_GEOM_SEGMENT(
geom_segment IN OUT SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY
[, start_measure IN NUMBER,
end_measure INNUMBER]);
功能:根据起始点和终止点测量值计算出没有测量的点
例子:
-- Testthe LRS procedures.
DECLARE
geom_segmentSDO_GEOMETRY;
line_stringSDO_GEOMETRY;
dim_arraySDO_DIM_ARRAY;
result_geom_1SDO_GEOMETRY;
result_geom_2SDO_GEOMETRY;
result_geom_3SDO_GEOMETRY;
BEGIN
SELECT a.route_geometry intogeom_segment FROM lrs_routes a
WHERE a.route_name = 'Route1';
SELECT m.diminfo into dim_array from
user_sdo_geom_metadatam
WHERE m.table_name = 'LRS_ROUTES'AND m.column_name = 'ROUTE_GEOMETRY';
--Define the LRS segment for Route1. This will populate any null measures.
-- Noneed to specify start and end measures, because they are already defined in thegeometry.
SDO_LRS.DEFINE_GEOM_SEGMENT (geom_segment, dim_array);
SELECT a.route_geometry INTOline_string FROM lrs_routes a
WHERE a.route_name = 'Route1';
--Split Route1 into two segments.
SDO_LRS.SPLIT_GEOM_SEGMENT(line_string,dim_array,5,result_geom_1,result_geom_2);
--Concatenate the segments that were just split.
result_geom_3 := SDO_LRS.CONCATENATE_GEOM_SEGMENTS(result_geom_1,dim_array,
result_geom_2,dim_array);
--Update and insert geometries into table, to display later.
UPDATE lrs_routes a SET a.route_geometry = geom_segment
WHERE a.route_id = 1;
INSERTINTO lrs_routes VALUES(
11,
'result_geom_1',
result_geom_1
);
INSERTINTO lrs_routes VALUES(
12,
'result_geom_2',
result_geom_2
);
INSERTINTO lrs_routes VALUES(
13,
'result_geom_3',
result_geom_3
);
END;
2、SDO_LRS.REDEFINE_GEOM_SEGMENT(过程)
语法:
SDO_LRS.REDEFINE_GEOM_SEGMENT(
geom_segment IN OUT SDO_GEOMETRY
[, start_measure IN NUMBER,
end_measure IN NUMBER]);
or
SDO_LRS.REDEFINE_GEOM_SEGMENT(
geom_segment IN OUT SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY
[, start_measure IN NUMBER,
end_measure INNUMBER]);
功能:重新定义几何体(可进行单位转换)
例子:
--Redefine geometric segment to "convert" miles to kilometers
DECLARE
geom_segmentSDO_GEOMETRY;
dim_arraySDO_DIM_ARRAY;
BEGIN
SELECT a.route_geometry intogeom_segment FROM lrs_routes a WHERE a.route_name = 'Route1';
SELECT m.diminfo into dim_array from user_sdo_geom_metadata m WHEREm.table_name = 'LRS_ROUTES'AND m.column_name = 'ROUTE_GEOMETRY';
--"Convert" mile measures to kilometers (27 * 1.609 = 43.443).
SDO_LRS.REDEFINE_GEOM_SEGMENT (geom_segment,
dim_array,
0, -- Zerostarting measure: LRS segment starts at start of route.
43.443); -- Endof LRS segment. 27 miles = 43.443 kilometers.
--Update and insert geometries into table, to display later.
UPDATE lrs_routes a SET a.route_geometry = geom_segment WHEREa.route_id = 1;
END;
3、SDO_LRS.CLIP_GEOM_SEGMENT
语法:
SDO_LRS.CLIP_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
start_measure IN NUMBER,
end_measure IN NUMBER,
tolerance IN NUMBER DEFAULT 1.0e-8
) RETURN SDO_GEOMETRY;
or
SDO_LRS.CLIP_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
start_measure IN NUMBER,
end_measure IN NUMBER
) RETURN SDO_GEOMETRY;
功能:截取指定的一段
例子:
-- Clipa piece of Route1.
SELECT SDO_LRS.CLIP_GEOM_SEGMENT(route_geometry, 5, 10) FROM lrs_routesWHERE route_id = 1;
4、SDO_LRS.DYNAMIC_SEGMENT
语法:
SDO_LRS.DYNAMIC_SEGMENT(
geom_segment IN SDO_GEOMETRY,
start_measure IN NUMBER,
end_measure IN NUMBER,
tolerance IN NUMBER DEFAULT 1.0e-8
) RETURN SDO_GEOMETRY;
or
SDO_LRS.DYNAMIC_SEGMENT(
geom_segment IN SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
start_measure IN NUMBER,
end_measure IN NUMBER
) RETURNSDO_GEOMETRY;
用法与SDO_LRS.CLIP_GEOM_SEGMENT一样
5、SDO_LRS.CONCATENATE_GEOM_SEGMENTS
语法:
SDO_LRS.CONCATENATE_GEOM_SEGMENTS(
geom_segment_1 INSDO_GEOMETRY,
geom_segment_2 INSDO_GEOMETRY,
tolerance IN NUMBER DEFAULT 1.0e-8
) RETURN SDO_GEOMETRY;
or
SDO_LRS.CONCATENATE_GEOM_SEGMENTS(
geom_segment_1 INSDO_GEOMETRY,
dim_array_1 INSDO_DIM_ARRAY,
geom_segment_2 INSDO_GEOMETRY,
dim_array_2 INSDO_DIM_ARRAY
) RETURNSDO_GEOMETRY;
功能:连接线串,例子见1
6、SDO_LRS.OFFSET_GEOM_SEGMENT
语法:
SDO_LRS.OFFSET_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
start_measure IN NUMBER,
end_measure IN NUMBER,
offset IN NUMBER,
tolerance IN NUMBER DEFAULT 1.0e-8
[, unit IN VARCHAR2]
) RETURN SDO_GEOMETRY;
or
SDO_LRS.OFFSET_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
start_measure IN NUMBER,
end_measure IN NUMBER,
offset IN NUMBER
[, unit IN VARCHAR2]
) RETURNSDO_GEOMETRY;
功能:指定的线段内进行偏移
例子:
SELECT SDO_LRS.OFFSET_GEOM_SEGMENT(a.route_geometry, m.diminfo,5, 10, 2)
FROM lrs_routes a, user_sdo_geom_metadata m
WHERE m.table_name = 'LRS_ROUTES'
AND m.column_name = 'ROUTE_GEOMETRY'
AND a.route_id = 1;
7、SDO_LRS.SPLIT_GEOM_SEGMENT(过程)
语法:
SDO_LRS.SPLIT_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
split_measure IN NUMBER,
segment_1 OUT SDO_GEOMETRY,
segment_2 OUT SDO_GEOMETRY);
or
SDO_LRS.SPLIT_GEOM_SEGMENT(
geom_segment IN SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
split_measure IN NUMBER,
segment_1 OUT SDO_GEOMETRY,
segment_2 OUT SDO_GEOMETRY);
功能:将一个几何体分为两个
例子见1
8、SDO_LRS.RESET_MEASURE(过程)
语法:
SDO_LRS.RESET_MEASURE(
geom_segment IN OUT SDO_GEOMETRY
[, dim_array INSDO_DIM_ARRAY]);
功能:将起始点到终止点的测量值都清空
例子:
--Reset geometric segment measures.
DECLARE
geom_segmentSDO_GEOMETRY;
BEGIN
SELECT a.route_geometry intogeom_segment FROM lrs_routes a
WHERE a.route_name = 'Route1';
SDO_LRS.RESET_MEASURE(geom_segment);
--Update and insert geometries into table, to display later.
UPDATE lrs_routes a SET a.route_geometry = geom_segment
WHERE a.route_id = 1;
END;
9、SDO_LRS.SET_PT_MEASURE
语法:
SDO_LRS.SET_PT_MEASURE(
geom_segment IN OUT SDO_GEOMETRY,
point IN SDO_GEOMETRY,
measure IN NUMBER) RETURN VARCHAR2;
or
SDO_LRS.SET_PT_MEASURE(
geom_segment IN OUT SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
point IN SDO_GEOMETRY,
pt_dim_array IN SDO_DIM_ARRAY,
measure IN NUMBER) RETURN VARCHAR2;
or
SDO_LRS.SET_PT_MEASURE(
point IN OUT SDO_GEOMETRY,
measure IN NUMBER) RETURN VARCHAR2;
or
SDO_LRS.SET_PT_MEASURE(
point IN OUT SDO_GEOMETRY,
dim_array IN SDO_DIM_ARRAY,
measure IN NUMBER) RETURN VARCHAR2;
功能:将测量值设为一个特定的点
-- Setthe measure value of point 8,10 to 20 (originally 22).
DECLARE
geom_segmentSDO_GEOMETRY;
dim_arraySDO_DIM_ARRAY;
resultVARCHAR2(32);
BEGIN
SELECT a.route_geometry intogeom_segment FROM lrs_routes a
WHERE a.route_name = 'Route1';
SELECT m.diminfo into dim_array from
user_sdo_geom_metadatam
WHERE m.table_name = 'LRS_ROUTES'AND m.column_name = 'ROUTE_GEOMETRY';
-- Setthe measure value of point 8,10 to 20 (originally 22).
result := SDO_LRS.SET_PT_MEASURE (geom_segment,
SDO_GEOMETRY(3301, NULL, NULL,
SDO_ELEM_INFO_ARRAY(1, 1, 1),
SDO_ORDINATE_ARRAY(8, 10, 22)),
20);
--Display the result.
DBMS_OUTPUT.PUT_LINE('Returned value = ' || result);
END;
10、SDO_LRS.REVERSE_MEASURE
11、SDO_LRS.TRANSLATE_MEASURE
12、SDO_LRS.REVERSE_GEOMETRY
外环应是逆时针的,内环应是顺时针的。若不对可用该函数进行修正。
SELECT SDO_LRS.REVERSE_GEOMETRY(a.gwm_geometry, m.diminfo)
FROM p_street_area a, user_sdo_geom_metadata m
WHERE m.table_name = 'P_STREET_AREA'
AND m.column_name = 'GWM_GEOMETRY'
AND a.id = 8;
13、SDO_LRS.VALID_GEOM_SEGMENT
14、SDO_LRS.VALID_LRS_PT
15、SDO_LRS.VALID_MEASURE
16、SDO_LRS.CONNECTED_GEOM_SEGMENTS
17、SDO_LRS.GEOM_SEGMENT_LENGTH
18、SDO_LRS.GEOM_SEGMENT_START_PT
19、SDO_LRS.GEOM_SEGMENT_END_PT
20、SDO_LRS.GEOM_SEGMENT_START_MEASURE
21、SDO_LRS.GEOM_SEGMENT_END_MEASURE
22、SDO_LRS.GET_MEASURE
23、SDO_LRS.GET_NEXT_SHAPE_PT
24、SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE
25、SDO_LRS.GET_PREV_SHAPE_PT
26、SDO_LRS.GET_PREV_SHAPE_PT_MEASURE
27、SDO_LRS.IS_GEOM_SEGMENT_DEFINED
28、SDO_LRS.IS_MEASURE_DECREASING
29、SDO_LRS.IS_MEASURE_INCREASING
30、SDO_LRS.IS_SHAPE_PT_MEASURE
31、SDO_LRS.MEASURE_RANGE
32、SDO_LRS.MEASURE_TO_PERCENTAGE
33、SDO_LRS.PERCENTAGE_TO_MEASURE
34、SDO_LRS.LOCATE_PT
35、SDO_LRS.PROJECT_PT
36、SDO_LRS.FIND_LRS_DIM_POS
37、SDO_LRS.FIND_MEASURE
38、SDO_LRS.FIND_OFFSET
39、SDO_LRS.VALIDATE_LRS_GEOMETRY
Subprograms for Converting Geometric Segments
40、SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY
41、SDO_LRS.CONVERT_TO_LRS_GEOM
42、SDO_LRS.CONVERT_TO_LRS_LAYER
43、SDO_LRS.CONVERT_TO_STD_DIM_ARRAY
44、SDO_LRS.CONVERT_TO_STD_GEOM
45、SDO_LRS.CONVERT_TO_STD_LAYER
Oracle Spacial(空间数据库)sdo_lrs包函数相关推荐
- Oracle Spacial(空间数据库)sdo_Geom包的函数
sdo_Geom包的函数: SDO_GEOM (geometry) subprograms, except for thefollowing, which are supported for both ...
- oracle的空间数据库
oracle的空间数据库: 2007-12-21 16:31:12 分类: Oracle 简单研究一下, 收藏, 详细内容看下面 [@more@] 1. 什么是oracle的空间数据库: oracle ...
- java oracle 流水号_Oracle生成流水号函数
一.参考 1:日期范围上 smalldatetime的有效时间范围1900/1/1~2079/6/6 datetime的有效时间范围1753/1/1~9999/12/31 2:精准度上 smallda ...
- Go 学习笔记(22)— 并发(01)[进程、线程、协程、并发和并行、goroutine 启动、goroutine 特点,runtime 包函数]
Go 语言通过编译器运行时( runtime ),从语言上支持了并发的特性. 虽然 Go 程序编译后生成的是本地可执行代码,但是这些可执行代码必须运行在Go 语言的运行时(Runtime )中.Go ...
- R语言广义线性模型函数GLM、(Model fit and regression diagnostics)、模型充分性评估方法、使用plot函数以及car包函数
R语言广义线性模型函数GLM.(Model fit and regression diagnostics).模型充分性评估方法.使用plot函数以及car包函数 目录
- oracle字符串提取函数,oracle字符串分割和提取函数定义
oracle字符串分割和提取函数定义 oracle字符串分割和提取 分割 create or replace function Get_StrArrayLength ( av_str varchar2 ...
- oracle和MySQL的日期函数_mysql与oracle的日期/时间函数小结
前言 本文的日期/时间全部格式化为"2016-01-01 01:01:01"形式: MONITOR_TIME为数据库表字段: 字符串与日期/时间相互转换函数 Oracle 日期/时 ...
- Oracle数据库之多行函数
oracle安装参照: Oracle数据库之安装教程 Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 ...
- oracle表 游标,Oracle游标表达式和表函数
Oracle游标表达式是Oracle数据库中的重要概念,下面就为您详细介绍Oracle游标表达式和表函数方面的知识,供您参考学习之用. Oracle游标表达式(有时称为游标子队列)是 SQL 语言的一 ...
最新文章
- catia 如何提取cgr面_CATIA 创成式外形设计精品课程
- 口语学习Day6:今天聊聊国内安全还是国外安全?
- 关于Python中的self
- div 上禁止复制的css实现方法
- python 类型之 set
- 《阿凡达》2020再度观看观后感
- Angular2.x-主/细节组件
- Neither spark.yarn.jars nor spark.yarn.archive is set
- 利用Redis实现消息队列原理
- 计算机word基本知识选择题,2017计算机基础考试选择题「附答案」
- 新手坐高铁怎么找车厢_一个新手怎么做直播卖衣服?找对货源供应商成功一半...
- java中字节码_Java字节码执行图示
- matlab剩余寿命概率密度,分享关于评估设备剩余使用寿命的三种方法
- DNGuard HVM 专业版 v2.7 正式发布。
- Linux下c编程设置串口属性和读写串口操作说明总结
- Delphi调用C#类库.doc
- 线段树辅助——扫描线法计算矩形周长并(轮廓线)
- 路径中“./”、“../”、“/”代表的含义 路径相关知识点总结
- 选择粘贴性无html,用好Office的选择性粘贴
- 获取滚动条滚动距离兼容写法