Mobile Solutions

Overview
This is not a formal OSGeo project, just a spot for a few OSGeo folks to share some ideas. The idea is to elaborate foundations of design and implementation of Open Source GIS application(s) for mobile devices.

Our main objectives are to discuss:
 * principles of mobile software design
 * high usable User Interface on mobile devices
 * key functions automation
 * usage of latest communication techniques
 * portability

Hardware
TODO: What is the best device for mobile GIS application?

Operating Systems / Platforms
This section is devoted to discuss features as well as pros and cons (+/-) of various mobile operating systems and software platforms.

Here are listed platforms we have discussed, in alphabetical order:

Linux
From OpenEmbedded Overview:

''OpenEmbedded is a full-featured development environment allowing users to target a wide variety of devices.(...)OpenEmbedded is a tool which allows developers to create a fully usable Linux base for various embedded systems. It has been designed to be able to handle different hardware architectures, support multiple releases for those architectures, and utilize tools for speeding up the process of recreating the base after changes have been made. Currently it can run on any Linux distribution, and plans are in place to allow it to work under Windows.''

Note: Familiar's Linux distribution is entirely based on OpenEmbedded system.

See:
 * http://familiar.handhelds.org
 * http://intimate.handhelds.org
 * http://www.microwindows.org
 * http://www.openembedded.org

See also:
 * http://www.linuxdevices.com
 * http://tuxmobil.org/pda_linux.html

Pros and Cons

 * choice of user environments: GPE, Opie and Qtopia
 * compatible with POSIX
 * easy software portability
 * Open Source Software
 * prototypes available: e.g. GRASS on Handhelds
 * prototypes available: e.g. GRASS on Handhelds


 * less popular
 * less popular

Palm OS
See:
 * http://en.wikipedia.org/wiki/Palm_OS

Pros and Cons

 * available Open Source tool chain - called
 * available JVM
 * C/C++ programming language
 * C/C++ programming language


 * dedicated for a very specific hardware platform designed entirely by Palm Inc.
 * no choice of user environments
 * no multitasking support in versions prior to Palm OS Cobalt, version 6.x
 * proprietary
 * proprietary

Symbian OS
See:
 * http://en.wikipedia.org/wiki/Symbian_OS

Pros and Cons

 * dedicated to devices with very limited resources
 * good support for popular IDEs on Linux, Mac OS and Windows
 * open in terms of Open Standards
 * very popular on smartphones
 * very well documented APIs
 * very good support for Java
 * wide variety of programming languages: C++, Java, Perl, Python, OPL, Visual Basic
 * wide variety of programming languages: C++, Java, Perl, Python, OPL, Visual Basic


 * no choice of user environments
 * proprietary
 * proprietary

Windows CE
See:
 * http://en.wikipedia.org/wiki/Windows_CE
 * http://msdn.microsoft.com/embedded/windowsce/default.aspx

See also:
 * http://www.windowsfordevices.com

Pros and Cons

 * Real-Time Operating System, with full multithreading and multitasking support
 * supports wide range of hardware
 * very popular on PDAs currently on the market / widely used
 * very well supported by Visual Studio 2005
 * very well supported by Visual Studio 2005


 * no choice of user environments
 * not compatible with POSIX
 * No good free JVM available, both recommended machines IBM J9 JVM and NSICOM CrEme JVM are commercial
 * proprietary
 * very limited version of C Run-Time library
 * Visual Studio 2005 is expansive / no replacement
 * Visual Studio 2005 is expansive / no replacement

Windows XP Embedded
From About Windows XP Embedded:

Windows XP Embedded is a componentized version of Windows XP Professional that contains all of the features, functionality, and familiarity of Windows XP Professional.

See:
 * http://en.wikipedia.org/wiki/Windows_XP_Embedded
 * http://msdn.microsoft.com/embedded/windowsxpembedded/default.aspx

Pros and Cons
TODO
 * proprietary
 * proprietary

Development Platforms/Languages
TODO: Different options for development platforms on which the software can be developed for maximum portability

Pros and Cons

 * Excellent performance
 * An industry standard for developing application
 * Quite portable, as long as portability is taken into account throughout development
 * Requires more work to compile on various OS
 * GUI is not portable to various OS, so it would most likely need to be developed separately for several different OS's
 * Requires more work to compile on various OS
 * GUI is not portable to various OS, so it would most likely need to be developed separately for several different OS's

Pros and Cons

 * Excellent portability
 * Should technically work on any Operating System as long as a Java VM is available for it
 * Should work with Java-enabled cell phones as well
 * Worse performance than C/C++
 * Not all Mobile hardware has Java VM pre-installed
 * Worse performance than C/C++
 * Not all Mobile hardware has Java VM pre-installed

wxWidgets
TODO: Anyone with experience using wxWidgets, please add your thoughts
 * http://www.wxwidgets.com
 * Seems an excellent GUI toolkit which is highly portable
 * Usable from variety of languages such as C++, Python, Perl, and C#/.NET.

