Advanced Maps Techniques

Advanced Maps Techniques

Droidcon Paris 2015 Talk

2696500a913e29a26f38115f8ea56f71?s=128

Adrien Couque

November 09, 2015
Tweet

Transcript

  1. Advanced map techniques November 9 2015

  2. The Great Subway Map War of 1978

  3. Arriving in Berlin

  4. Types of maps Go from A to B Visualise information

  5. Types of maps “Ten years ago, maps were all about

    a navigation-use case. We looked at streets, addresses, POIs, maybe a little traffic. That's not true today. Today, it's about imagery, social media, real-time content, and much more. And three years from now, there will be only more data”—especially as location-based sensors increasingly populate the built environment. Marc Prioleau
  6. Getting Data

  7. Evaluating datasets

  8. ParisData: http://opendata.paris.fr/

  9. ParisData datasets • Museums 59 elements, 39 kB • Theaters

    88 elements, 38 kB • Schools 670 elements, 285 kB • Green spaces 942 elements, 5.9 MB • Addresses 145459 elements, 88.2 MB • ...
  10. Yelp & Foursquare

  11. OpenStreetMap

  12. Buildings

  13. Buildings

  14. Navitia.io: transportation data

  15. General Transit Feed Specification (GTFS) Standard format for public transportation

    data. Zip archive of CSV files: • agency.txt • stops.txt • routes.txt • trips.txt • stop_times.txt • calendar.txt Optional: fares, transfers, shapes (map)
  16. Be careful about the licenses Open Database License (ODbL): Constraints:

    attribute, share-alike (copyleft), keep open Used by: OpenStreetMap, ParisData, Stif Etalab / License ouverte: Constraints: attribute Used by: ParisData License NIO: Constraints: ? Used by: Navitia
  17. Putting data on the map

  18. AirMapView AirMapView Google Maps Google Maps Web MapBox

  19. Data representation: markers

  20. Data representation: clusters Good : Bad :

  21. Data representation: clusters ClusterManager clusterManager = new ClusterManager<MyItem>(this, getMap()); getMap().setOnCameraChangeListener(mClusterManager);

    InputStream inputStream = getResources().openRawResource(R.raw.radar_search); List<MyItem> items = new MyItemReader().read(inputStream); mClusterManager.addItems(items);
  22. Data representation: areas Standards: • GeoJSON (ParisData) • • •

    • WKT (Navitia : Stif) • KML (Google Earth)
  23. Data representation: GeoJSON try { GeoJsonLayer layer = new GeoJsonLayer(map,

    new JSONObject("...")); layer.addLayerToMap(); } catch (JSONException e) { e.printStackTrace(); }
  24. Point inside polygon

  25. Data representation: Heatmaps

  26. List<LatLng> coordinates = getCoordinatesList(); HeatmapTileProvider provider = new HeatmapTileProvider.Builder() .data(coordinates)

    .build(); TileOverlayOptions overlayOptions = new TileOverlayOptions().tileProvider(provider); getMap().addTileOverlay(overlayOptions);
  27. None
  28. Heatmap: Isochrone

  29. Representation for the amount of data A few Way too

    much Data points Markers Clusters Heatmaps
  30. Further reading AirMapView: https://github.com/airbnb/AirMapView Android map utils: https://github.com/googlemaps/android-maps-utils Sample: https://github.com/acq/AndroidMapSample

    Slides: http://speakerdeck.com/acq/advanced-map-techniques
  31. Thank you! @AdrienCouque

  32. The Great Subway Map War of 1978: http://www.theverge.com/2015/10/29/9630862/new-york-city- subway-maps-mta-google-gps Arriving

    in Berlin: http://umap.openstreetmap.fr/en/map/arriving-in-berlin-a-map-made-by-refugees- english-_42855 “Vrai plan du métro”: http://carto.metro.free.fr/documents/CartoMetroParis.v3.9.png Transport heatmap: http://vernier.frederic.free.fr/Infovis/horizonMaps/ Isochrone: http://www.atelier01.net/metro/paris/isochrone OpenStreetMap: http://wiki.openstreetmap.org/wiki/ RESOURCES