• Save
Mobile LBS
Upcoming SlideShare
Loading in...5
×
 

Mobile LBS

on

  • 894 views

 

Statistics

Views

Total Views
894
Views on SlideShare
885
Embed Views
9

Actions

Likes
3
Downloads
0
Comments
0

1 Embed 9

http://notebux.wordpress.com 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mobile LBS Mobile LBS Presentation Transcript

  • MOBILE LOCATION-BASED APPS Lecture in University of Tartu Jaak Laineste, 30.09.2013
  • LOCATION-BASED SERVICE OVERVIEW Part 1
  • 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
  • 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
  • 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)
  • 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
  • Less successful applications • Friend tracking • Social: Facebook checkins • Track & Publish my location See OpenPaths, Glympse • Location-based advertising • Location-based alerts • Augmented reality (with maps)
  • 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
  • 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
  • GIS INTRODUCTION Part 2
  • 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
  • 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
  • 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
  • Internet trends • HTML5 stack Javascript, Node.js CartoCSS GeoJSON, TopoJSON Python Go • Github GeoGIT
  • 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 !
  • GIS TECHNOLOGY AND DEVELOPMENT
  • 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
  • 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)
  • Geo basics • Data models vector raster other • Coordinates Projections, coordinate systems
  • 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
  • GIS Layers
  • 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
  • Hillshade from DEM
  • TIN
  • Point cloud
  • 3D model
  • GIS layers in practise • One base layer Background map: Google, OpenStreetMap etc Raster-based • Overlay layer(s) Points of Interest, markers GPS location – dynamic info Lines, Polygons Clustered points
  • Demo • Quantum GIS with vector in action • Open vector data layers • Styling map
  • QGIS with OSM data
  • 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
  • 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
  • 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
  • Geometry primitives in WKT (2D)
  • Multipart geometries in WKT (2D)
  • PostGIS sample: spatial query
  • PostGIS example: spatial query
  • PROJECTIONS
  • 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
  • Geographical coordinate space
  • Cartesian (projected) coordinate space
  • 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)
  • 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]]
  • Coordinates as QR-Code • http://zxing.appspot.com/generator/ „GEO:26.7144,58.3784“
  • MAP DATA SOURCES
  • 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
  • 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
  • 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
  • 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
  • ID – web-based OSM editor
  • JOSM – OSM main editor
  • 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
  • GIS TOOLS
  • 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
  • OCG
  • 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
  • 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
  • Free GIS Servers • Web Mapping GeoServer: WMS, WFS, WCS, caching MapServer: WMS, TMS, WFS Mapnik: TMS, TileMill: good for on-line styling, MBTiles packages • Web Processing Services Degree etc • Developer toolkits Leflet - javascript OpenLayers 3 – Javascript GeoMajas – Java-based MapFish – Python-based • Cooperation project: www.osgeo.org
  • 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
  • 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
  • WEB MAPPING DEVELOPENT IN SHORT
  • 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
  • Tiled map server – Bing sample
  • Web mapping client API - Leaflet // create a map in the "map" div, set the view to a given place and zoom var map = L.map('map').setView([51.505, -0.09], 13); // add an OpenStreetMap tile layer L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); // add a marker in the given location, attach some popup content to it and open the popup L.marker([51.5, -0.09]).addTo(map) .bindPopup('A pretty CSS3 popup. <br> Easily customizable.') .openPopup(); See more from http://leafletjs.com/index.html
  • Web mapping server APIs • WMS – view-based http://kaart.maaamet.ee/wm s/alus-geo ?SERVICE=WMS &VERSION=1.1.1 &REQUEST=GetMap &LAYERS=HALDUSPIIRID,BAAS KAART &STYLES=default &SRS=EPSG:4326 &BBOX=26.7,58.3,26.8,58.4 &WIDTH=600 &HEIGHT=600 &FORMAT=image/png& • TMS – tile-based http://tile.openstreetmap.org /13/4702/2451.png /13/4703/2451.png /13/4704/2451.png /13/4702/2452.png /13/4703/2452.png /13/4704/2452.png ...
  • WMS image response 26.7E,58.3N 26.8E,58.4N 600px 600px
  • OSM Tile-based map: zoom 13 4703 4704 2450 2451 4705 Y X
  • 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)
  • MOBILE LBS APP DESIGN TIPS
  • 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
  • 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
  • ANDROID APPS WITH LOCATION
  • 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
  • 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
  • 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
  • Mobile mapping – other platforms • GPS : not guaranteed • BlackBerry Java BB Maps, Nutiteq SDK • Nokia Asha (S40) Nokia Maps SDK, Nutiteq • Samsung Bada deCarta SDK
  • 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
  • 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
  • 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
  • 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
  • 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
  • Thank you! Jaak Laineste CEO, Nutiteq www.nutiteq.com jaak@nutiteq.com