Oracle GeoRaster的初步使用--遥感影像数据导入与导出

December 17, 2023
测试
测试
测试
测试
7 分钟阅读

1. 首先创建一个GeoRaster的表,这是一个普通的二维表。该表中存储了SDO_GEORASTER对象。

2. 创建一个GeoRaster Data Table表,该表实际存储影像数据的表,以Block划分的方式进行存储。

3. 创建一个SDO_GEOR.INIT()方法初始化SDO_GEORASTER对象,并将数据导入。

下面贴出来SQL代码:

--创建一个自增的ID序列
CREATE SEQUENCE image_id_seq
	increment by 1
	start with 1
	nomaxvalue
	minvalue 1
	NOCYCLE;

--创建GeoRaster表(GeoRaster表就是带有SDO_GEORASTER类型列的表)
CREATE TABLE world_image(
	id NUMBER PRIMARY KEY,
	name VARCHAR(30),
	image SDO_GEORASTER
);

--创建一个自增的触发器
CREATE OR REPLACE TRIGGER image_id_trig
	BEFORE INSERT ON world_image
	FOR EACH ROW
	BEGIN
		SELECT image_id_seq.nextval INTO :new.id FROM dual;
	END;
/	
	
--创建GeoRaster Data Table(RDT)表用来存储GeoRaste影像数据
CREATE TABLE world_image_rdt OF SDO_RASTER
(
	PRIMARY KEY(RASTERID, PYRAMIDLEVEL, BANDBLOCKNUMBER, ROWBLOCKNUMBER, COLUMNBLOCKNUMBER)
)
LOB(RASTERBLOCK) STORE AS (NOCACHE NOLOGGING);

--插入GeoRaster表一条记录(初始化GeoRaster对象)
INSERT INTO world_image (name, image) VALUES ('earth', SDO_GEOR.INIT('WORLD_IMAGE_RDT'));

--获取文件读的权限(SCOTT和MDSYS用户都要获得读权限)
call dbms_java.grant_permission('MDSYS','SYS:java.io.FilePermission', '/home/oracle/images/earth.tif', 'read');
call dbms_java.grant_permission('SCOTT','SYS:java.io.FilePermission', '/home/oracle/images/earth.tif', 'read');
--导入遥感影像数据到GeoRaster Data Table表中
DECLARE
	img SDO_GEORASTER;
BEGIN
	--Select the georater column
	SELECT image INTO img FROM world_image WHERE name='earth' FOR UPDATE;
	--Import into the georater object
	SDO_GEOR.IMPORTFROM(img, 'blocksize=(512, 512)', 'TIFF', 'file', '/home/oracle/images/earth.tif');
	--update the column
	UPDATE world_image SET image=img WHERE name='earth';
	COMMIT;
END;
/

--获取文件写的权限
call dbms_java.grant_permission('MDSYS','SYS:java.io.FilePermission', '/home/oracle/images/earth_ex.tif', 'write');
call dbms_java.grant_permission('SCOTT','SYS:java.io.FilePermission', '/home/oracle/images/earth_ex.tif', 'write');

--导出遥感影像数据
DECLARE
	img SDO_GEORASTER;
BEGIN
	SELECT image INTO img FROM world_image WHERE name='earth';
	SDO_GEOR.EXPORTTO(img, NULL, 'TIFF', 'file', '/home/oracle/images/earth_ex');
END;
/

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多