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. The homepage for this project can be found at Mobile GIS. If you have any comments about the homepage, please visit the Mobile GIS Support page, and post/subscribe to the mailing list.

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

Mobile GIS project
Homepage: http://mobile.maptools.org/

Hardware
Mobile GIS will be made to work on a variety of hardware platforms. It should be usable on desktop systems, laptops, tablet PCs, and other various pocket computers. Support for cell phones with Java capability is also an option.

TODO: List pros/cons for devices on which Mobile GIS can be run.

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

OpenMoKo
OpenMoKo is an open-source mobile communications platform. Most importantly, it comes with built-in AGPS receiver, touch-screen, and GSM data connection.


 * OpenMoKo homepage
 * OpenMoKo wiki

It will run OpenEmbedded.

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

Pros and Cons

 * available Open Source tool chain - called
 * available VMs are primarily J2ME and SuperWaba.
 * Palm official development environment is C/C++ based
 * Palm official development environment is C/C++ based


 * 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
 * http://en.wikipedia.org/wiki/SuperWaba
 * http://en.wikipedia.org/wiki/List_of_Java_virtual_machines

Pros and Cons

 * Real-Time Operating System, with full multithreading and multitasking support
 * supports wide range of hardware
 * file system is easily accessible: does not require "conduits" for data/file transfer.
 * very popular on PDAs currently on the market / widely used
 * very well supported by Visual Studio 2005
 * Available JVMs include, IBM J9 JVM, NSICOM CrEme JVM and SuperWaba VM
 * SuperWaba VM is free and has an active developer news group. The SuperWaba VM has a more liberal "sandbox" than some of the other VMs that adhere strictly to Sun Microsystems CDC and CLDC specs. Consequently accessing serial devices, (barcode scanners, RFID readers, bluetooth GIS units, etc) in SuperWaba is more straight forward than w/some of the other VMs.
 * SuperWaba VM is free and has an active developer news group. The SuperWaba VM has a more liberal "sandbox" than some of the other VMs that adhere strictly to Sun Microsystems CDC and CLDC specs. Consequently accessing serial devices, (barcode scanners, RFID readers, bluetooth GIS units, etc) in SuperWaba is more straight forward than w/some of the other VMs.


 * no choice of user environments
 * not compatible with POSIX
 * very limited version of C Run-Time library
 * Visual Studio 2005 is expensive / no replacement
 * WinCE is less stable and user friendly (than the PalmOS).
 * WinCE is less stable and user friendly (than the PalmOS).

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.org (and for embedded apps: http://www.wxwidgets.org/docs/embedded.htm)
 * Seems an excellent GUI toolkit which is highly portable
 * Usable from variety of languages such as C++, Python, Perl, and C#/.NET.
 * GRASS GIS is using wxPython for its new GUI.

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
 * real-time correction via WAAS or EGNOS


 * Data Compression
 * including Spatial and Attribute data
 * Catagraphy-generalization-based compression for vector data
 * Huffman-Code-based method for attribute data
 * Wavelet-based method for raster data
 * Layer map management accrording to application theme
 * for vehicle navigation specification like ISO GDF40


 * 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.

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

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?

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

SVGMobile
It is a subset of classes fron SVG. It an standard released by the W3C and provide scalable vector graphics to mobile devices. It is XML based and it is main features are:


 * Adaptability: content can adapt to any screen size and display properties. The same content can be displayed on desktop, handlet or phone.
 * Zooming capabilities: content can be zoomed with no losss of quality or need to reload.
 * Animation: content can be animated in a variety of ways (not just frame based).
 * Interactivity: content can be interactive.
 * Searchability: content can be searched for text or shapes.
 * Efficiency: content can be compressed using gzip (standard). Animation compresses ten times better than animated GIF.

J2ME provieds the JSR 226 to manage this type of content in midlets.

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

Open Source

 * gvSIG Mobile, already functional shp, ecw image display and GPS tracking (Win Mobile Devices with J9 JavaVM from IBM)
 * Gpsd - Back end daemon which reads data from a NMEA or binary protocol GPS and multicasts that information on a TCP port for a variety of client apps.
 * GpsDrive - Real-time navigation software. Supports creation of waypoints and tracks in a SQLite DB, and import/export of GPX files. OpenStreetMap data can automatically be rendered into map tiles via the Mapnik engine, and NASA Landsat data can automatically be downloaded for the current position.
 * 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.
 * JVNMobileGIS - It is a Java map mobile viewer which is small in size. JVNMobileGIS fetches map data from remote OGC WMS compliant servers instead of included map data in mobile device.
 * WMSMobil J2ME - simple OGC WMS Client for Java Micro-Edition enabled mobile phones from University of Regensburg, featuring GetMap and GetFeatureInfo.
 * Maemo Mapper - Maemo Mapper is geographical mapping software specifically designed for the Maemo platform and the Nokia 770 form factor
 * 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
 * Smita - Interreg IIIB (Atlantic Area) European project called SMITA (Turistic Information System for Mobile Devices in the Atlantic Area). It is based in open source software and OGC standars and it is developing a system to enable users of mobile computing devices to access tourism, cultural and citizen information in all partner regions.
 * SVG kernel for mobile devices
 * tangoGPS - Real-time navigation software for mobile platforms (eeePC, smartphones, OpenMoko etc)
 * gpsDataLogger Designed to collect fisheries data linked to GPS coordinates from small fixed wing aircraft. SQL database runs on WinCE, Palm PDA & Linux and Win32 lap/desktops. Program was written using SuperWaba: a robust java-like development environment for handheld devices.
 * OSMTracker, the Openstreetmap Mobile Tracker, generates tracks and waypoints (nmea raw + gpx), audio recording.

Closed Source

 * Overview of mobile geodata services for cell phone/smartphone or pda. Inquiry by Ralph Buchfelder for WMSMobil Project at University of Regensburg.
 * Virtual Earth Mobile
 * OziExplorer
 * Fugawi Global Navigator
 * www.digitalmobilemap.com Provides J2ME application for mobile phone that supports routable vector maps and uses A* algorithm for AutoRouting.

Events
FOSS4G2006 Mobile GIS BOF

FOSS4G2006 Mobile GIS BOF Minutes