Lab10

Similar documents
Lab7

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Week3

쉽게 풀어쓴 C 프로그래밍

周 縁 の 文 化 交 渉 学 シリーズ 3 陵 墓 からみた 東 アジア 諸 国 の 位 相 朝 鮮 王 陵 とその 周 縁 머리말 조선시대에 왕(비)이 사망하면 그 육신은 땅에 묻어 陵 을 조성하고, 삼년상이 지나면 그 혼을 국가 사당인 종묘에 모셔 놓았다. 양자는 모두 국가의

04_오픈지엘API.key

Building Mobile AR Web Applications in HTML5 - Google IO 2012

Lab1

Modern Javascript


AMP는 어떻게 빠른 성능을 내나.key

Javascript.pages

Week13

2016 가을학기연구참여보고서 Visualizing tool of Route Optimization with Google Maps API ~ 12 (15주) Logistics Lab. 지도교수님김병인멘토김현준참여학생조혜민

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Orcad Capture 9.x

프로덕트 아이덴티티의 유형별 특성에 관한 연구

¿ÀǼҽº°¡À̵å1 -new

PowerPoint 프레젠테이션

untitled

¸Þ´º¾ó-ÀÛ¾÷5

<A4B5A4C4A4B5A4BFA4B7A4B7A4D1A4A9A4B7A4C5A4A4A4D1A4A4A4BEA4D3A4B1A4B7A4C7A4BDA4D1A4A4A4A7A4C4A4B7A4D3A4BCA4C E706466>

No Slide Title

<C6EDC1FD2DC1A634C8B820B1B9B0A1C5EBB0E8B9E6B9FDB7D020BDC9C6F7C1F6BEF620BAB8B5B5C0DAB7E12E687770>

Smart Power Scope Release Informations.pages

untitled

09오충원(613~623)

쉽게 풀어쓴 C 프로그래밍

리포트_23.PDF

I I-1 I-2 I-3 I-4 I-5 I-6 GIS II II-1 II-2 II-3 III III-1 III-2 III-3 III-4 III-5 III-6 IV GIS IV-1 IV-2 (Complement) IV-3 IV-4 V References * 2012.

BEef 사용법.pages

untitled

ȲÁø°æ

untitled

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

3장

Week8-Extra

HTML5

New Accord 3.5 V6 _ Modern Steel Metallic

Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전

, Next Step of Hangul font As an Example of San Serif Han San Seok Geum ho, Jang Sooyoung. IT.. Noto Sans(Adobe, Han-San). IT...., Muti Script, Multi

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: * Suggestions of Ways

1

³»Áö¼öÁ¤

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록

Dialog Box 실행파일을 Web에 포함시키는 방법

DocsPin_Korean.pages

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

untitled

05-class.key

02이용배(239~253)ok

UNIST_교원 홈페이지 관리자_Manual_V1.0

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

B _01_M_Korea.indb

PowerPoint 프레젠테이션

44-4대지.07이영희532~

Digital Representation of Geographic Data

*º¹ÁöÁöµµµµÅ¥-¸Ô2Ä)

C H A P T E R 2


자바로

<C7D1B1B9C4DCC5D9C3F7C1F8C8EFBFF82D C4DCC5D9C3F7BBEABEF7B9E9BCAD5FB3BBC1F E687770>

공공데이터개방기술동향

playnode.key

1

MPLAB C18 C

1

WEB HTML CSS Overview

Microsoft Word - 김완석.doc

김기남_ATDC2016_160620_[키노트].key

<4D F736F F D20C1A4B3E2BFACC0E5BFA120B4EBBAF1C7D120C0CEB7C220BFEEBFB520C0FCB7AB5F >

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

HTML5-³¹Àå¿ë.PDF

Week6

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F D C1A6BEC8BCAD20C0DBBCBAB0FA20C7C1B8AEC1A8C5D7C0CCBCC720B1E2B9FD2E646F63>

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

JavaPrintingModel2_JunoYoon.PDF

<333820B1E8C8AFBFEB2D5A B8A620C0CCBFEBC7D120BDC7BFDC20C0A7C4A1C3DFC1A42E687770>

