Full text: Proceedings; XXI International Congress for Photogrammetry and Remote Sensing (Part B4-1)

The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences. Vol. XXXVII. Part B4. Beijing 2008 
To get an idea of how GeoRaster performs, we tested on the key 
tuning function, called changeFormatCopy. It can adjust the 
internal storage format based on user specifications, such as 
blocking size, interleaving type, cell depth and compression 
type. The size of the GeoRaster object used is 96M. It has 8000 
rows, 4000 columns and 3 bands. The cell depth is 8 bit 
unsigned. The interleaving type is BIP. They are all three-band 
true-color images. In the test, the database buffer cache and 
shared pool are flushed to make sure every measure on the 
procedure is of a new execution of the procedure itself. The 
results are shown in Table 1. The tests only do reblocking of the 
GeoRaster object (no interleaving and other changes combined) 
and “noblock” means the image is not blocked, or in other 
words, the whole image is one block without padding. The 
blocking size is specified in the order of row, column, and band. 
For example, a blocking size of 512x512x3 means each block 
would have 512 pixels in row dimension, 512 pixels in column 
dimension and 3 bands. 
Original raster 
block size 
New raster block size after changeFormatCopy 
256x256x3 
1024x1024x3 
2048x2048x3 
noblock 
64x64x3 
59.90 
57.94 
57.97 
58.54 
128x128x3 
49.31 
48.96 
59.29 
55.50 
256x256x3 
42.74 
54.51 
49.43 
54.05 
512x512x3 
52.47 
42.72 
44.68 
47.63 
1024x1024x3 
47.00 
37.65 
40.48 
45.98 
2048X2048x3 
46.10 
41.09 
37.61 
42.90 
Table 1. Average execution time in seconds 
to change internal raster block sizes 
The changeFormatCopy procedure consists of two major 
processes. One is to change the format of the GeoRaster object. 
Another one is to make a copy of the original data. As you can 
see from Table 1, the speed is very fast. One observation is that 
when we call the procedure to change the block size to the same 
block size of the original object, the procedure is basically 
equivalent to copying the original blocks directly to the new 
object. Based on the data in Table 1, it means that most of the 
execution time is spent on simply copying data from one 
GeoRaster object to another while the data manipulation inside 
the database server is actually much faster. Like most other 
functions, this one is obviously I/O intensive and better I/O 
throughput would help in general. Efficient I/O operation is one 
of the key directions in improving performance. 
Query is very important for such databases and the speed of 
such query is critical. So, we did some tests on the major 
GeoRaster query function, called getRasterSubset. It returns a 
subset of a GeoRaster object based on the query window, no 
matter how big the GeoRaster object is or how it is stored 
internally 
Retrieving 
window size 
GeoRaster block size 
128x128x3 
256x256x3 
512x512x3 
1024x1024x3 
2048x2048x3 
256x256x3 
0.3528 
0.3194 
0.3256 
0.3178 
0.3722 
512x512x3 
0.3970 
0.3666 
0.3424 
0.3804 
0.4478 
1024x1024x3 
0.5388 
0.5068 
0.4602 
0.4766 
0.5882 
2048x2048x3 
1.1450 
0.9680 
0.9028 
0.8924 
0.8848 
Table 2. Average execution time in seconds to retrieve different 
subsets of raster data from differently blocked GeoRaster 
objects 
We called getRasterSusbet 50 times continuously to get the 
average execution time. In this test, the buffer cache and shared 
pool were flushed out before every execution of the 
getRasterSubset procedure to make sure the measures are the 
pure running time of each independent call of the 
getRasterSubset and do not take advantages of database caches. 
We used various retrieving window sizes to retrieve data from 
the GeoRaster objects that have various GeoRaster block sizes. 
Results are shown in Table 2. 
From this test, the AOI (area of interest) queries took only sub 
seconds and showed very good performance. Properly tuning 
the blocking size may improve the performance as well. 
GeoRaster provides such tuning tool through functions like 
changeFormatCopy and so you can easily adjust the internal 
storage to meet specific application requirements. 
5. THE USABILITY 
The other challenge we discussed earlier in this paper is how to 
attract more users and push geoimagery into enterprise systems 
so that more people and more businesses can benefit from the 
achievements of the geoimaging and geospatial professionals. 
So, enterprise integration and usability becomes another key of 
the design of this database-centric approach. 
Obviously the native data type and building the processing 
system from inside the commercial database server enable easy 
integration of enterprise data and geospatial raster data. It 
allows users to define a relational table in which images and 
other enterprise data can be stored together and those tables can 
be joined by defining their relationships. In order to build a 
single data type for different data sources, the native GeoRaster 
data type uses a single and integrated data model and thus 
simplifies the understanding and usage of such raster datasets. 
Even more important is the SQL API provided with GeoRaster. 
SQL is the language of commercial database systems. Most 
Oracle database users and system integrators are familiar with 
the usage of the standard SQL and PL/SQL language. The 
language is simple, easy-to-use and has good modularity. It 
gives user the flexibility of data manipulations either through 
simple data queries or by packaging many functions into one 
package to achieve more complex goals. 
For example, users can query the total band number of a 
GeoRaster object as follows: 
select sdo_geor.getbanddimsize(t.my_image) 
from mytable t where id=21; 
Users can simply write the following PL/SQL block to tune the 
block size of a GeoRaster object (georl) and apply JPEG 
compression and store it in another GeoRaster object (geor2). 
declare 
georl sdogeoraster; 
geor2 sdo georaster; 
begin 
select my_image into georl from my table where id = 1; 
select my_image into geor2 from my table where id = 2 
for update; 
sdo_geor. changeformatcopy(geor 1, 
'blocksize=(256,256,3) compression=JPEG-B', 
geor2); 
update my table set my_image=geor2 where id=2; 
commit; 
end; 
202
	        
Waiting...

Note to user

Dear user,

In response to current developments in the web technology used by the Goobi viewer, the software no longer supports your browser.

Please use one of the following browsers to display this page correctly.

Thank you.