Open Source GIS for Mobile Devices
TODO: Details of mobile GIS application design and implementation

Key Features
TODO: List of key features

Brainstorm
Note: Please, feel free to extend the list of features here.

Question: ''What do you think about rank features listed in this brainstorm section? It could be achived by putting asterix (*) next to features you think are important. Any other ideas?''

This section is devoted to a summary of our discussion on the OSGeo mailing list. List of ideas of Open Source Mobile GIS features:


 * User Interface
 * configurable UI: turn on/off UI elements, switch to kiosk mode
 * create a wizard type tool for the desktop (for example in QGIS) to create data collection forms, etc. to be transported to the handheld device (similar to as ArcPad Forms)
 * binding UI action to hardware elements, for example zooming with hardware keys or scrolls
 * use of voice capabilities
 * ask for operation confirmations (Yes, No, Cancel) and accept answering by speech recognition or by pushing hardware keys
 * use of LEDs, for example to indicate states of various operations: GPS location accuracy/low PDOP, edited layer has not been saved, no network connection, synchronization is in progress, catching tracklog/feature vertices with GPS, etc.
 * Internationalization
 * Client UI should have an option for a 'simplified' UI, so that those with less computer experience can still use the software effectively. Advanced option can be used by those with more experience/who need the most functionality from the client.


 * GIS functionality
 * map tools: zoom-in, zoom-out, pan
 * integration of map and attributes database
 * data query tool
 * features editing
 * automated and configurable functions like: snapping, polygon closing, layers autosave
 * measures
 * projections, for example PROJ.4 for Windows CE


 * data sources and providers, see
 * remote
 * accessed via Web Feature Service
 * local
 * file based
 * local RDBMS, for example


 * data synchronization
 * network-based:
 * on-demand - temporal network connection required
 * continuous - permanent network connection required
 * file-based:
 * with files copied from flash memory card
 * with files transfered by IrDA, Bluetooth or cable


 * GPS functionality
 * navigation
 * routing from current position
 * querying data based on current position
 * catch location from GPS, for example to create point on a layer
 * signal/protocol logging
 * automated map large-scale switching while measuring/catching features with GPS, for example from 1:500 or 1:1000


 * Other
 * some kind of integration with external devices, for example laser range finder, camera

Spatial Data Formats
This section discusses data formats considered for local spatial datastore on a mobile device. Proposed formats are listed in alphabetical order.

Spatial Data File (SDF)
From Autodesk's FAQ about the SDF format:

''Autodesk’s new spatial data file (SDF) is a powerful single file that provides many of the capabilities of a relational database (RDBMS). Each SDF file can contain multiple geometry types (lines, polygons, and points) as well as feature attributes. A spatial data file enables you to organize and manage your data as GIS features, providing a solid foundation for a smooth transition to an RDBMS in the future if the need arises.''

Some additional info on the SDF format available at https://fdo.osgeo.org/nonav/docs/SDF/index.html

''TODO: We need more details about SDF format! If you know anything about this format, please share your knowledge here. Thanks!''

TODO: Is there any specification available to download?

ESRI Shapefile
ESRI Shapefile is a file-based format, simple and easy to use in mobile application, though it does not support complex data relations natively. Important features of ESRI Shapefile format:
 * availability of portable libraries: Shapelib and OGR, both work on Windows CE and Linux
 * easy to use and create on mobile devices
 * very popular format in GIS world
 * well-documented format

See:
 * http://en.wikipedia.org/wiki/Shapefile
 * ESRI Shapefile Technical Description

SQLite
From the SQLite website:

SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.

SQLite engine seems to be a good candidate for a local geospatial database managed on a mobile device. SQLite features which are mostly interesting for Open Source GIS system for mobile devices include:


 * easy to use and create on mobile devices
 * highly portable library, works well on Linux PDAs and Windows CE devices (see sqlite-wince)
 * Open Source Software
 * single-file format
 * it's been used in GIS, see SQLite driver for OGR and SQLite driver for GRASS

Existing Projects
Here is the list of various existing GIS projects for mobile platforms:

Open Source

 * GRASS Server by Radim Blazek and Luca Nardelli - client-server system providing access to geographic information from different kinds of devices: PCs, PDAs, mobile phones; with speech recognition support.
 * GRASS Server Video by Radim Blazek and Luca Nardelli - Video Demo (AVI File 31MB).
 * J2ME OGC WMS Client - it is a tool, implemented in J2ME, to communicate with OGC conform WMS servers and display the requested maps.
 * mapview - mapview is a package for viewing maps on a Palm OS handheld.
 * Navlet - it is a navigation system for mobile devices, gets the positioning from a GPS receiver and displays it on a digital map.
 * Spot - combine the power of GPS with worldwide maps and a flexible waypoint management on mobile phone or PDA.
 * GeoTracing - GPS/Mobile tracking, tracing with locative media platform

Closed Source

 * Virtual Earth Mobile
 * OziExplorer
 * Fugawi Global Navigator