International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Volume XXXIX-B4, 2012
XXII ISPRS Congress, 25 August - 01 September 2012, Melbourne, Australia
418
In both cases, if more than one layer is involved in the current
SESQL sentence, we further estimate the number of result rows.
If it is bigger than the total number of input rows, we consider
the current SESQL query generating “too many join rows”. In
Figure 3, the Input hrowser is the data size of the needed input data
which can only be found on the browser side, while Input server is
the data size of the rest input data. The rest input data can be
found on the server side.
With the above rules, decisions on where to execute a SESQL
sentence can be made. After execution, the cache structure on
the browser-side middleware will be updated accordingly.
4. IMPLEMENTATION, CASE STUDIES AND
DISCUSSIONS
4.1 Implementation
For the server-side middleware, spatial operators, SESQL
compiler, GML2SVG, and decision-maker are implemented as
Java Servlets. Specifically, JTS Topology Suite is employed to
implement the spatial operators. As SESQL is based on the
original SQL, we adapt the C++ codes provided in Levine et al.
(1992), and implement our own SESQL compiler by combining
the spatial operators. For the browser-side middleware, SESQL
compiler, SVG2GML, decision-maker, and cache structure are
implemented using JavaScript. We implement spatial operators
with JTS Topology Suite, and develop them as Java Applet.
Google Gears API provides an SQLite compiler with
JavaScript-based API. We therefore implement a JavaScript-
based SESQL compiler with the Gears API. For spatial
operators embedded in the SESQL sentences, JavaScript
invokes the developed Java applet to execute the corresponding
spatial operations. JavaScript DOM API is also used to
assess/update SVG documents on the browser side. In order to
facilitate the interaction between the server-side and the
browser-side middlewares, we use AJAX (Asynchronous
JavaScript and XML) technology.
It is important to note that the load balancing middlewares are
completely transparent to the end users. Users can access spatial
analysis functions simply with an SVG-enabled web browser,
such as Internet Explorer, Firefox, and Google Chrome.
4.2 Case Studies and Discussions
We design three case studies to evaluate the proposed solution
as proof of concept. These case studies use geospatial data of
Guangdong Province (China), and implement several spatial
analysis tasks. In the case studies, comparisons among the
proposed solution, server-side solution, browser-side solution
and our former solution (Huang et al., 2011b) are also made.
4.2.1 Case Study 1: Suppose there is some toxic
contamination throughout river “Rl”. The contamination affects
the areas that are within 20 km. This task is to list all affected
administrative districts and calculate their affected area size.
In order to investigate this issue, we have to create a buffer for
river “Rl”, and find out which administrative districts are
overlapped with this buffer, and then calculate the size of
overlapped area for each district. We carry out this task based
on the workflow described in Section 2. First, we identify the
Google has stopped its support for Gears API. However,
similar functions can be found on HTML 5’s LocalStorage.
needed data and the evaluation criteria by carefully analysing
this case study. And then based on the suggested model in
Section 2, we use GML to represent the needed spatial data
(river layer) on the server side. We also represent the district
boundary layer in SVG and deliver it to the browser side as the
initial User Interface (UI). We then submit SESQL sentences on
the browser side to carry out the spatial queries by the following
steps: 1) Calculate a 20 km buffer of river “Rl” (using Buffer
operator); 2) Find out all the districts which are overlapped by
this buffer (using Overlap operator); 3) Find out all the affected
areas in each district (using Intersection operator); 4) Calculate
the size of affected area in each district (using Area operator).
The SESQL sentences are listed in the Appendix.
Figure 4 depicts the results. It lists the names of affected
districts, and their affected sizes in the listbox at the right-
bottom comer. These districts are also highlighted in the map.
Figure 4. Listing all the administrative districts affected by river
“Rl”, and calculating their affected area size
To illustrate the advantages of the proposed solution, we
compare it with different solutions: server-side solution,
browse-side solution, and layer-based load balancing solution
(i.e., our former solution in Huang et al. (201 lb)). We mainly
compare the data amount of the network transmission
(excluding the request/response sentences) between the server
and the browser sides. Table 1 depicts the results. The
difference between layer-based solution and the proposed
solution is mainly due to their employed granularities (layers
versus spatial objects). To sum up, the proposed solution has a
smaller network transmission load between server and browser
sides, and therefore leads to a better performance.
Server-
side
solution
Client-
side
solution
Layer-
based
solution
The
proposed
solution
Step 1:
Buffer
1,925
36,559
36,559 (on
browser)
5,082 (on
browser)
Step2:
Overlap
5,267
0
0 (on
browser)
0 (on
browser)
Step3:
Intersection
3,095
0
0 (on
browser)
0 (on
browser)
Step4: Area
106
0
0 (on
browser)
0 (on
browser)
Total
10,393
36,559
36,559
5,082
Table 1. Comparisons of the first case study (data amount is
measured by Byte)