3. Jaak Laineste
• GIS/LBS experience
17 years in GIS/mapping, 13 years in LBS
Mobile operator LBS in all over the world
Nutiteq since 2006
• Nutiteq and mobile development
Part of Mobi Solutions group since 2009
Android and iPhone teams
J2ME and Blackberry past
Naval navigation apps
4. Location-Based Services
1. Location-based: 80% of data
2. Service (or mobile application)
3. Mobile technologies (phones, networks)
4. Mobile positioning
• LBS is a technology, not application type,
or business
Can be aspect of any application type
5. Mobile Network Operator-based LBS
• Mobile Positioning
Find location using mobile network
Works with any mobile, no requirements
Accuracy with Cell-ID: 300m ... 30 km (~1 km avg)
Operator can also use in-phone GPS with A-GPS
Only operator can do it,
Can give to trusted 3rd party
• Typical services
FriendFinder, Games
Find Nearest SMS
Fleet Management
NSA
• Recent trends
Operators open APIs, including location
Aggregators: e.g. Loc-Aid
Location-based advertising – www.flipper.ee (EMT, Estonia)
6. Popular LBS apps in smartphones
• Navigation
TomTom, Garmin, Here maps etc. Also Waze, Google
• Offline maps
Skobbler, MapsWithMe
• Business around you
Reviews, events, classifieds etc
Yelp, Eventful, OpenTable etc
• Transit and traffic info
US, West Europe
• Speed camera warnings
Trapster, Mobi
• Games: Foursquare
• Sports trackers: RunKeeper, Endomondo
• Taxi ordering
Uhail
8. Hard problems
• GPS takes battery
• GPS coverage and accuracy is bad
No indoors
No Augmented Reality
• Maps are limited
No indoors
No walking level
• Real user needs are hard to estimate
9. Successful apps
• Local is local
• Content is the king
But expensive
• Understand topic
pymwymi
• There is no killer app
but you can create killer service
• Location is just a technology
Not the core differentiator, or business
11. GIS definition
• Geographic
With geographical dimension
• Information
• System
Software, servers, computers
• Wikipedia:
a system designed to capture, store, manipulate,
analyze, manage, and present all types of
geographically referenced data.
In the simplest terms, GIS is the merging of
cartography, statistical analysis, and database
technology
12. Traditional GIS
• Started in early 1970’ies
• Key companies, drivers
ESRI, Intergraph, MapInfo (Pitney Bowes), AutoDesk, Oracle
Universities: UMN etc
• Key focus
Desktop-GIS – special GIS tools
Servers, client-server model
• Expensive, specialized, heavy
• Recent developments (from late 90ies)
OGC standards: WMS, WFS, GML etc
Cloud-based, mobile
13. Neo-geography
• Web/Internet-based
Easy to use Cloud services
• Cool startups
GeoIQ, CartoDB, Boundless (OpenGeo), MapBox, GISCloud
• Free commercial tools
Google: Maps, Earth, SketchUp, FusionTables etc
Yahoo, Microsoft Bing, MapQuest
• Open source software
OSGeo.org: server, desktop, web
• Open sourced data
OpenStreetMap, open data
14. Internet trends
• HTML5 stack
Javascript, Node.js
CartoCSS
GeoJSON, TopoJSON
Python
Go
• Github
GeoGIT
15. Mobile LBS future trends
• Augmented Reality
Issue: mobile sensors and UI (glasses)
Needs powerful image processing
• 3D
3D earth (2.5D)
Buildings, textures etc – see Apple iOs Maps or Nutiteq
• 360-degree view
Issue: bandwidth
• Walking/local/indoor maps
Issue: content update is expensive
No standard indoor positioning
• Your ideas !
17. Why special approach
• Data is quite complex
Two-dimensional (or 3D, 4D)
Complex relations
Nice visualization is processing-hungry
• Base maps
Big datasets, different features
• Specific map data
Dynamic, can be big etc
18. A lot of data in a single screen
Type – 4 bytes
Name – 100 bytes
People – 4 bytes
Checkins – 4 bytes
Point on map – 16 bytes
Base map – 32+ KB
27 relations
205 ways (lines)
1920 points (x 16 b)
19. Geo basics
• Data models
vector
raster
other
• Coordinates
Projections, coordinate systems
20. Data models
• Raster
PNG for maps, lossless
JPG for aerials
GeoTIFF, coverages
Key parameters: bitmap resolution, size, channels
• Vector
Base objects: points, lines, polygons
Collections: multi-polygon, multi-line, multi-point
Attributes (fields): text/boolean/numeric/binary etc
Texts on map - labels from attributes
Layer – same as „table“ in DB
Special cases: topological models, graphs
22. Other data models
• Elevation models
DEM – Digital Elevation Model
TIN - triangulated irregular network
• 3D worlds
Collada, X3D
Google Earth Warehouse
• Point clouds
Lidar – laser measurements
30. Typical vector data operations
• Display map
Request data for bounding box (BBOX) or tiles
Reprojection (if needed)
Show set of layers
Style data – colors, symbols etc
Different map zooms have different data
• Geocoding – address to coordinates
• Reverse-geocoding
• Find nearest neighbour(s)
• Find objects in radius (buffer)
• Calculate distance between objects
• Find Point in area (polygon)
• Routing – find optimal path in graph
• Clustering - show big datasets on map
31. Common GIS file formats
• Shapefile (ESRI) – most common
4-5 files per layer: .shp, .dbf etc
One geometry type per layer allowed
No style information, pure geometry
Optional: projection file .prj, spatial index, charset
• KML (Google, open standard)
Vector data, includes styles
Special data types: 3D data (Collada), linked data, visual coverages
Can have only WGS84 coordinates
Can be KMZ – zipped file
• Other formats
SpatiaLite: vector and raster data. Any projection, no styles.
GeoJSON and TopoJSON – web/Javascript-friendly
Text files (CSV) with coordinates or addresses
Every commercial GIS has own format(s)
Free converter: http://www.gdal.org/ogr/ogr_formats.html
32. Spatial SQL database basics
• Special column data types(s):
Geometry, Point, Polygon ...
• Geographical indexing
Usually R-Tree, based on object bounds
• Geographical functions:
Manipulations, relations, queries etc
• Metadata table:
Defines coordinate system, data type for every
Geometry column
38. Coordinate systems
• Geographical – spherical
Units: Latitude and Longitude
Based on an ellipsoid, e.g. WGS-84
Datums, also WGS84 for GPS
DMS for display, decimal degrees for programming
• Projected - cartesian
Units: usually meters (can be km, miles)
Hundreds of named projections, mostly for local
regions
Reduce distortions: keep angles, distances, areas
equal
41. Different projections
• The Globe Applet
http://www.jhlabs.com/java/maps/proj/
• Check out some
Oblique Mercator, Cassini, Rectangular
Polyconic
• Common in real life
Plate Carre, Mercator, Spherical Mercator,
UTM, Lambert Conformal Conic (in L-EST)
42. Short and long projection description
EPSG codes: 4-5 digit numbers
• EPSG:4326 – WGS84
• EPSG:3301 – Estonian system
• EPSG:3587 – „Google web
Mercator“
Was also EPSG:900913
<EPSG:3301>
PROJCS["Estonian Coordinate System of 1997",
GEOGCS["EST97",
DATUM["Estonia_1997",
SPHEROID["GRS 1980",6378137,298.257222101,
AUTHORITY["EPSG","7019"]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY["EPSG","6180"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4180"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Lambert_Conformal_Conic_2SP"],
PARAMETER["standard_parallel_1",59.33333333333334],
PARAMETER["standard_parallel_2",58],
PARAMETER["latitude_of_origin",57.51755393055556],
PARAMETER["central_meridian",24],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",6375000],
AUTHORITY["EPSG","3301"],
AXIS["Y",EAST],
AXIS["X",NORTH]]
46. Web maps
• Google Maps
Javascript, Static APIs, Earth 3D
Geocoding and Directions (routing) services
Mobile API: Android
• Bing Maps
Web, Mobile API (WP7, iPhone)
• Here (ex Nokia Ovi / Navteq) Maps
Web, Mobile (Qt, J2ME)
• Apple Maps – iOs only
47. Web map restrictions
• Technical restrictions
Limited styling options
Limited to provided API-s, feature limits
Can’t get map data, or even images
Some mobile platforms not served at all
• Commercial limits
Some services (e.g. Navigation) require special
license
Advertising is added
48. Commercial map data
• Global vendors
Vector: Here (Navteq/Nokia), TeleAtlas (TomTom),
AND
Aerial/Satellite: DigitalGlobe, Blom ASA ...
• Local vendors
Regio, Maa-amet
In almost every country, quite detailed
• Specifics
Technically quite flexible
Usually quite expensive
49. OpenStreetMap (OSM)
• Free and open data
Vector data in 2D
Streets, roads, buildings, amenities etc
• A lot of services
Map images (tiles), geocoders, routers etc
Special views: opencyclemap, openpistemap etc
• Everyone can improve the map
www.openstreetmap.org
www.maakaart.ee – in Estonian
53. OSM advantages
• Free and open to use
No advertising, restrictions
• Vector data access
Custom styles for mapping
Own filters of data on map (layers)
Interactive data overlays (POI layers)
Advanced services: routing, search, analysis, ...
• Fast and easy updates
Find error – go fix it yourself!
Note: follow community guidelines
55. Main OGC standards
• WMS – Web Mapping Service
Send coordinates in URL, get map image
• WFS – Web Feature Service
Send coordinates in URL, get vector data as GML
WFS-T – enables writing to server
• GML – Geography Markup Language
XML-based
Specific schemas depending on application
• TMS – Tiled Map Service
Get 256x256-pixel map images for x, y, zoom
• Others
GeoRSS – RSS with geotags
Geo EXIF – GPS tags for digital photos
57. Free GIS tools
• Desktop tools – mapping, analysis, processing
Quantum GIS (QGIS)
uDig, OpenJUMP, gvSIG
GRASS, R – analysis
Google Earth - view/create KML
Trimble SketchUp – create 3D models
• Databases
Data sharing/storage
Analytical queries, eg. count points in regions
PostGIS – Postgres add-on.
Pgrouting
Spatialite – SQLite extension
• Processing
GDAL/OGR – raster and vector library, command-line converters
58. Free GIS tools for developers
• JTS
Java Topology Suite, ports in C (GEOS) etc
Lot of complex algorithms, geometries, graphs,
geographical indexes
• Proj.4
C-based, has few ports
Hundreds of predefined projections
• SpatiaLite
SQLite extension, for files
Also some raster features
• PostGIS
Postgres SQL server extension for vector
Raster features in next version
60. Free GeoWebServices
• CartoDB.com
Hosted PostGIS servers
• GISCloud.com
Also server-based editing is possible
Not very mature
• OpenStreetMap
Only for community-created data
Content requirements: verifyable objects etc
• Github
GeoJSON and TopoJSON support
geojson.io editor service
• Google Fusion Tables
General data table API service
Includes basic geo-features
61. Build your own geodatabase
• When you need own server:
Special requirements
Cannot customize readymade servers
Specific use cases: user permissions etc
• Using OSGeo tools
Database: PostGIS
Web maps: eg MapServer
Client tools: Geomajas, Leaflet
Bundle: OpenGeo Suite by Boundless, MS4W
• Using OSM toolkit
Web maps: PostGIS + Mapnik
API/data management: Rails_port (ruby), Postgres
Client-side modification: JOSM, ID etc
63. General model
• Server-side
Google, Bing, OpenStreetMap etc etc
Map content is „already there for free“
Tile-, WMS or vector based API
• Client-side
JavaScript, Flash, Silverlight, plug-in or HTML
API
Bundled with server: Google, Bing etc
OpenSource: Leaflet, OpenLayers 3
69. Tiles or WMS ?
• Tile advantages
Can be cached in client
Can be pre-rendered in server
Can be preloaded to client
Faster, suitable for high-traffic services
• WMS advantages
Supports selection of projection, layers, styles
Smaller number of requests
Suitable for high flexibility services (GIS apps)
71. Bad UX design
• Long alphabetical listings, no search
Bad example: RMK Android app
• Ignore geographical dimension
Mobile apps are used „out in a wild“
• Too many points on map
Use clusters – group points
Use filters – show minimal number
• Assume user GPS location
User is maybe planning to go there
• Require network connectivity
• Unoptimized user experience
LBS must be more robust than average mobile app (eg game)
It is probably not used just to kill some tome
72. Common technical mistakes
• Geographical data handled as non-geographical
Using place names / addresses to find nearest
Use just two float fields for geographical objects
Cannot be indexed, can’t use existing geotools
• Ignore GPS specifics
Location fix takes long time: 20 sec to 20 min
Fix is not always available: indoors etc
Check accuracy and availability
GPS kills the battery!
• Coordinate system errors
mix degrees/meters, projections
swap x/y
74. Location determination
• Plain GPS
Free satellite signal – requires 4 satellites min.
Accuracy: ~5 meters
Time to first fix (TFF) – up to 20 minutes
• AGPS
Assisted by network – TFF ~20-30 sec
Claimed to have also better sensibility
• Network-based locations
Immediate but less accurate
Mobile network cell (Cell-ID) – ~1 km error average, can be 10 km
Wifi location: ~100 m accuracy
Cell/Wifi databases: user-collected. Google, Skyhook, Apple,
Nokia, OpenCellID etc
• Hybrid method
First give quick inaccurate network location, then try GPS
Used in Android, iPhone
75. Location API in Android
• Location Provider
Selected automatically based on set requirements: Cell-id,WiFI or GPS
• Features
Listen for updates – most common
Last known location (cached) – not suggested
Proximity alerts – not guaranteed
• Best strategy depends on app
http://developer.android.com/guide/topics/location/obtaining-user-
location.html
76. Mobile mapping – main platforms
• Smartphone platforms
Most have GPS and good screen
• iPhone
Bundled Apple MapKit, Apple Maps.
Opensource: Route-me, WhirlyGlobe
• Android
Bundled Google MapView, Google Maps
Opensource tools: Osmand, Nutiteq, Mapsforge etc
• Windows Phone 7/8
Bing maps SDK, Nokia/Here Maps SDK
77. Mobile mapping – other platforms
• GPS : not guaranteed
• BlackBerry Java
BB Maps, Nutiteq SDK
• Nokia Asha (S40)
Nokia Maps SDK, Nutiteq
• Samsung Bada
deCarta SDK
78. Mapping SDKs on Android
• Raster-based
Google Maps API – no offline, routing, license limits
Nutiteq 3D Maps SDK – offline, 3D features
OSMDroid – LGPL, Android-specific
• Vector-based
Mapsforge – GPL, only offline , nice rendering
Droyd SDK – also navigation, only offline
• 3D Earth solutions
Glob3 Mobile – in development, BSD license
• HTML5
OpenWebGlobe – WebGL based 3D earth
79. Typical geotasks in Android
• Display map
MapView API – interactive map: Google Maps, 2D, online
Add clickable points to map (annotations)
Add overlays (rasters)
Show user GPS location
• Geocoding
android.location.Geocoder API, online
• Reverse-geocoding
android.location.Geocoder getFromLocation()
• Find nearest neighbour(s)
• Find objects in radius (buffer)
Depends on data source
• Calculate distance between objects
Location.distanceTo() method
• Find Point in area (and other georelations)
Spatial-enabled GIS engine: PostGIS in server or Spatialite in phone
• Routing – find optimal path in graph
Google online API, other on-line routing engines
Spatialite routing, in small area
• Point Clustering
https://github.com/weakwire/AndroidMapCluster
80. Other useful free tools for mobile
• Spatialite = SQLite + GEO
Big datasets (8M objects DB)
Spatial operators, e.g. distance, nearest ...
Requires NDK/JNI. Prebuilt binary in
nutiteq.github.io
• JTS – Java Topology Suite
Java-level spatial graphs, operators, geometries
• Free GIS tools – processing/preview data
See above
81. Nutiteq 3D Android Maps SDK
• Mapping
Number of pre-defined map sources, OpenStreetMap default
Custom map sources, you can define own tile API
On-line and off-line mapping (prepackaged, stored, cached)
• 3D support
2.5D views
3D models: KMZ/OpenCollada
• Other features
Points of Interest (POI) on map (layers, individual places)
Polygons and lines on map
Raster map overlays
Vector layers
82. Do it yourself speed camera warning
• Speed camera alerts on Android
Shows map, gets GPS location, reads data, plays alerts
• Tools
Nutiteq Mapping SDK – nutiteq.github.com/hellomap3d
• Content
POIPlaza.com data file
OSM maps (online or offline)
Alarm audio mp3 file
• Bonus points
Add a 3D driving car from Monster Milktruck as your
location
Speeding alerts from current speed