1

20150330 - victor gau - maps

Embed Size (px)

Citation preview

Page 1: 20150330 - victor gau - maps

Creating Map Applications using Python

Victor Gau20150330

Page 2: 20150330 - victor gau - maps

Outline

● Static Map Applications● Interactive Map Applications● Real Time Google Earth Applications

Page 3: 20150330 - victor gau - maps

Python development web server

python -m CGIHTTPServer

Page 4: 20150330 - victor gau - maps

Static Map Applications

Page 5: 20150330 - victor gau - maps

Google Static Maps API

● Google Static Maps API 可讓您在自己的網頁中嵌 入 Google 地圖,完全不需使用 JavaScript 或任

何動態網頁載入。● Google 靜態地圖服務會根據透過標準 HTTP 要求傳送的網址參數建立您的地圖,並將該地圖以圖片

的形式傳回,讓您可以顯示在網頁上。

● https://developers.google.com/maps/documentation/staticmaps/

Page 6: 20150330 - victor gau - maps

Google Static Maps API

● http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false

Page 7: 20150330 - victor gau - maps

Google Static Maps API

Page 8: 20150330 - victor gau - maps

DEMO

Page 9: 20150330 - victor gau - maps

Interactive Map Applications

Page 10: 20150330 - victor gau - maps

Folium

● Mapping using Leaflet.js library.● Built-in tilesets from OpenStreetMap,

Mapbox, and Stamen● Supports custom tilesets with Mapbox or

Cloudmade API keys.● To install => “pip install folium”● https://folium.readthedocs.org/en/latest/

Page 11: 20150330 - victor gau - maps

Base Maps

import folium

map = folium.Map(location=[45.5236, -122.6750])

map.create_map(path='osm.html')

Page 12: 20150330 - victor gau - maps

Markers

● Simple Markers● Circle Markers● Polygon Markers

http://folium.readthedocs.org/en/latest/#markers

Page 13: 20150330 - victor gau - maps

Tilesets

● ‘OpenStreetMap’● ‘Mapbox Bright’ (Limited levels of zoom)● ‘Mapbox Control Room’ (Limited levels of zoom)● ‘Stamen Terrain’● ‘Stamen Toner’

http://folium.readthedocs.org/en/latest/#tilesets

Page 14: 20150330 - victor gau - maps

DEMO

Page 15: 20150330 - victor gau - maps

DEMO

Page 16: 20150330 - victor gau - maps

Real Time Google Earth Applications

Page 17: 20150330 - victor gau - maps

Google Earth

https://www.google.com/earth/

Page 18: 20150330 - victor gau - maps

KML

https://developers.google.com/kml/documentation/

https://developers.google.com/kml/documentation/kmlreference

Page 19: 20150330 - victor gau - maps

<LookAt> in KML

https://developers.google.com/kml/documentation/cameras

Page 20: 20150330 - victor gau - maps

NetworkLink Concept

● A network link contains a <Link> element with an <href> (a hypertext reference) that loads a file.

● The <href> can be a local file specification or an absolute URL. Despite the name, a <NetworkLink> does not necessarily load files from the network.

Page 21: 20150330 - victor gau - maps

KML Interactive Sampler

Page 22: 20150330 - victor gau - maps

DEMO

Page 23: 20150330 - victor gau - maps

Google Earth API (Deprecated)

Page 24: 20150330 - victor gau - maps

NASA WorldWind

Page 25: 20150330 - victor gau - maps

Cesium.js

http://cesiumjs.org/

Page 26: 20150330 - victor gau - maps

Thank You!

Page 27: 20150330 - victor gau - maps

Flask

● python micro web framework● pip install flask● http://flask.pocoo.org/● http://flask.pocoo.org/docs/0.10/quickstart/#quickstart

Page 28: 20150330 - victor gau - maps

Flask Hello World

from flask import Flask

app = Flask(__name__)

@app.route("/")

def hello():

return "Hello World!"

if __name__ == "__main__":

app.run()

Page 29: 20150330 - victor gau - maps

Rendering Template

from flask import render_template

@app.route('/hello/')

@app.route('/hello/<name>')

def hello(name=None):

return render_template('hello.html', name=name)

<!doctype html>

<title>Hello from Flask</title>

{% if name %}

<h1>Hello {{ name }}!</h1>

{% else %}

<h1>Hello World!</h1>

{% endif %}

Page 30: 20150330 - victor gau - maps

jinja2

● template engine● http://jinja.pocoo.org/docs/dev/● {% block content %}, {% endblock %}● {% extends “index.html” %}● {{ variable }}● {{ variable | filters }}● {# comments #}