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
* -
** 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
* -
** 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
=== 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
* -
** no choice of user environments
** 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.
* -
** 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).
=== 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
== Development Platforms/Languages ==
TODO: Different options for development platforms on which the software can be developed for maximum portability
=== C/C++ ===
==== 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
=== Java ===
==== 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
=== 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 #Spatial Data Formats
** remote
*** accessed via Web Feature Service
** local
*** file based
*** local RDBMS, for example #SQLite
* 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 ===
* Mergin Maps: Mobile app for field data collection available for Android and iOS, based on QGIS.
* Bluemapia: Multi-Map(Google,Microsoft,Open Street Map, NOAA/BSB Charts,self-calibrated raster) location-based GPS app for Windows Mobile
* QField: QGIS project file based Android app supporting a wide variety of styles, data formats and attribute form customization
* 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
* GOMOGI Simple One Touch data collection
* 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
Category: Software Stack