B _02-M_Korean.indd

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

PowerPoint 프레젠테이션

BSC Discussion 1

이 논문은 2005년 노동부의 ‘해외진출기업의 인력관리 및 활용 지원방안’에 관한 학술연구용역사업의 일환으로 연구되었음

CAD 화면상에 동그란 원형 도형이 생성되었습니다. 화면상에 나타난 원형은 반지름 500인 도형입니다. 하지만 반지름이 500이라는 것은 작도자만 알고 있는 사실입니다. 반지름이 500이라는 것을 클라이언트와 작업자들에게 알려주기 위 해서는 반드시 치수가 필요하겠죠?

*DNX_DDX7_M_KOR.indb

성능 감성 감성요구곡선 평균사용자가만족하는수준 성능요구곡선 성능보다감성가치에대한니즈가증대 시간 - 1 -

Mentor_PCB설계입문

AL181N,ÇѱÛ,Ù+An+pip[D¿ë


Transcription:

Lab 10: Map Visualization 2015 Fall human-computer interaction + design lab. Joonhwan Lee

Map Visualization

Shape Shape (.shp): ESRI shp http://sgis.kostat.go.kr/html/index.html 3

d3.js SVG, GeoJSON, TopoJSON GeoJSON type, features features: multipolygon TopoJSON GeoJSON arc GeoJSON 70% 4

SHP to TopoJSON (or GeoJSON) QGIS 5

Open Source GIS data repositories https://github.com/southkorea https://github.com/southkorea/seoul-maps https://github.com/southkorea/southkorea-maps 6

(TopoJSON) 7

Lab1: TopoJSON Step1: Setup index.html <script src="http://d3js.org/ topojson.v1.min.js" charset="utf-8"></script> mycode.js var width = 800, height = 700 var svg = d3.select("#map").append("svg").attr("width", width).attr("height", height) var seoul = svg.append("g").attr("id", "seoul") 8

Lab1: TopoJSON Step2: Projection var projection = d3.geo.mercator().center([126.9895, 37.5651]).scale(100000).translate([width/2, height/2]) var path = d3.geo.path().projection(projection) 9

d3.js Projection Geo Projections https://github.com/mbostock/d3/wiki/geo-projections 10

Lab1: TopoJSON Step3: Data Loading d3.json("map/ seoul_municipalities_topo_simple.json", function(error, data) { console.log(data) var features = topojson.feature(data, data.objects.seoul_municipalities_geo).features console.log(features) }) 11

Lab1: TopoJSON console.log(data) 12

Lab1: TopoJSON console.log(features) 13

Lab1: TopoJSON Step4: Path seoul.selectall("path").data(features).enter().append("path").attr("class", function(d) { return "municipality c" + d.properties.code }).attr("d", path) 14

15

Lab1: TopoJSON Step5: Label seoul.selectall("text").data(features).enter().append("text").attr("class", "municipality-label").attr("transform", function(d) { return "translate(" +path.centroid(d)+ ")" }).attr("dy", ".35em").text(function(d) { return d.properties.name }) 16

Lab1: TopoJSON Step6: Styling.municipality { fill: silver; stroke: #fff; }.municipality-label { fill: white; text-anchor: middle; font: bold 10px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; } 17

Lab 2: Zoomable Map Zoom 18

Lab 2: Zoomable Map Idea path center (switch) path centered centered transform scale centered scale 19

Lab 2: Zoomable Map Step1: path seoul.selectall("path").data(features)....attr("d", path).on("click", clicked) 20

Lab 2: Zoomable Map Step2: clicked(d) method function clicked(d) { var x, y, k if (d && centered!= d) { var centroid = path.centroid(d) x = centroid[0] y = centroid[1] k = 4 centered = d } else { x = width / 2 y = height / 2 k = 1 centered = null } 21

Lab 2: Zoomable Map Step2: clicked(d) method function clicked(d) { var x, y, k if (d && centered!= d) { var centroid = path.centroid(d) x = centroid[0] y = centroid[1] k = 4 centered = d } else { x = width / 2 y = height / 2 k = 1 centered = null } path centered 21

Lab 2: Zoomable Map Step2: clicked(d) method function clicked(d) { var x, y, k if (d && centered!= d) { var centroid = path.centroid(d) x = centroid[0] y = centroid[1] k = 4 centered = d } else { x = width / 2 y = height / 2 k = 1 centered = null } path centered centered 21

Lab 2: Zoomable Map Step2: clicked(d) method function clicked(d) { seoul.selectall("path").classed("active", centered && function(d){ return d == centered }) seoul.transition().duration(750).attr("transform", "translate(" + width/2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")") 22

Lab 2: Zoomable Map Step2: clicked(d) method path active function clicked(d) { seoul.selectall("path").classed("active", centered && function(d){ return d == centered }) seoul.transition().duration(750).attr("transform", "translate(" + width/2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")") 22

Lab 2: Zoomable Map Step2: clicked(d) method path active function clicked(d) { seoul.selectall("path").classed("active", centered && function(d){ return d == centered }) zoom to path (x, y) seoul.transition().duration(750).attr("transform", "translate(" + width/2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")") 22

Lab 2: Zoomable Map Step3: Places d3.csv("data/places.csv", function(error, data) { places.selectall("circle")....attr("cx", function(d) { return projection([d.lon, d.lat])[0] }).attr("cy", function(d) { return projection([d.lon, d.lat])[1]... }) 23

Lab 2: Zoomable Map Step4: Places zoom places.transition().duration(750).attr("transform", "translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")") 24

Lab 2: Zoomable Map Step5: Places places.selectall("circle").classed("show", centered && k == 4) places.selectall("text").classed("show", centered && k == 4) 25

Lab3: Choropleth Map Choropleth Map http://bl.ocks.org/mbostock/4060606 Combine two data use d3 queue library https://github.com/mbostock/queue 26

Lab3: Choropleth Map Step1: Combine data var popbyname = d3.map() queue().defer(d3.json, "map/ seoul_municipalities_topo_simple.json").defer(d3.csv, "data/fire.csv", function(d) { popbyname.set(d.name, +d.value) }).await(ready) 27

Lab3: Choropleth Map Step2: color scale var colorscale = d3.scale.quantize().domain([0, 500]).range(d3.range(9).map(function(i) { return "p" + i })) *range 0 p8 28

Lab3: Choropleth Map Step3: path seoul.selectall("path").data(features).enter().append("path").attr("class", function(d) { return "municipality " + colorscale(popbyname.get(d.properties.name)) }).attr("d", path).attr("id", function(d) { return d.properties.name }) 29

Lab3: Choropleth Map Step3: path seoul.selectall("path").data(features).enter().append("path").attr("class", function(d) { class colorscale (p0-p8) return "municipality " + colorscale(popbyname.get(d.properties.name)) }).attr("d", path).attr("id", function(d) { return d.properties.name }) 29

Lab3: Choropleth Map Step4: Styling.municipality.p0 { fill: #ffffd9; }.municipality.p1 { fill: #edf8b1; }... 30

Lab4: Google Map + d3.js js api d3 google api: d3.js: overlay 31

Lab4: Google Map + d3.js Step1: Google Map API index.html <script type="text/javascript" src="http://maps.google.com/maps/api/js? sensor=true"></script> 32

Lab4: Google Map + d3.js Step2: var map = new google.maps.map( d3.select("#map").node(), { zoom: 15, center: new google.maps.latlng(37.463842, 126.949335), maptypeid: google.maps.maptypeid.roadmap } ) 33

Lab4: Google Map + d3.js Step3: Overlay map var overlay = new google.maps.overlayview() overlay overlay.onadd = function() { } overlay overlay.draw = function() {...} function transform(d) {...} overlay.draw overlay.setmap(map) map overlay 34

Assignment 7: Map Visualization : 11/23 ( )

Assignment 7: Map Visualization : Map Visualization : (11/23) html index.html, ( : x) zip 36

Questions...?