ArticlePDF Available

Enhanced satellite positioning as a web service with goGPS open source software


Abstract and Figures

Providing enhanced satellite positioning as a web service can be an effective way to enable low-level GPS receivers to perform surveys with a good accuracy and to reduce hardware cost, by removing computation capability and embedded proprietary software. goGPS is an open source application for achieving sub-meter accuracy with low-cost GPS receivers by exploiting real-time kinematic positioning, Kalman filtering, aid from a digital terrain model, and in general by integrating GPS data with other sources of information. Since goGPS directly processes raw GPS observations, it provides a means to substitute black-box processing components (e.g., GPS chipsets) with open source positioning software. goGPS can work either in real-time or post-processing, by acquiring raw GPS data in input and providing positioning (i.e., coordinates) in output. Though originally developed in MATLAB, goGPS was recently ported to Java in order to have the possibility to provide it as a web service, thus allowing a wider user base to develop and use it. Since real-time GPS positioning heavily relies on fast matrix computation, a careful selection of Java matrix libraries was carried out in order to obtain optimal performances. An Open Geospatial Consortium standard Web Processing Service (WPS) implementation of goGPS by means of ZOO WPS framework was developed and tested in order to let lightweight clients just acquire raw GPS data, send them to a server for processing, and receive back the accurate positioning.
Content may be subject to copyright.
Enhanced satellite positioning as a web
service with goGPS open source software
Eugenio Realini1*, Daisuke Yoshida2, Mirko Reguzzoni3, Venkatesh Raghavan4
1Research Institute for Sustainable Humanosphere, Kyoto University, Gokasho,
Uji City, 611-0011 Kyoto, Japan
* e-mail:; phone: +81-774-38-3861
2Faculty of Liberal Arts, Tezukayama Gakuin University, 2-1823 Imakuma,
Osakasayama City, 589-8585 Osaka, Japan
3DIIAR, Politecnico di Milano, P.zza Leonardo da Vinci 32, 20133 Milano, Italy
4Graduate School for Creative Cities, Osaka City University, 3-3-138 Sugimoto,
Sumiyoshi-ku, 558-8585 Osaka, Japan
Providing enhanced satellite positioning as a web service can be an effective way to enable low-
level GPS receivers to perform surveys with a good accuracy and to reduce hardware cost, by
removing computation capability and embedded proprietary software. goGPS is an open source
application for achieving sub-meter accuracy with low-cost GPS receivers by exploiting RTK
(Real Time Kinematic) positioning, Kalman filtering, aid from a digital terrain model and in
general by integrating GPS data with other sources of information. Since goGPS directly processes
raw GPS observations, it provides a means to substitute black-box processing components (e.g.
GPS chipsets) with open source positioning software. goGPS can work either in real-time or post-
processing, by acquiring raw GPS data in input and providing positioning (i.e. coordinates) in
output. Though originally developed in MATLAB, goGPS was recently ported to Java in order to
have the possibility to provide it as a web service, thus allowing a wider user base to develop and
use it. Since real-time GPS positioning heavily relies on fast matrix computation, a careful
selection of Java matrix libraries was carried out in order to obtain optimal performances. An OGC
(Open Geospatial Consortium) standard WPS (Web Processing Service) implementation of goGPS
by means of ZOO WPS framework was developed and tested in order to let lightweight clients just
acquire raw GPS data, send them to a server for processing and receive back the accurate
Keywords: GPS positioning; low-cost receivers; MATLAB; Java; Web Processing
Recently, as the word "ubiquitous society" describes, the technologies related to the Internet and to
location information are developing remarkably. Handheld devices with built-in GPS capabilities,
such as smart-phones, have spread conspicuously, many location-based applications for mobile
devices are being developed and the increasing use of location information draws attention for
business. However, built-in GPS receivers in mobile phones and PNDs (Portable Navigation
Devices) offer low-quality positioning with an accuracy of around 3 - 5 m. Moreover, in urban
areas (e.g. in locations enclosed by skyscrapers) the accuracy degrades further. Nevertheless,
business with highly accurate location information has not been spread at consumer level yet,
since getting high positioning accuracy is still costly.
There are various grades in GPS devices: professional double-frequency receivers can get
positioning with an accuracy of some centimeters by Real-Time Kinematic (RTK), professional
single-frequency receivers can improve the accuracy to less than 1 meter using Differential GPS
(DGPS) correction data or single-frequency RTK, while low-cost receivers, which are mainly used
for mobile phones and car navigation devices, have accuracies of some meters. These different
devices cost according to their hardware quality and therefore their accuracy: professional double-
frequency ones cost US $ 20,000 ~ 30,000, professional single-frequency ones US $ 1,000 ~ 3,000
and low-cost ones less than US $ 100. Moreover, software in these GPS devices is proprietary,
thus source code is not opened to the public. This means that positioning algorithms cannot be
modified or tuned to improve the accuracy for specific applications.
goGPS ( is an open source software package that can achieve
accuracies of less than 1 m, depending on sky visibility conditions, using low-cost GPS
instrumentation (specifically, u-blox Evaluation Kits AEK-4T and EVK-5T are usually employed
for tests). goGPS has the potential to reduce costs greatly since there are no limitation in
development and distribution, in contrast to proprietary software. goGPS has been developed since
2007 in MATLAB numerical computation language (MathWorks, Inc. - MATLAB already implements a great number of
mathematical functions, it excels in matrix manipulation and computation and it makes data
visualization easy and straightforward. However MATLAB code is not compiled and so its
processing speed is relatively slow, especially for parsing big text files, like in the case of GPS
data files in RINEX format, and for displaying data: therefore it is not of practical use to post-
process big amounts of GPS data. Moreover, MATLAB is a commercial software platform that
severely limits users to participate in the development or even just in the use of goGPS. Therefore,
it bounds goGPS development within universities and research institutions even though it is an
open source project. In this work, the core processing functions of goGPS have been ported to Java
code in order to help the software spread at both user and developer level, to improve the
processing and visualization speed, and to obtain a way to provide goGPS processing as a web
service, which is one of the main future goals in the goGPS project.
goGPS L1 low-cost RTK positioning
Low-cost GPS devices typically implement small patch or helix antennas and single frequency
(L1) receivers functioning in stand-alone mode; moreover, they are often highly sensitive to GPS
signal (even if degraded) in order to assure positioning with bad sky visibility conditions, like in
dense urban environments or under forest canopy. Nevertheless, the positioning accuracy with this
kind of devices is generally low, not only because of the classical errors induced by atmospheric
and clock delays, but also because of the low quality of involved hardware and the multipath
resulting from high sensitivity.
goGPS ( is an open source software package (Realini, 2009)
designed to perform relative positioning with code and phase (RTK) using low-cost GPS
instrumentation, if this gives raw data (GPS observations) in output: in this way atmospheric and
clock errors are removed or made negligible (Hofmann-Wellenhof et al., 2003). Moreover, goGPS
includes a Kalman filter (Kalman, 1960) applied to GPS observations which reduces the
estimation error by modeling the receiver dynamics, by weighting observations on the basis of
their quality (i.e. signal-to-noise ratio and satellite elevation), by integrating additional information
like digital terrain models or road networks and by exploiting at best the information provided by
the L1 phase, managing its ambiguities when changes of satellite configuration or cycle slips
happen. It is important to note that phase ambiguities in goGPS are estimated by the Kalman filter
as float values, without trying to fix them to integers; fixing ambiguities would certainly increase
the positioning accuracy, also when working with low-cost receives. However the higher noise of
this type of receivers and the fact that many obstacles reducing sky visibility and producing cycle
slips are often met when navigating, especially in urban environments, make the fixing of
ambiguities very difficult to be achieved, at least with a sufficient level of certainty. goGPS can
work either in RTK or stand-alone mode and it can be used either for real-time or post-processing
tasks. Observations coming from a reference GPS permanent station or from a virtual reference
station (VRS) are needed for the RTK mode, thus a mobile Internet connection has to be available
when using goGPS in real-time. goGPS can act as an NTRIP (Networked Transport of RTCM via
Internet Protocol) client for receiving observations from a base station in RTCM 3.1
( format in real-time. On the other hand, for post-processing tasks, reference
station data in RINEX format can be used. goGPS MATLAB is currently capable to decode three
receiver-specific binary formats for retrieving their observations (u-blox UBX, SkyTraq binary
and Fastrax iTalk). Specific tools are provided for creating RINEX files from each source of raw
data. By using low-cost GPS receivers and antennas with good sky visibility conditions, accuracies
ranging from 40 to 80 cm with a moving receiver and around 20 cm with a stationary receiver
were obtained in several tests using goGPS in RTK post-processing mode. Recently, tests have
been carried out also by applying goGPS positioning to geodetic receivers and antennas using only
one of their frequencies (L1), comparing its result with a standard double frequency RTK solution
and obtaining accuracies ranging from 20 to 40 cm with a moving receiver. Preliminary tests
involving a better modeling of the receiver dynamics (e.g. by providing information about when it
was kept stationary and when it was moving) show an accuracy of about 10 cm with geodetic
receivers. Since no algorithms tailored for post-processing are currently implemented into goGPS,
the expected accuracy when working in real-time are essentially the same as post-processing.
Porting goGPS to Java
When it was decided that goGPS needed to be ported from MATLAB to a more widely used
language, the main candidates were C/C++ and Java. Despite favoring at first the C/C++ option,
mainly for concerns related to processing speed, when the group at Politecnico di Milano (Italy)
and the IT company CRYMS Sagl ( started a collaboration on goGPS
development, the Java option was reconsidered and finally chosen. This section briefly illustrates
why goGPS was initially developed in MATLAB, then, while introducing Java, it explains the
reasons that lead goGPS to be ported to this language. Considerations about choosing a proper
library for fast matrix computation are then made, followed by a performance benchmarking
comparing goGPS MATLAB and Java versions.
goGPS MATLAB version
goGPS was initially developed in 2007 at the Geomatics Laboratory of Politecnico di Milano as a
tool for teaching students about GPS positioning and Kalman filtering. When goGPS development
effectively started with the aim of obtaining a complete application, Prof. Kai Borre's EASY
(Borre, 2003; Borre, 2010) open source software package for code-only standalone GPS
positioning (written in MATLAB) was used as a basis for developing the basic algorithms and as a
reference to check goGPS initial results and performance.
Nevertheless, MATLAB poses some drawbacks. For example, the text file parsing functions are
very inefficient if text files are not already formatted in a simple delimited structure, and since the
main format for storing and exchanging GPS raw data is RINEX
(, which employs quite complex data
structures as ASCII text, parsing large datasets spanning several hours (tens of megabytes)
becomes quite slow. Moreover, MATLAB display functions, although easy to use and
straightforward, are very inefficient too, especially in real-time functioning, when timing and
synchronization between rover and master data streams become crucial issues. Last but not least,
MATLAB is neither free nor open source software, and because of this goGPS usage and
development was in fact limited to researchers and professionals who can afford to buy a
MATLAB license. Although free MATLAB clones such as FreeMat, Scilab or Octave may be able
to run goGPS basic processing functions, incompatibilities are often introduced by missing
specific tools, such as serial communication interfaces or GUI functions. Therefore, instead of
trying to keep goGPS compatible with free MATLAB clones, it was decided to develop a
MATLAB-independent version of goGPS by porting it to Java language, which is also better
suited for providing goGPS processing in a service-oriented architecture.
goGPS Java version
A typical argument against the adoption of Java is that it is slower than C/C++ because it is a pre-
compiled language (i.e. it is not compiled with the native language of the machine were it is
executed), interpreted by the Java Virtual Machine (JVM) which has to be installed on the host
system. Nevertheless, performance benchmarks with C/C++ often show that modern Java
implementations are getting nearer and nearer to C/C++ performance (sometimes they are even
better), since Just In Time (JIT) compilation was introduced.
On the other hand, adopting Java brings benefits like being able to release platform independent
executables, simplifying the source code and having the possibility to rely on numerous third-party
libraries for the most diverse tasks. In the specific case of goGPS, switching from MATLAB to
Java allows users to run the software without owning a MATLAB license (on any operating
system that can install a JVM), besides providing the possibility to easily enable multiple threads
to parallelize tasks.
Up to now the core algorithms of goGPS have already been ported to Java, which means that
goGPS Java can read input data from RINEX files and perform positioning as code-only stand-
alone epoch-by-epoch least squared adjustment (LSA), code double-differenced epoch-by-epoch
LSA, and Kalman filtered solution using both code and phase. In every case observations can be
weighted according to satellite elevation, signal-to-noise ratio or both. When using the Kalman
filtered solution, changes in satellite configuration like satellite addition and loss, pivot change and
cycle slips are handled consistently with the estimation of phase ambiguities.
The differences in the final positioning between MATLAB and Java implementations are always
significantly below the accuracy achievable with the test instrumentation (goGPS with u-blox
receiver). In any case these differences are never higher than 1 mm.
goGPS Java performance
A crucial issue to obtain good computation performance with goGPS is matrix computation: at
every epoch Kalman filter equations are applied on matrices that, depending on the number of
available satellites, dynamical model complexity and whether one frequency or two frequencies
are used, can have sizes ranging from ~30 to ~80 elements per line and/or column. Moreover, at
every epoch several roto-translations are applied for getting satellite and receiver positions in
different coordinate and reference systems (thus typically on 3x3 matrices).
Several open source Java matrix libraries exist: in some cases they focus specifically on handling
matrices and linear algebra, while in other cases the matrix-related classes are part of a wider
toolset for scientific computation (Table 1 includes the most complete libraries with regards to
matrix manipulation and linear algebra). In order to choose one of them, particular care was
adopted to get the best performance for the matrix size used in goGPS.
Table 1. Java matrix libraries
Pure Java Multi-threaded
Apache Commons Math
Parallel Colt
a UJMP may be optimized by including native code
Moreover, since goGPS could be run either locally on low-level devices (even as embedded
solutions) or in client-server architectures, specifically server-side, on multi-core machines with
high computational capabilities, libraries performing well also on lower grade CPUs (thus possibly
in single-threaded mode) were preferred. Finally, ease of use, good documentation, correctness of
results and activity of the project were obviously taken into account. A useful open source tool for
benchmarking different Java matrix libraries, called JMatBench (Abeles, 2010a) was used to check
the libraries performance according to matrix size on different grades of CPU. Finally EJML
(Abeles, 2010b) was chosen according to the requirements described above.
The performance of goGPS Java version were compared to those of goGPS MATLAB version on
different machines with different operating systems. A server-grade PC and a client-grade laptop
were used for the tests (specifications are reported in Table 2).
Table 2. Specifications of test machines
Server-grade PC Client-grade laptop
CPU Intel Core i7-860 2.80 GHz (64 Bit) Intel Pentium M 1.30 GHz (32 Bit)
Operating System Linux Slackware64 13.0
Dual boot with:
Windows XP Professional SP3
Linux Slackware 12.2
The Java Runtime Environment version was homogenized on all test machines: build 1.6.0_16-
b01 was used. As for the Virtual Machine (VM), Java HotSpot(TM) 64-Bit Server VM (build
14.2-b01, mixed mode) was used on the server-grade PC, while Java HotSpot(TM) Client VM
(build 14.2-b01, mixed mode, sharing) was used on the client-grade laptop. The same MATLAB
version was used, that is R2009b.
The time needed to parse RINEX files and the actual computation time employed by the core
algorithms were checked separately. The core algorithms roughly include:
- Bancroft positioning (executed once)
- Code double difference positioning (executed twice)
- Satellite position computation (with clock and Earth rotation corrections) (at each epoch)
- Satellite topocentric coordinates computation (at each epoch)
- Kalman filter matrices setup (with computation of parameters obtained from linearized
observation equations and observation weighting) (at each epoch)
- Ambiguity estimation and cycle slip check (at each epoch)
- Kalman filter computation (at each epoch)
For the moment goGPS Java does not employ any multi-threaded process, so everything is
computed consecutively both in MATLAB and Java.
The test dataset was a ~5 hour survey (17205 epochs) with a number of satellites ranging from 6 to
7 (satellites effectively used in the computation after applying a cutoff of 15 degrees on their
elevation). Table 3 reports the average time for processing a single epoch.
Table 3. Results of computation speed
Core i7 Linux
Pentium M Linux
Pentium M Windows
MATLAB 30.2 270.7 236.6
Java 0.2 0.6 1.0
MATLAB 15.3 33.5 20.6
Java 0.5 3.3 3.1
It is clear that porting goGPS MATLAB code to Java made a significant improvement in
performance (as it was expected), especially for parsing RINEX files (i.e. text files). As for the
core processing, the main difference is that goGPS MATLAB code is not object-oriented,
differently from the Java code.
An additional remark has to be made about the use of EJML in goGPS. EJML provides two basic
approaches to define and work with matrices: the DenseMatrix64F class, which is oriented to
speed and memory optimization, and the SimpleMatrix class, which is a wrapper around
DenseMatrix64F that provides an easier but more limited and slow way to perform matrix
operations (Abeles, 2010c). When goGPS Java was started, the SimpleMatrix class was used
because it was easy and straightforward, besides providing more readable code. All the tests above
were run with this class, but an additional test was done by switching to DenseMatrix64F class the
most processing intense operations (Kalman filter and roto-translations of coordinates). An overall
improvement of about 10 percent in speed was noticed. Future developments will include more in-
depth optimizations.
goGPS processing as an OGC-compliant web
In recent information technology developments, there are remarkable trends that shift software
processing from local computation units to remote ones in order to provide web services such as
Software as a Service (SaaS) and Platform as a Service (PaaS). Cloud computing is the latest effort
in delivering computing resources as a service: it represents a shift away from computing as a
product that is purchased, to computing as a service that is delivered to consumers over the
Internet from large-scale data centers or “clouds” (Sriram and Khajeh-Hosseini, 2010). Web
services are based on standard HTTP communication, so that the user does not need to install any
special software; service requests can be done directly through a browser, making web services
straightforward and easy to use. Moreover, multiple services can be connected or merged in what
is called "mashup" or “chain”. For example, Yoshida et al., 2009 and 2010 developed a web-based
POI (Points of Interest) management system which can import, handle and display GPS track logs
together with POIs such as geo-referenced photos and videos. The system connects Flickr's photo
album with a GPS track log by implementing Flickr's web Application Programming Interface
(API) ( And it also provides its functionality as a web service.
These open web APIs help reducing redundant work and development costs as the low-cost model
of high availability in the information system field becomes mainstream. Obviously, these
implementations require interoperability, which is pursued by the definition and application of
standards. In the geospatial information field, ISO and Open Geospatial Consortium (OGC)
promote standardization of data formats and services at international level. By complying with
these standards, various applications can handle common data and processes and therefore reduce
data and software development costs, thus contributing to the distributed processing network.
These specifications do not need royalties and are widely used especially in public sectors around
the world. The main database engines and GIS software packages already comply with open
standards and this enables easy data connection and sharing without the need of generating new
data, which reduces significantly costs and efforts. This leads also to a high level of
interconnectivity, reduction of time of computation and it can guarantee the perpetuity of data and
goGPS processing will be provided as a standard Web Processing Service (WPS) by subsequent
development steps, some of which have already been implemented. This section describes how
goGPS Java code was run as a standard web service using one of the available open source WPS
platforms, specifically the ZOO WPS framework (
OGC Web Processing Services
The OGC WPS protocol defines a standardized interface that facilitates the publishing of
geospatial processes, and the discovery of and the binding to those processes by clients.
“Processes” include any algorithm, calculation or model that operates on spatially referenced data.
“Publishing” means making available machine-readable binding information as well as human-
readable metadata that allows service discovery and use (The OGC Web Processing Service,
2007). Thus, WPS can standardize all GIS processes and calculations and provide them as web
services via HTTP.
WPS implementation using the ZOO framework
The ZOO project is an open source project that provides an open WPS platform. The ZOO Kernel
is the core of the ZOO Project: it is a server-side C kernel which makes it possible to create,
manage and chain WPS 1.0.0 compliant web services, by loading required dynamic libraries and
handling them on-demand. Thus, it can be easily connected to geospatial libraries and scientific
models, but also to the common cartographic engines and spatial databases (Fenoy et al., 2009 and
The ZOO Kernel supports various programming languages (C, Python, Java, JavaScript,
FORTRAN, PHP and Perl). This multi-language support is convenient for developers and allows,
above all, to use existing code to create new web services. Open source GIS libraries or specific
code (spatial based or not) can thus be ported server-side with very little modifications and also
make them available as open processing services for various applications over the network. ZOO
is one of the latest open source software projects which has attracted attention as an engine for
WPS in the geospatial community.
In this research, a basic process of goGPS Java was implemented as WPS using the ZOO Kernel.
The implemented process works for reading RINEX files, performing positioning by Kalman filter
on code and phase observations and exporting results into KML.
The input parameters are provided via an URL as below:
In this example, three RINEX files are used as input datasets: an observation file containing raw
data for the GPS rover (perim2.08o), a navigation file containing satellite ephemerides and
ionosphere parameters (COMO1190.08n) and an observation file containing raw data for the
master station (COMO1190.08o).
Figure 1 illustrates on overview of ZOO WPS server and client communication. The client can be
a web browser or a WPS-enabled GIS application such as uDig ( and it
must send the WPS request parameters (as the URL above) through standard HTTP protocol. The
ZOO WPS server receives the request, it carries out the goGPS processing and finally returns the
WPS response as the XML document shown in Figure 2.
Figure 3 shows a web interface for goGPS positioning using OpenLayers
( that can select and upload GPS datasets as RINEX files and send a
WPS request to the ZOO Kernel. The web client shows the result that is returned from the server
as a KML file (represented by the purple line in the figure) overlaid on Google Maps background.
The web interface uses Uploadify (, a jQuery (
uploading package which enables the web interface to provide uploading function dynamically.
Figure 1. ZOO WPS server and client communication
Figure 2. goGPS WPS result
Figure 3. goGPS web interface
For further research and development, several processes of goGPS Java are planned to be
implemented as WPS in order to provide various web services for GPS positioning, for example:
- RTK processing by goGPS Kalman filter (as in the example above)
- Epoch-by-epoch least squares processing
- Kalman filter (on previously computed coordinates)
- Line simplification (e.g. Douglas-Peucker algorithm)
- RINEX file generation from binary data (RTCM, UBX, etc.)
- GPS-related data format conversion (KML, NMEA, GPX, etc.)
These implementations will allow general users to use goGPS precise positioning in their web
browser or their own applications since the goGPS web services are going to be open services
compliant with WPS open standard.
goGPS open source positioning software was ported from MATLAB code to Java code in order to
improve its performance and to enable it to be provided as an OGC-compliant WPS.
In the first part of this paper several performance tests comparing goGPS Java and MATLAB
versions were described. The results clearly show the differences in speed between the two and
indicate that the Java version of goGPS can work much faster than the MATLAB version,
especially for handling data input in the form of complex structured text files (e.g. RINEX files).
The performance tests also included the evaluation of different Java matrix libraries for efficient
matrix computation.
In the second part, the adoption of the open WPS platform ZOO as WPS server and the
implementation of goGPS positioning process using the ZOO framework were described. The
ZOO server successfully provided goGPS processing as an OGC-compliant web service.
Further developments for goGPS Java code include: enabling multi-threaded processing;
optimizing the processing speed, with particular attention to matrix computation; developing a
graphical user interface. Concerning goGPS WPS implementation, further goGPS processes are
going to be implemented as WPS in order to provide a fully-featured web platform for GPS
positioning. The web interface for goGPS WPS is also going to be further developed.
Last but not least, a low-cost hardware prototype that just logs raw GPS data in order to process
them through goGPS WPS is currently being developed.
The authors acknowledge the positioning services IREALP GPSLombardia (Italy) and JENOBA
(Japan) for their support in the test activities. The first author acknowledges the Japan Society for
the Promotion of Science (JSPS) for the post-doctoral fellowship under which this work was
carried out. The authors would also like to thank the developer of EJML library, Peter Abeles, for
his help during the matrix computation performance study, Gérald Fenoy for his helpful support in
integrating goGPS into the ZOO Kernel and CRYMS Sagl for contributing to goGPS Java
development. This research is supported by JSPS Grant-in-Aid for Scientific Research (Issue No.
2109737) entitled "Development of Ubiquitous LBS Web-Service using Free and Open Source
Abeles, P (2010a) java-matrix-benchmark, viewed 11 February 2012,
Abeles, P (2010b) efficient-java-matrix-library, viewed 11 February 2012,
Abeles, P (2010c) SpeedSimpleMatrix – SimpleMatrix runtime performance study, viewed 11
February 2012, <>.
Borre, K (2003) 'The Easy Suite - MATLAB code for the GPS newcomer'. GPS Solutions, 7(1),
pp 47-51.
Borre, K (2010) The EASY Suite, viewed 11 February 2012, <>.
Fenoy, G (2009) ZOO project : an open WPS Platform, International Conference FOSS4G2009,
Sydney, Australia, viewed 11 February 2012, <>.
Fenoy, G, Bozon, N, Raghavan, V (2010) 'ZOO project: The Open WPS Platform', submitted to
WebMGS 2010, Como, Italy.
Hofmann-Wellenhof, B, Legat, K, Wieser, M (2003) Navigation – Principles of Positioning and
Guidance, Springer Wien New York.
Kalman, RE (1960) ' A New Approach to Linear Filtering and Prediction Problems'. Transaction
of the ASME - Journal of Basic Engineering, pp. 35-45.
Realini, E (2009) goGPS - free and constrained relative kinematic positioning with low cost
receivers, Ph.D. Thesis, viewed 11 February 2012
Sriram, I, Khajeh-Hosseini, A (2010) Research Agenda in Cloud Technologies, 1st ACM
Symposium on Cloud Computing (SOCC 2010), viewed 11 February 2012,
The OGC Web Processing Service (2007) Open Geospatial Consortium, viewed 11 February
2012, <>.
Yoshida, D, Song, X, Raghavan, V (2009) Development of Track Log POI Management System
using Free and Open Source Software, International Conference FOSS4G2009, Sydney, Australia,
viewed 11 February 2012, <>.
Yoshida, D, Song, X, Raghavan, V (2010) 'Development of Track Log POI Management System
using Free and Open Source Software', Applied Geomatics, vol. 2, no. 3, pp. 123-135.
... The data processing software used for GNSS observation is goGPS. goGPS is an open-source software application developed by (Realini et al. 2012) in 2007 at the Geomatics Laboratory of the Politecnico in Milano, Como Campus. Initially, it was developed in MATLAB but was recently converted to Java to expand its users, and they were started to provide it as a service through the web. ...
In this study, it is confirmed that single-station GPS meteorology is feasible where there is no possibility for the development of a sophisticated and reliable GPS network. Since 2009 GPS stations have been installed in Makassar and Bitung by the Indonesian Geospatial Information Agency, where meteorological sensors have also been installed at the stations. The method used is to extract Rinex data collected every 30 seconds from GPS stations and processed to estimate the total zenith delay (ZTD) of GPS signals in the troposphere. The ZTD estimate is then automatically converted to stored water vapor (PWV) with the calculations and algorithms of the goGPS software. The results obtained from this goGPS calculation are then validated. Two types of validation were applied to the PWV estimation. They all prove the validity of GPS results: (1) PWV was measured using radiosondes in Makassar and Bitung with almost the same climate regime, showing 96.5 and 83.0% correlation with GPS PWV time series, respectively. (2) the global reanalysis data set showed a correlation of 60.1 and 75.3%, respectively, with GPS results. The results of both validations employing this comparison show that a permanent GPS network can be an alternative to obtain more detailed and temporally accurate meteorological data with lower costs and time-saving operations.
... The main software for extracting RINEX data, namely goGPS. (Realini, 2009) Some of the research results using goGPS, among others, Realini et al. (2012) stated that goGPS could work in either real-time or post-processing, by getting raw GPS data in the input and providing position (i.e., coordinates) in the output. Herrera et al. (2016) goGPS published under a free and open-source license, goGPS can process data collected by any recipient but focuses on the treatment of observations by low-cost recipients. ...
The tropospheric delay is an essential source of error for positioning using the Global Navigation Satellite System (GNSS). Scientific applications of GNSS positioning such as the study of earth crust deformation and earthquake prediction require high accuracy in positioning, an analysis of tropospheric delay calculations is needed to improve the accuracy of GNSS positioning. One part of the tropospheric delay is Zenith tropospheric delays (ZTD), which are estimated using the Precise Point Positioning (PPP) method. ZTD estimates can be beneficial for meteorological applications, for example, is the estimation of water vapor levels in the atmosphere from the estimated ZTD. We use GNSS data from the BAKO station in Cibinong and JOG2 station located in Yogyakarta. The GNSS data format is an Independent Exchange Receiver (RINEX), which we extracted using the sophisticated open-source GNSS software, called goGPS version 1.0 Beta from Geomatics Research and Development s.r.l.-Lomazzo, Italy. We validate the results of the extraction process with two international tropospheric products from International GNSS Services (IGS) with commercial software Bernese version 5 and the University of Nevada Reno (UNR) with software from NASA Jet Propulsion Laboratory (JPL) namely GIPSY / OASIS II. Epoch in this study, we use days of the year (DOY) 022-025 / 22-25 January representing the rainy season and DOY 230-233 to coincide on August 17-20 representing the dry season 2018. Our results obtained ZTD values both in January and August, and the two BAKO and JOG2 stations were consistent and worked well at different times and stations. RMS throughout DOY, both at BAKO and JOG2 stations, show small values <2 mm. The RMS value is relatively small, meaning that the troposphere estimation process with goGPS shows a good agreement because it is almost the same as the international troposphere products from UNR and IGS. This means that the ZTD estimation process from goGPS software can be an alternative to paid software. The range of ZTD values in January tends to be higher than in August, meaning the value of ZTD has a strong correlation with changes in the rainy and dry seasons, this shows that ZTD can be useful for meteorological purposes.
... The value of ZHD itself is estimated by formula (Elgered, et al., 1991) : (Bevis,, 1992). (Realini et al. 2012). It is essential to note goGPS does not require MATLAB individual supporting toolboxes. ...
Conference Paper
The establishment of a GPS Permanent Station network in Indonesia began in 1996 and is now known as Indonesia continuously operating reference station (INA-CORS), its management authority under the Geospatial Information Agency (BIG). Based on information from BIG, data of 2016, the distribution of CORS in Indonesia has as many as 135 stations. INA-CORS is built, has the primary objective is to maintain national geodetic reference frames in active seismic zones for survey and mapping purposes, as well as basic tasks and BIG functions. In its development, based on (BEVIS 1992) RINEX data is not only to determine the position as reference geodesy for survey and mapping but also to determine the water vapor for meteorological purposes. The observational accuracy is similar to the results obtained from other methods. Water vapor plays an essential role in the atmospheric system because it affects the balance of elements and energy in space, so it is worth developing.
... The development is now carried out mostly by GReD srl, with the contributions of users from several institutions, at international level. goGPS has applications in navigation (Realini et al., 2012), but also in other fields such as building monitoring (Caldera et al., 2016) and troposphere estimation (Barindelli et al., 2018). ...
Full-text available
A pure GNSS navigation is often unreliable in urban areas because of the presence of obstructions, thus preventing a correct reception of the satellite signal. The bridging between GNSS outages, as well as the vehicle attitude reconstruction, can be recovered by using complementary information, such as visual data acquired by RGB-D or RGB cameras. In this work, the possibility of integrating low-cost GNSS and visual data by means of an extended Kalman filter has been investigated. The focus is on the comparison between the use of RGB-D or RGB cameras. In particular, a Microsoft Kinect device (second generation) and a mirrorless Canon EOS M RGB camera have been compared. The former is an interesting RGB-D camera because of its low-cost, easiness of use and raw data accessibility. The latter has been selected for the high-quality of the acquired images and for the possibility of mounting fixed focal length lenses with a lower weight and cost with respect to a reflex camera. The designed extended Kalman filter takes as input the GNSS-only trajectory and the relative orientation between subsequent pairs of images. Depending on the visual data acquisition system, the filter is different because RGB-D cameras acquire both RGB and depth data, allowing to solve the scale problem, which is instead typical of image-only solutions. The two systems and filtering approaches were assessed by ad-hoc experimental tests, showing that the use of a Kinect device for supporting a u-blox low-cost receiver led to a trajectory with a decimeter accuracy, that is 15 % better than the one obtained when using the Canon EOS M camera.
... Table 1 performs the parameters comparison between the geodetic and low cost receivers, showing different characteristics of these two receivers. Realini et al. carried out a series of research on low cost receiver with goGPS, and verified that location accuracy of single frequency and low cost receiver processed by goGPS has been greatly improved [1][2][3]. Takasu et al. had evaluated the performance of low cost receivers and achieved precise result with low cost receivers by RTKLIB [4]. Marco et al. studied on the landslide monitoring using the low cost receiver and investigated the effect of baseline length on the result [5,6]. ...
Full-text available
In the satellite navigation and positioning process, the performance of the receiver directly impacts on the quality of observation data, and affects the positioning accuracy ultimately. Therefore, the receiver is sufficiently important for the whole navigation and positioning process. Deformation monitoring belongs to precise engineering survey and it often needs to reach the millimeter-level accuracy, so that the geodetic receiver with excellent performance and high price is often used in this survey. Under this background, improving the positioning accuracy of low cost receiver and applying it to deformation monitoring can effectively reduce the engineering cost, which has great practical significance and research value. This study is based on the low cost receiver EVK-M8T from ublox company. Firstly, the receiver performance is evaluated from signal to noise ratio (SNR), receiver clock and accuracy of standard point positioning (SPP) through comparing with geodetic receiver Trimble NetR9. Then through the experiment simulation of deformation monitoring, the feasibility of deformation monitoring using low cost receiver is analyzed. The numerical results show that the location accuracy of low cost receiver can basically keep in millimeter level when the observation period reaches more than 2 h, and it can correctly detect the movement of the point. Hence low cost receiver can be applied to the deformation monitoring under the premise of improving its stability.
... GNSS data were collected on 4 August 2017 over a timespan of 1.5 h by a Google/HTC Nexus 9 tablet (using the "Geo++ RINEX Logger" app), co-located with a u-blox EVK-6T receiver with its standard ANN-MS patch antenna (using the goGPS Java logger [21]-The RINEX files used in this work are freely available, upon request sent to The Nexus 9 tablet embeds a Broadcom BCM4752 GNSS receiver module, capable of tracking GPS, GLONASS and QZSS signals; in this work, GPS-only observations were used. ...
Full-text available
The recent access to GNSS (Global Navigation Satellite System) phase observations on smart devices, enabled by Google through its Android operating system, opens the possibility to apply precise positioning techniques using off-the-shelf, mass-market devices. The target of this work is to evaluate whether this is feasible, and which positioning accuracy can be achieved by relative positioning of the smart device with respect to a base station. Positioning of a Google/HTC Nexus 9 tablet was performed by means of batch least-squares adjustment of L1 phase double-differenced observations, using the open source goGPS software, over baselines ranging from approximately 10 m to 8 km, with respect to both physical (geodetic or low-cost) and virtual base stations. The same positioning procedure was applied also to a co-located u-blox low-cost receiver, to compare the performance between the receiver and antenna embedded in the Nexus 9 and a standard low-cost single-frequency receiver with external patch antenna. The results demonstrate that with a smart device providing raw GNSS phase observations, like the Nexus 9, it is possible to reach decimeter-level accuracy through rapid-static surveys, without phase ambiguity resolution. It is expected that sub-centimeter accuracy could be achieved, as demonstrated for the u-blox case, if integer phase ambiguities were correctly resolved.
... To comment on any of the source code discussed here, or to download source code, visit our website at http:// www performance. The development of an alternative version of goGPS, written in Java and published under a LGPLv3 license, was started in 2010 with the aim of providing a positioning library in a coding language more suitable for the implementation of positioning Web services ( Realini et al. 2012). It is important to note goGPS does not require MATLAB special supporting toolboxes. ...
Full-text available
goGPS is a positioning software application designed to process single-frequency code and phase observations for absolute or relative positioning. Published under a free and open-source license, goGPS can process data collected by any receiver, but focuses on the treatment of observations by low-cost receivers. goGPS algorithms can produce epoch-by-epoch solutions by least squares adjustment, or multiepoch solutions by Kalman filtering, which can be applied to either positions or observations. It is possible to aid the positioning by introducing additional constraints, either on the 3D trajectory such as a railway, or on a surface, e.g., a digital terrain model. goGPS is being developed by a collaboration of different research groups, and it can be downloaded from The version used in this manuscript can be also downloaded from the GPS Toolbox Web site This software is continues to evolve, improving its functionalities according to the updates introduced by the collaborators. We describe the main modules of goGPS along with some examples to show the user how the software works.
Conference Paper
In this paper, we study the precipitable water vapor (PWV) within the 2015-2016 time frame. During this period occurred an El Niño-Southern Oscillation (ENSO) episode, and caused drought in Indonesia. Global Positioning System (GPS) is a useful sensor for atmospheric sounding, including PWV. Expected can detect ENSO phenomenon through PWV value. We processed the GPS observation data by Precise Point Positioning (PPP) method using the goGPS software. The obtained values of Zenith Troposphere Delay (ZTD) and PWV were validated by comparing with the ZTD values from four IGS stations (BAKO, PIMO, NTUS, ALIC), i.e., there was a mean difference of-3.48, the average standard deviation is 13.36 mm, and the correlation coefficient was 0.94. The deviation between the IGS ZTD and PPP ZTD estimates is within the measurement error, and our results can be used to study PWV behaviors for meteorological and climatological purposes in Indonesia. The values of PWV obtained from station GPS CMAK and CBIT were compared with PWV by radiosonde observations. The results showed a good agreement with the coefficient correlation is 0.86 at CMAK Station and 0.85 at CBIT station. The PWV values at CBIT stations varied between 37.08 and 76.01 mm with an average of 57.05 mm. For CTOL, CMAK, and CKEN stations, their average PWV is 61.17, 50.84 and 51.75 mm. The standard deviation (STD) value of the PWV at CMAK stations was 11.79 mm, higher than the other stations. During the El Niño event, the correlation between SSTa and PWV became weak at the four stations.
The spread of digital relative gravimeters made it possible to measure gravity more easily and conveniently than analog gravimeters. However, gravity data observed in the relative gravimeters requires gravity correction for earth tide, meter height, and absolute gravity conversion, etc. In this gravity correction, data is entered and processed using laptop computers after gravity measurements. However, this method has poses its disadvantage that it requires the installation of the applicable software in a computer for execution, but it can be resolved by using Web Processing Service (WPS) designed to provide treatment process of spatial data on the internet, which is one of OGC standards. In this regard, this study attempts to implement OGC WPS-based gravity correction service that can transmit relative gravity values collected in the field to OGC WPS server for processing data and receive its results in real time. The implemented service is expected to conduct gravity correction efficiently using OGC WPS process even in a low-performance mobile device.
Full-text available
goGPS is a software package designed to enhance the accuracy of standalone GPS receivers by exploiting networks of GNSS permanent stations to apply real-time relative positioning, extended Kalman filtering techniques to better model the kinematics of a roving GPS receiver, digital terrain model observations to mitigate the GPS weakness in the vertical direction and, if it is known in advance that the receiver is moving along a predefined path (e.g. a railway), linear paths to constrain the positioning. The principal innovation introduced by goGPS is the possibility to apply kinematic relative positioning in an effective way on low cost single frequency GPS receivers, enhancing their accuracy from the usual 2-4 m up to some decimeters. Though this kind of receivers is the main target for goGPS, also double frequency receivers are supported. goGPS positioning capabilities have been assessed by testing it under different conditions of sky visibility, signal degradation and dynamics of the roving receiver. Since goGPS needs GPS raw observations (i.e. code pseudorange, phase measurement, signal-to-noise ratio, etc.) the u-blox AEK-4T evaluation kit was chosen as a roving receiver, since it provides them. goGPS performance using AEK-4T were compared both with other low cost instruments (eBonTek eGPS 597, TomTom MKII) and with high level professional receivers (Leica GS20 and Leica GPS System 1200). The results show that goGPS managed to get higher accuracy than low cost receivers during all the tests, in some cases obtaining accuracy levels of the same order of magnitude of those obtained by the single frequency professional receiver (Leica GS20). goGPS is developed in a MATLAB environment and it can run either in real-time mode, receiving the low cost receiver data stream on a USB port and the master station data stream through the Internet, or in post-processing mode, reading master and rover RINEX files or goGPS data saved during a real-time session.
Full-text available
This paper aims to present the ZOO Project, which is a new open source implementation of the Open Geospatial Consortium's (OGC) Web Processing Service (WPS), released under the term of the MIT/X-11 license. Based on a robust server-side C language Kernel (named ZOO Kernel), ZOO Project proposes a new approach to develop, handle and chain standardized GIS-based Web services. A brief review of WPS and existing implementations will be first proposed in order to detail the ZOO Project development background and goals. Then, the ZOO itself will be presented, focussing on its assets and limitations, formost to highlight the new opportunities provided by such a platform. The ZOO Kernel and its architecture will be first examinated, before further explanations on the proposed method for Web services creation. The ZOO JavaScript API that provides an easy way to orchestrate and chain Web services will be then presented through technical ramblings on server-side JavaScript support into ZOO Kernel. Both Kernel and API are illustrated and documented through different Web service code snippets. Some visual examples of client-side interactions are also presented.
Full-text available
Recent advanced performance of low-cost Global Positioning System (GPS) and GPS-enabled cell phones has contributed a great deal to the development of location-aware services and systems. High-speed broadband technology has promoted collaborative projects such as OpenStreetMap or other User Generated Contents services. In this research, a Web-based prototype system for GPS track log and point of interest (POI) management was developed to archive a collaborative framework in field surveys. The main function of the system can be separated into three parts: data collection, data management, and data quality enhancement. The system supports real-time data collection for the future ubiquitous environment and also can monitor real-time GPS positions. This research shows functionalities that can minimize GPS errors using Dilution of Precision filtering and data quality enhancing techniques using the Douglas-Peucker algorithm and PgRouting. The research introduces a system that provides an interoperable framework in which to work with other geospatial services through open geospatial standards. KeywordsPoint of interest (POI)-Location-based service (LBS)-Global Positioning System (GPS)-Quality filtering-Simplification
The Matlab computing environment has become a popular way to perform complex matrix calculations, and to produce sophisticated graphics output in a relatively easy manner. Large collections of Matlab scripts are now available for a wide variety of applications and are often used for university courses. The GPS Easy Suite is a collection of ten Matlab scripts, or M-files, which can be used by those just beginning to learn about GPS. The first few scripts perform basic GPS calculations such as converting GPS Time in year/month/day/hour/minute/second format to GPS week/seconds of week, computing the position of a satellite using a broadcast ephemeris, and computing the coordinates of a single point using pseudorange observations. The latter scripts can perform calculations such as computing baseline components using either traditional least-squares or a Kalman filter, fixing cycle slips and millisecond clock jumps, and computing ionospheric delay using carrier phase observations. I describe the purpose of each M-file and give graphical results based on real data. The Matlab code and the sample datasets are available from my website. I have also included additional text files (in pdf format) to discuss the various Time Systems and Coordinate Systems used in GPS computations, and to show the equations used for computing the position of a satellite using the ephemeris information broadcast from the satellites.
The classical filtering and prediction problem is re-examined using the Bode-Sliannon representation of random processes and the “state-transition” method of analysis of dynamic systems. New results are: (1) The formulation and methods of solution of the problem apply without modification to stationary and nonstationary statistics and to growing-memory and infinitememory filters. (2) A nonlinear difference (or differential) equation is derived for the covariance matrix of the optimal estimation error. From the solution of this equation the coefficients of the difference (or differential) equation of the optimal linear filter are obtained without further calculations. (3) The filtering problem is shown to be the dual of the noise-free regulator problem. The new method developed here is applied to two well-known problems, confirming and extending earlier results. The discussion is largely self-contained and proceeds from first principles; basic concepts of the theory of random processes are reviewed in the Appendix.
2 7212 Bellona Ave. 3 Numbers in brackets designate References at end of paper. 4 Of course, in general these tasks may be done better by nonlinear filters. At present, however, little or nothing is known about how to obtain (both theoretically and practically) these nonlinear filters. Contributed by the Instruments and Regulators Division and presented at the Instruments and Regulators Conference, March 29-Apri1 2, 1959, of THE AMERICAN SOCIETY OF MECHANICAL ENGINEERS. NOTE: Statements and opinions advanced in papers are to be understood as individual expressions of their authors and not those of the Society. Manuscript received at ASME Headquarters, February 24, 1959.Paper No. 59, IRD-11.
Cloud computing is the latest effort in delivering computing resources as a service. It represents a shift away from computing as a product that is purchased, to computing as a service that is delivered to consumers over the internet from large-scale data centres - or "clouds". Whilst cloud computing is gaining growing popularity in the IT industry, academia appeared to be lagging behind the rapid developments in this field. This paper is the first systematic review of peer-reviewed academic research published in this field, and aims to provide an overview of the swiftly developing advances in the technical foundations of cloud computing and their research efforts. Structured along the technical aspects on the cloud agenda, we discuss lessons from related technologies; advances in the introduction of protocols, interfaces, and standards; techniques for modelling and building clouds; and new use-cases arising through cloud computing. Comment: Submitted to the 1st ACM Symposium on Cloud Computing, SOCC 2010
SpeedSimpleMatrix—SimpleMatrix runtime perfor-mance studyefficient-java-matrix-library/wiki/SpeedSimpleMatrix>. Viewed 11 Febr The Easy Suite—MATLAB code for the GPS newcomer The EASY Suite
  • Abeles
Abeles P (2010c) SpeedSimpleMatrix—SimpleMatrix runtime perfor-mance study. <>. Viewed 11 Febr 2012 Borre K (2003) The Easy Suite—MATLAB code for the GPS newcomer. GPS Solutions 7(1):47–51 Borre K (2010) The EASY Suite. <>. Viewed 11 Feb 2012
ZOO project: the open WPS platform Navigation—principles of positioning and guidance A new approach to linear filtering and prediction problems
  • G Fenoy
  • N Bozon
  • B Hofmann-Wellenhof
  • K Legat
  • Wieser
Fenoy G, Bozon N, Raghavan V (2012) ZOO project: the open WPS platform. Applied Geomatics 4(1):1–6 Hofmann-Wellenhof B, Legat K, Wieser M (2003) Navigation—principles of positioning and guidance. Springer Wien, New York Kalman RE (1960) A new approach to linear filtering and prediction problems. Trans ASME J Basic Eng 82(Series D):35–45