geog 319/658 november 24, 2014. planning data & metadata geography programming feedback, repeat...

44
GEOG 319/658 November 24, 2014 * Web Maps with Leaflet

Upload: godfrey-quinn

Post on 18-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

GEOG 319/658

November 24, 2014

*Web Maps with Leaflet

Page 2: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Steps

•Planning

•Data & Metadata

•Geography

•Programming

•Feedback, repeat as needed

Page 3: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Planning

Start by outlining the project:

•What is the purpose of the map?

•Who are the intended users?

•What features are needed?

Page 4: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Data & Metadata

•Gather data

•Gather or produce metadata

•Design and create MySQL tables

Page 5: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Geography

•Define geographic scope/scale of map

•Determine required map layers

•Collect boundaries or XY data

•Convert boundary data, as needed

Page 6: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Programming

•Write code

•Write more code

•Test

•Write more code

Page 7: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Specifics

Page 8: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

MySQL

Relational database with

•4 tables for data

•1 table for metadata

•1 table for boundaries

Page 9: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

MySQL

Social Characteristics (DP2)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC209

Economic Characteristics (DP3)

GEOIDGEOID2GEOLABELHC01_VC04…HC04_VC175

Housing Characteristics (DP4)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC199

Demographic Characteristics (DP5)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC98

Metadata

FileTypeVariableDescriptionUnitsdec_placesUniverseTopicDetail1…Detail4

Boundaries

GEOIDTXTGEOIDNUMNameINTPTLATINTPTLONCOORDINATESCOORDINATES2

Page 10: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

MySQL

Social Characteristics (DP2)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC209

Economic Characteristics (DP3)

GEOIDGEOID2GEOLABELHC01_VC04…HC04_VC175

Housing Characteristics (DP4)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC199

Demographic Characteristics (DP5)

GEOIDGEOID2GEOLABELHC01_VC03…HC04_VC98

Metadata

FileTypeVariableDescriptionUnitsdec_placesUniverseTopicDetail1…Detail4

Boundaries

GEOIDTXTGEOIDNUMNameINTPTLATINTPTLONCOORDINATESCOORDINATES2

Page 11: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

SQL

SELECT *

FROM ACS12_METADATA

Returns all 2,035 rows and 12 columns in this table

Page 12: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

SQL

SELECT Description

FROM ACS12_METADATA

WHERE FILE="DP02" AND variable="HC01_VC03";

Page 13: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

SQL

SELECT a.namelsad, b.HC01_VC03, c.*

FROM GeoJSON_Tracts AS a,

ACS12_5YR_DP02 AS b,

ACS12_METADATA AS c

WHERE b.geoid2=20209042002 AND b.geoid2=a.geoidnum AND c.variable="HC01_VC03" AND c.file="DP02"

Page 14: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Excel: friend or foe?

Page 15: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Excel: friend or foe?

Page 16: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

GeoJSON

GeoJSON is a format for communicating geographic data that includes some properties and pairs of coordinates.

A point can be simply represented as

[-104.99404, 39.75621]

Page 17: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

GeoJSON

A line can be represented as

[

[-105, 40],

[-110, 45],

[-115, 55]

]

Page 18: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

GeoJSON

A polygon can be represented as

[[

[-104.05, 48.99],

[-97.22, 48.98],

[-96.58, 45.94],

[-104.03, 45.94],

[-104.05, 48.99]

]]

Page 19: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

GeoJSON

http://ogre.adc4gis.com/

Page 20: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Leaflet

Page 21: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Leaflet

Link to the Leaflet CSS

Page 22: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Leaflet

Link to the Leaflet JavaScript

Page 23: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Leaflet

Put a div element where you want the map on the page.

Page 24: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Leaflet

Start putting elements on you map.

Background tile

Point

Circle

Polygon

Popup Event

Set view and scale

Page 25: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

PHP

PHP works inside HTML and generates the page on the fly.

The simplest example is:

<html>

<body>

<? php echo “Hello World!”; ?>

</body>

</html>

Page 26: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

PHP

SAFETY PRECAUTION – if you allow users to enter anything, your application is open to hacking or malicious use. To help prevent misuse, escape potentially harmful characters and validate input.

Page 27: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

PHP & Leaflet

http://ipsr.ku.edu/ksdata/apps/leaflet.php

Page 28: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

PHP & Leaflet

http://ipsr.ku.edu/ksdata/apps/leaflet.php?lat=38.958426&lon=-95.251558

Page 29: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Putting it all together

•Connect to MySQL

•Run addslashes

•Check for and validate user input

•HTML/Javascript to set up page with Leaflet

•Query MySQL

•Use PHP to write Javascript for Leaflet based on query results

Page 30: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Connect to MySQL

Page 31: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Run addslashes (just in case)

Page 32: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Check for user input

Page 33: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Set up HTML

Page 34: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Start Javascript

Page 35: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Create classes

Page 36: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Set colors and popup label

Page 37: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Query data & boundaries

Page 38: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Write out Javascript

Page 39: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Write out Javascript

Page 40: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

var KCMOtracts =[{ "type": "Feature", "properties": { "STATEFP": "20",

"COUNTYFP": "059",

"TRACTCE": "954100",

"GEOIDTXT": "20059954100", "GEOID2":20059954100,

"GEOLABEL": "Census Tract 9541, Franklin County, Kansas",

"LABEL": "6,935 +/-312 ",

"VALUE": 6935}, "geometry": { "type": "Polygon", "coordinates": [ [ [ -95.056412, 38.738587 ], [ -95.056412, 38.737225 ], …, [ -95.056412, 38.738587 ] ] ] } }, … (repeat for 534 remaining Census Tracts)

Page 41: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Test

Page 42: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Other types of coordinates

Page 43: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Other types of coordinates

Page 44: GEOG 319/658 November 24, 2014. Planning Data & Metadata Geography Programming Feedback, repeat as needed

Questions?

Xan Wedel

Senior Research Data Engineer

Institute for Policy & Social Research

607 Blake Hall

[email protected]