다양한 가격대의 서울시내 스시야를 시각화한 지도.
맛집 이름들이 겹치지 않게 하기 위해 forced layout을 적용했습니다.
- 데이터 수집: 수작업
- Author: Lucy Park
- License: Apache v2
다양한 가격대의 서울시내 스시야를 시각화한 지도.
맛집 이름들이 겹치지 않게 하기 위해 forced layout을 적용했습니다.
#! /usr/bin/python3 | |
# -*- coding: utf-8 -*- | |
import json | |
from lxml import html | |
import requests | |
MAPAPI = 'http://openapi.map.naver.com/api/geocode.php?key=2994b9957130f5a19b0aa0165bb9fd1e&encoding=utf-8&coord=LatLng&query=%s' | |
def get_latlon(query): | |
root = html.parse(MAPAPI % query) | |
lon, lat = root.xpath('//point/x/text()')[0], root.xpath('//point/y/text()')[0] | |
return (lat, lon) | |
def prep(item): | |
n, name = item[0].split(' ', 1) | |
lat, lon = get_latlon(item[3]) | |
return { | |
'num': n, 'name': name, | |
'lat': lat, 'lon': lon, | |
'description': item[1], | |
'phone': item[2], | |
'addr': item[3] | |
} | |
url = 'http://m.wikitree.co.kr/main/news_view.php?id=217101' | |
query = '서울시 서대문구 창천동 72-36' | |
r = requests.get(url) | |
root = html.document_fromstring(r.text) | |
string = '\n'.join(root.xpath('//div[@id="ct_size"]/div//text()')) | |
items = [] | |
for i in range(1, 21): | |
tmp = string.split('%s.' % i, 1) | |
string = tmp[1] | |
items.append([j.strip() for j in tmp[0].split('\n') if j and j!='\xa0']) | |
data = [prep(i[:4]) for i in items[1:]] | |
with open('places.json', 'w') as f: | |
json.dump(data, f) | |
with open('places2.csv', 'w') as f: | |
f.write('type,name,prince,lat,lon,url\n') | |
for d in data: | |
f.write('siksin,%(name)s,0,%(lat)s,%(lon)s,\n' % d) |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<style> | |
svg circle { | |
opacity: .5; | |
stroke: white; | |
} | |
svg circle:hover { | |
stroke: #333; | |
} | |
svg .axis line, svg .axis path { | |
fill: none; | |
stroke: #000; | |
shape-rendering: crispEdges; | |
} | |
svg .axis text { | |
font: 10px sans-serif; | |
} | |
svg .municipality { | |
fill: #efefef; | |
stroke: #fff; | |
} | |
svg .municipality-label { | |
fill: #bbb; | |
font-size: 12px; | |
font-weight: 300; | |
text-anchor: middle; | |
} | |
svg #map text { | |
color: #333; | |
font-size: 10px; | |
pointer-events: none; | |
text-anchor: middle; | |
} | |
svg #places text { | |
color: #777; | |
font: 10px sans-serif; | |
text-anchor: start; | |
} | |
#title { | |
position: absolute; | |
top: 10px; | |
left: 650px; | |
width: 300px; | |
font-family: sans-serif; | |
text-align: right; | |
} | |
#title p { | |
font-size: 10pt; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="title"> | |
<h2>서울시 스시야 기행</h2> | |
<p><a href="http://redfish.egloos.com">레드피쉬</a>, <a href="http://hsong.egloos.com">녹두장군</a> 등 유명 맛집블로거들이 추천하는 서울 시내 스시집! | |
점의 색은 스시야의 가격대를 나타내고, 점을 클릭하면 해당 스시야에 대한 소개글로 이동합니다. | |
하나씩 정복해봐요... >_<</p> | |
<p> | |
<a href="https://gist.github.com/e9t/85fcfb53db389696624f">Code</a> | |
by <a href="http://lucypark.kr">Lucy Park</a>. | |
<br> | |
<a href="http://opensource.org/licenses/Apache-2.0">Licensed with Apache 2.0</a> | |
</p> | |
</div> | |
<div id="chart"></div> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="http://d3js.org/queue.v1.min.js"></script> | |
<script src="http://d3js.org/topojson.v1.min.js"></script> | |
<script> | |
// set params | |
var width = 960, | |
height = 500; | |
var minColor = 'yellow', | |
maxColor = 'red'; | |
var minValue = 5, | |
maxValue = 35; // TODO: automate | |
var legendWidth = 15, | |
legendHeight = 150, | |
margin = { left: 40, top: 30 }; | |
// define color scale | |
var colorScale = d3.scale.linear() | |
.range([minColor, maxColor]) // or use hex values | |
.domain([minValue, maxValue]); | |
// define projection and path | |
var projection = d3.geo.mercator() | |
.center([126.9895, 37.5651]) | |
.scale(80000) | |
.translate([2*width/5, height/2]); | |
var path = d3.geo.path().projection(projection); | |
// add canvas | |
var svg = d3.select("#chart").append("svg") | |
.attr("width", width) | |
.attr("height", height); | |
var map = svg.append("g").attr("id", "map"), | |
points = svg.append("g").attr("id", "places"), | |
legend = svg.append("g").attr("id", "legend"); | |
// add legend for colors | |
var legendBar = legend.append("defs").append("linearGradient") | |
.attr("id", "gradient") | |
.attr("x1", "100%") | |
.attr("y1", "0%") | |
.attr("x2", "100%") | |
.attr("y2", "100%") | |
.attr("spreadMethod", "pad"); | |
legendBar.append("stop") | |
.attr("offset", "0%") | |
.attr("stop-color", maxColor) | |
.attr("stop-opacity", 1); | |
legendBar.append("stop") | |
.attr("offset", "100%") | |
.attr("stop-color", minColor) | |
.attr("stop-opacity", 1); | |
legend.append("rect") | |
.attr("width", legendWidth) | |
.attr("height", legendHeight) | |
.style("fill", "url(#gradient)") | |
.style("opacity", 0.5) | |
.attr("transform", "translate(" + margin.left + "," + margin.top + ")"); | |
var y = d3.scale.linear().range([legendHeight, 0]).domain([minValue, maxValue]); | |
var yAxis = d3.svg.axis().scale(y).orient("right"); | |
legend.append("g") | |
.attr("class", "axis") | |
.attr("transform", "translate(" + (legendWidth + margin.left) + "," + margin.top + ")") | |
.call(yAxis) | |
.append("text") | |
.attr("transform", "rotate(-90)") | |
.attr("y", 30) | |
.attr("dy", ".71em") | |
.style("text-anchor", "end") | |
.text("(단위: 만원)"); | |
// add map | |
d3.json("seoul_municipalities_topo_simple.json", function(error, data) { | |
var features = topojson.feature(data, data.objects.seoul_municipalities_geo).features; | |
map.selectAll('path') | |
.data(features) | |
.enter().append('path') | |
.attr('class', function(d) { console.log(); return 'municipality c' + d.properties.code }) | |
.attr('d', path); | |
map.selectAll('text') | |
.data(features) | |
.enter().append("text") | |
.attr("transform", function(d) { return "translate(" + path.centroid(d) + ")"; }) | |
.attr("dy", ".35em") | |
.attr("class", "municipality-label") | |
.text(function(d) { return d.properties.name; }) | |
}); | |
// add circles | |
d3.csv("places.csv", function(data) { | |
var point = points.selectAll("circle") | |
.data(data.filter(function(d) { return d.type==="sushi"; })) | |
.enter().append("a") | |
.attr("xlink:href", function(d) { return d.url }); | |
point.append("circle") | |
.attr("cx", function(d) { return projection([d.lon, d.lat])[0]; }) | |
.attr("cy", function(d) { return projection([d.lon, d.lat])[1]; }) | |
.attr("r", 6) | |
.style("fill", function(d) { return colorScale(d.price); }); | |
// add circle labels | |
var labels = [], | |
labelLinks = []; | |
data.forEach(function(d, i) { | |
var p = projection([d.lon, d.lat]); | |
var node = { | |
label: d.name, | |
x: p[0], | |
y: p[1] | |
}; | |
labels.push({node : node }); labels.push({node : node }); // push twice | |
labelLinks.push({ source : i * 2, target : i * 2 + 1, weight : 1, x: 100 }); | |
}); | |
var force = d3.layout.force() | |
.nodes(labels) | |
.links(labelLinks) | |
.gravity(0) | |
.linkDistance(0) | |
.linkStrength(8) | |
.charge(-100) | |
.size([width, height]) | |
.on("tick", tick); | |
function tick() { | |
circleNode.call(updateNode); | |
labelNode.each(function(d, i) { | |
if(i % 2 == 0) { | |
d.x = d.node.x; | |
d.y = d.node.y; | |
} else { | |
var b = this.childNodes[1].getBBox(); | |
var diffX = d.x - d.node.x, | |
diffY = d.y - d.node.y; | |
var dist = Math.sqrt(diffX * diffX + diffY * diffY); | |
var shiftX = Math.min(0, b.width * (diffX - dist) / (dist * 2)); | |
var shiftY = 5; | |
this.childNodes[1].setAttribute("transform", "translate(" + shiftX + "," + shiftY + ")"); | |
} | |
}); | |
labelNode.call(updateNode); | |
} | |
var circleNode = points.selectAll("circle") | |
.data(points) | |
.enter().append("circle") | |
.attr("class", "node") | |
.attr("r", 5) | |
.style("fill", "#555") | |
.style("stroke-width", 3); | |
var labelNode = points.selectAll("g") | |
.data(force.nodes()) | |
.enter().append("g") | |
.attr("class", "labelNode"); | |
labelNode.append("circle") | |
.attr("r", 0) | |
.style("fill", "red"); | |
labelNode.append("text") | |
.text(function(d, i) { return i % 2 == 0 ? "" : d.node.label }) | |
.style("fill", "#555") | |
var updateNode = function() { | |
this.attr("transform", function(d) { | |
return "translate(" + d.x + "," + d.y + ")"; | |
}); | |
} | |
force.start(); | |
}); | |
</script> | |
</body> | |
</html> |
type | name | price | lat | lon | url | |
---|---|---|---|---|---|---|
sushi | 이노시시 | 6 | 37.562562 | 126.926975 | http://hsong.egloos.com/3126336 | |
sushi | 스시효 | 8.8 | 37.522061 | 127.041867 | http://hsong.egloos.com/3402467 | |
sushi | 정준호 스시 | 7 | 37.487505 | 126.88886 | http://hsong.egloos.com/3383473 | |
sushi | 오가와 | 6 | 37.571923 | 126.974303 | http://hsong.egloos.com/3421468 | |
sushi | 스시시로 | 5 | 37.548968 | 126.921155 | http://hsong.egloos.com/3098726 | |
sushi | 스시조 | 25 | 37.564378 | 126.980085 | http://egloos.zum.com/redfish/v/1217180 | |
sushi | 슈치쿠 | 23 | 37.519465 | 126.939833 | http://redfish.egloos.com/1354547 | |
sushi | 스시초희 | 22 | 37.523725 | 127.035956 | http://redfish.egloos.com/1360892 | |
sushi | 스시타쿠 | 11 | 37.5272764 | 127.0352359 | http://redfish.egloos.com/1348840 | |
sushi | 아리아께 | 22 | 37.556978 | 127.005914 | http://redfish.egloos.com/1397479 | |
sushi | 스시하꼬 | 9 | 37.4897 | 126.993889 | http://redfish.egloos.com/1313557 | |
sushi | 스시타츠 | 22 | 37.518042 | 127.028216 | http://redfish.egloos.com/1393625 | |
sushi | 스시코우지 | 18 | 37.522897 | 127.039834 | http://redfish.egloos.com/1364412 | |
sushi | 코지마 | 35 | 37.5257419 | 127.0419814 | http://blog.naver.com/mardukas/220178511890 | |
sushi | 기꾸 | 4.5 | 37.517925 | 126.982401 | http://egloos.zum.com/hsong/v/3317958 | |
sushi | 스시선수 | 20 | 37.522832 | 127.036421 | http://redfish.egloos.com/1375236 | |
sushi | 스시산원 | 14 | 37.5064703 | 127.0509131 | http://redfish.egloos.com/1379800 | |
sushi | 미치루 | 8 | 37.519318 | 126.93142 | http://egloos.zum.com/redfish/v/1357195 | |
sushi | 가네끼스시 | 4 | 37.491172 | 126.9249803 | http://redfish.egloos.com/1368486 | |
sushi | 려 | 4 | 37.4817613 | 126.9514527 | http://redfish.egloos.com/1406658 |
{"type":"Topology","transform":{"scale":[0.00006247075827918093,0.00005151814945568312],"translate":[126.76700465024426,37.42574929824175]},"objects":{"seoul_municipalities_geo":{"type":"GeometryCollection","geometries":[{"arcs":[[0,1,2]],"type":"Polygon","properties":{"code":"11250","name":"강동구","name_eng":"Gangdong-gu","base_year":"2013"}},{"arcs":[[3,-2,4,5]],"type":"Polygon","properties":{"code":"11240","name":"송파구","name_eng":"Songpa-gu","base_year":"2013"}},{"arcs":[[6,-6,7,8,9,10]],"type":"Polygon","properties":{"code":"11230","name":"강남구","name_eng":"Gangnam-gu","base_year":"2013"}},{"arcs":[[-9,11,12,13,14]],"type":"Polygon","properties":{"code":"11220","name":"서초구","name_eng":"Seocho-gu","base_year":"2013"}},{"arcs":[[-13,15,16,17,18]],"type":"Polygon","properties":{"code":"11210","name":"관악구","name_eng":"Gwanak-gu","base_year":"2013"}},{"arcs":[[-14,-19,19,20]],"type":"Polygon","properties":{"code":"11200","name":"동작구","name_eng":"Dongjak-gu","base_year":"2013"}},{"arcs":[[21,22,-20,23,24,25]],"type":"Polygon","properties":{"code":"11190","name":"영등포구","name_eng":"Yeongdeungpo-gu","base_year":"2013"}},{"arcs":[[-17,26,27]],"type":"Polygon","properties":{"code":"11180","name":"금천구","name_eng":"Geumcheon-gu","base_year":"2013"}},{"arcs":[[28,-24,-18,-28,29]],"type":"Polygon","properties":{"code":"11170","name":"구로구","name_eng":"Guro-gu","base_year":"2013"}},{"arcs":[[30,-26,31,32]],"type":"Polygon","properties":{"code":"11160","name":"강서구","name_eng":"Gangseo-gu","base_year":"2013"}},{"arcs":[[-32,-25,-29,33]],"type":"Polygon","properties":{"code":"11150","name":"양천구","name_eng":"Yangcheon-gu","base_year":"2013"}},{"arcs":[[34,35,36,-22,-31,37,38]],"type":"Polygon","properties":{"code":"11140","name":"마포구","name_eng":"Mapo-gu","base_year":"2013"}},{"arcs":[[39,40,-35,41]],"type":"Polygon","properties":{"code":"11130","name":"서대문구","name_eng":"Seodaemun-gu","base_year":"2013"}},{"arcs":[[42,-42,-39,43]],"type":"Polygon","properties":{"code":"11120","name":"은평구","name_eng":"Eunpyeong-gu","base_year":"2013"}},{"arcs":[[44,45,46,47,48]],"type":"Polygon","properties":{"code":"11110","name":"노원구","name_eng":"Nowon-gu","base_year":"2013"}},{"arcs":[[-48,49,50]],"type":"Polygon","properties":{"code":"11100","name":"도봉구","name_eng":"Dobong-gu","base_year":"2013"}},{"arcs":[[-50,-47,51,52]],"type":"Polygon","properties":{"code":"11090","name":"강북구","name_eng":"Gangbuk-gu","base_year":"2013"}},{"arcs":[[53,-52,-46,54,55,56]],"type":"Polygon","properties":{"code":"11080","name":"성북구","name_eng":"Seongbuk-gu","base_year":"2013"}},{"arcs":[[-45,57,58,59,-55]],"type":"Polygon","properties":{"code":"11070","name":"중랑구","name_eng":"Jungnang-gu","base_year":"2013"}},{"arcs":[[-56,-60,60,61,62]],"type":"Polygon","properties":{"code":"11060","name":"동대문구","name_eng":"Dongdaemun-gu","base_year":"2013"}},{"arcs":[[-59,63,-3,-4,-7,64,-61]],"type":"Polygon","properties":{"code":"11050","name":"광진구","name_eng":"Gwangjin-gu","base_year":"2013"}},{"arcs":[[-62,-65,-11,65,66]],"type":"Polygon","properties":{"code":"11040","name":"성동구","name_eng":"Seongdong-gu","base_year":"2013"}},{"arcs":[[-66,-10,-15,-21,-23,-37,67]],"type":"Polygon","properties":{"code":"11030","name":"용산구","name_eng":"Yongsan-gu","base_year":"2013"}},{"arcs":[[-67,-68,-36,-41,68]],"type":"Polygon","properties":{"code":"11020","name":"중구","name_eng":"Jung-gu","base_year":"2013"}},{"arcs":[[69,-57,-63,-69,-40,-43]],"type":"Polygon","properties":{"code":"11010","name":"종로구","name_eng":"Jongno-gu","base_year":"2013"}}]}},"arcs":[[[5574,2558],[57,-6],[43,51],[46,31],[186,82],[214,63],[93,39],[187,113],[57,-6],[91,7],[48,22],[-25,-67],[11,-58],[28,-42],[21,-58],[7,-68],[38,-91],[-9,-157],[28,-23],[-7,-70],[10,-52],[-29,-3],[-39,27],[-56,-27],[-52,7],[-98,-26],[-48,15],[-154,-214],[-5,-91],[-62,-72],[-27,-69],[-31,-1],[-17,-50],[-2,-48]],[[6078,1716],[-22,9],[-386,207],[21,43],[45,160],[-76,46],[-143,50]],[[5517,2231],[40,79],[30,112],[0,102],[-13,34]],[[4835,1874],[95,-27],[75,-3],[108,17],[127,46],[104,16],[64,124],[109,184]],[[6078,1716],[0,-27],[-33,-24],[-22,-39],[-19,-72],[19,-61],[65,-38],[40,-5],[39,24],[28,-26],[110,-29],[42,-27],[-24,-67],[3,-46],[-29,-75],[-23,-32],[-80,-25],[-40,-143],[1,-36],[-47,-35],[-71,-2],[-48,-60],[-77,30],[-56,8],[4,-71],[71,-48],[-44,-26],[-63,0],[-57,31],[0,-48],[-46,-36]],[[5721,711],[0,40],[-28,61],[-142,234],[10,21],[-52,97],[-54,56],[-55,41],[-88,45],[-294,93],[-64,15],[-73,71],[-43,290],[-10,18],[7,81]],[[4669,1952],[166,-78]],[[5721,711],[-77,-59],[-12,-69],[-56,28],[-19,30],[-92,19],[-45,-57],[-84,-16],[-31,51]],[[5305,638],[-21,43],[-107,91],[-61,88],[-3,51],[-98,-14],[-68,-37],[-21,38],[-39,7],[-15,-25],[-108,-20],[-14,-76],[-78,-10],[-47,6],[-141,166],[-59,161],[-116,-20],[-40,97],[-177,451],[-36,150],[-19,46],[-84,96]],[[3953,1927],[145,142]],[[4098,2069],[63,49],[80,23],[258,-123],[16,33],[34,-32],[120,-67]],[[5305,638],[-27,-51],[8,-44],[-23,-8],[-17,-47],[-29,-17],[-39,-71],[0,-66],[-68,-34],[-29,-55],[-121,24],[-50,-12],[5,-35],[42,-23],[-10,-33],[-39,-22],[-14,-73],[10,-25],[-72,-16],[-17,-21],[-74,21],[-51,1],[-92,-31],[-36,34],[-38,10],[-18,52],[-105,97],[-64,13],[-7,39],[45,69],[-11,32],[4,58],[-26,43],[15,59],[-6,39],[-30,30],[-19,64],[17,46],[-55,37],[-83,-141],[-89,-45],[-70,-16],[-82,1],[-32,38],[-44,94],[-16,8],[-30,90],[-87,2],[-27,-12],[15,-54],[-6,-34],[-58,-15],[-74,-64]],[[3581,574],[-18,44],[11,100],[-21,45],[-37,36],[-32,59],[-16,76]],[[3468,934],[22,382],[34,71],[-62,44],[-14,34],[-3,157]],[[3445,1622],[38,27],[78,3],[32,-18],[139,77],[91,58],[38,37],[32,63],[60,58]],[[3581,574],[-94,-27],[-30,-72],[-74,-50],[-36,-55],[-47,-2],[-106,-38],[-6,-65],[-15,-22],[-60,-6],[-15,-24],[-84,0],[-127,-38],[-47,0],[-46,-31],[-19,28],[3,56],[-46,57],[-73,48],[0,47],[-36,40]],[[2623,420],[-89,82],[-13,45],[-90,20],[-34,-1],[-5,74],[-24,47],[15,26],[-34,25],[-55,117],[40,20],[20,65],[-40,24],[4,53],[-145,-32],[-19,20]],[[2154,1005],[60,90]],[[2214,1095],[44,0],[116,43],[62,43],[115,11],[37,81],[18,17],[59,-34],[51,-4],[28,-17],[85,0],[88,36],[76,-33],[32,-26],[45,11],[72,35],[-6,-49],[24,-70],[-16,-73],[147,-157],[103,23],[74,2]],[[2214,1095],[149,222],[115,25],[23,85],[68,206],[27,6],[-17,60],[103,-8],[152,34],[135,51]],[[2969,1776],[49,-49],[63,-43],[116,-49],[248,-13]],[[1998,2361],[176,-117],[88,-42],[368,-98],[88,-14],[142,-132]],[[2860,1958],[50,-46],[20,-67],[39,-69]],[[2214,1095],[-43,13],[-64,66],[-45,149],[-5,125],[7,84],[-55,79],[-175,101]],[[1834,1712],[5,106],[11,59],[20,21],[84,45],[24,40],[25,-6],[24,53],[-4,52],[-64,147],[-18,4]],[[1941,2233],[-14,53],[71,75]],[[2623,420],[-85,-70],[-38,-48],[-19,-55],[-31,-27],[-58,3],[-48,-48],[-42,-73],[-95,6],[-1,35],[-53,43],[-11,23],[4,74],[-12,29],[-42,21],[7,51],[-31,83],[-24,-14],[-50,17],[-7,47],[-45,23],[-1,59],[40,59],[-140,200],[-52,93],[-52,138],[21,14]],[[1758,1103],[63,23],[32,-12],[84,-66],[51,-57],[91,-21],[67,8],[8,27]],[[958,1548],[70,-2],[47,-59],[70,-52],[67,29],[-9,30],[76,3],[6,46],[56,15],[23,25],[44,9],[43,-26],[42,14],[31,-63],[37,0],[12,-28],[43,6],[50,-14],[52,11],[20,60],[80,112],[16,48]],[[1758,1103],[39,50],[-19,21],[-49,-14],[0,33],[-83,73],[-47,-48],[-57,-29],[-57,-76],[-41,-13],[-22,-45],[-30,-25],[-77,9],[-18,-22],[-6,-130],[-98,28],[-64,-7],[-58,43],[-41,-25],[-76,4],[-39,-14],[-38,43],[4,73],[-10,48],[11,31],[56,39],[-13,42],[-78,31],[-55,33],[-27,56],[6,37],[41,-10],[50,24],[19,49],[26,15],[22,73],[-6,38],[35,10]],[[1486,2836],[-5,-69],[16,-29],[126,-72],[185,-155],[190,-150]],[[1941,2233],[-16,0],[-71,83],[-108,-18],[-53,14],[-102,72],[-34,-133],[25,-69],[-5,-84],[9,-133],[-242,-37],[-134,-26],[-97,193],[10,24],[-31,80],[-43,-2],[-10,49],[-28,22],[-20,-68],[-75,-23]],[[916,2177],[-120,-1],[-68,19],[-17,29],[-96,-5],[-57,-47],[-15,-51],[-65,-39],[-17,70],[18,40],[-49,7],[0,39],[-50,12],[-31,36],[-109,-1],[-71,51],[-69,-4],[-56,90],[-44,45],[60,2],[11,27],[118,94],[1,42],[-35,62],[51,-6],[42,22],[36,41],[-12,31],[16,36],[108,74],[59,-4],[-3,60],[10,50],[34,3],[47,99],[31,15],[-25,42],[3,34],[-29,55],[-9,53],[22,50],[24,5],[11,54],[20,10],[59,-18],[169,-181],[70,-69],[102,-48],[386,-247],[109,-19]],[[958,1548],[-12,45],[9,50],[-22,58],[38,69],[-5,60],[51,75],[-18,57],[-27,5],[-61,95],[5,115]],[[2212,2880],[-24,-28],[51,-40],[240,-130],[95,-28],[41,-37],[-25,-46],[-1,-42],[164,-72],[67,26],[256,20],[26,-16],[45,42]],[[3147,2529],[26,-47],[-23,-21],[11,-74]],[[3161,2387],[25,-36],[-32,-20],[-28,-45],[-27,-17],[-21,-71],[-94,-107],[-100,-26],[-24,-107]],[[1486,2836],[2,19],[62,4],[28,16],[33,-23],[39,37],[44,7],[82,36],[20,56],[-7,32],[37,48],[21,59],[31,25]],[[1878,3152],[115,-119],[61,-50],[33,-15],[46,-61],[56,-46],[23,19]],[[2969,3481],[37,-25],[14,-38],[-13,-82],[21,-36],[49,-6],[-13,-60],[32,-71],[1,-29],[-27,-103],[48,-43],[-62,-34],[-36,-36],[209,-251]],[[3229,2667],[48,-76],[-44,-14],[-52,-39],[-34,-9]],[[2212,2880],[151,177],[58,-9],[-5,-47],[104,17],[25,62],[35,-1],[33,24],[-4,40],[17,45],[75,70],[113,44],[13,87],[14,33],[41,0],[34,59],[53,0]],[[3312,3955],[-41,-40],[-155,-34],[-45,-60],[-73,-11],[-6,-63],[-17,-52],[-22,-23],[16,-31],[10,-79],[-20,-63],[10,-18]],[[1878,3152],[45,56],[36,-1],[-30,-52],[30,-48],[66,-3],[29,14],[60,-11],[46,24],[-14,55],[46,46],[-12,44],[6,40],[-19,73],[29,13],[-4,120],[-15,54],[40,117],[27,9],[35,51],[-14,42],[37,41],[6,44],[-41,79],[69,66],[-10,54],[24,45],[12,64],[-77,40],[11,22],[89,-54],[118,16],[66,37],[56,49],[90,12],[40,26],[54,91],[52,30],[59,15],[6,-30],[57,-47],[50,6],[38,-51],[14,-67],[40,-17],[32,-93],[37,-9],[70,-85],[-1,-42],[49,-82]],[[5456,3733],[-68,-20],[-27,-33],[-58,-20],[-113,53],[-52,8],[-76,-23],[-156,-67]],[[4906,3631],[-54,-1],[-46,-27],[-50,4],[-125,113],[-67,82]],[[4564,3802],[-34,49],[-103,84]],[[4427,3935],[40,42],[17,67],[82,154],[77,-79],[15,102],[-26,96],[-3,93],[-40,94],[-4,60],[-40,105],[5,79],[22,83],[23,143],[-19,43]],[[4576,5017],[62,44],[35,6],[76,-16],[57,21],[68,88],[57,2],[70,37],[71,0],[41,-46],[31,-72],[139,-22],[22,-66],[-58,-81],[-14,-47],[29,-49],[14,-60],[17,-15],[6,-50],[-29,-76],[36,-86],[-10,-45],[-150,-78],[104,-13],[19,-40],[-28,-56],[39,-84],[54,-9],[39,11],[120,-20],[63,-86],[6,-97],[-22,-90],[-92,-71],[0,-33],[-28,-45],[36,-40]],[[4427,3935],[-48,51],[-24,55],[-39,22],[-30,73],[-84,67],[-47,47],[-68,31],[-74,0],[-38,26],[-11,35],[22,132],[20,50],[8,99],[46,63],[-30,53],[-45,52],[-31,77],[-53,8],[-5,96]],[[3896,4972],[10,49],[-13,37],[13,109],[49,68],[38,1],[25,54],[55,6],[44,-34],[45,-4],[51,22],[18,-30],[8,-55],[24,-64],[19,-21],[55,8],[94,61],[21,-31],[42,-26],[53,30],[29,-135]],[[4564,3802],[-52,-37],[-45,-74],[-65,-59],[-49,-61],[-103,-65],[-3,61],[-61,7],[-67,-27],[-47,48],[-72,36],[-65,16],[-36,41],[-16,48],[6,56],[-126,36],[-55,65],[-40,17],[-14,40],[-30,-1],[-91,67],[-16,22]],[[3517,4038],[25,71],[-47,65],[28,47],[-21,74],[-40,48],[-25,51],[5,33],[81,52],[52,88],[74,23],[14,56],[6,84],[-18,105],[-20,35],[34,17],[65,68],[90,25],[76,-8]],[[3364,3937],[36,42],[67,23],[50,36]],[[4906,3631],[5,-171]],[[4911,3460],[-20,49],[-30,0],[3,-48],[-53,-26],[-53,-7],[-48,-80],[-28,10],[-86,-31],[-28,23],[-42,-94],[-58,0],[-55,-21],[-24,-76],[-43,-27],[-117,-146],[-95,-84]],[[4134,2902],[-21,16],[-57,-6],[-30,64],[-28,7],[-93,-34],[-29,31],[-3,63],[-15,31],[-56,42],[-24,64],[-84,-3],[-21,-19],[-48,2],[-78,23],[-42,26],[-30,38],[-7,64],[54,6],[45,35],[-29,115],[17,66],[-5,80],[-62,39],[-31,118],[-27,35],[6,90],[-46,-7],[-26,49]],[[5456,3733],[90,-4],[91,-56],[-6,-31],[15,-87],[-15,-54],[26,-25],[-4,-59],[-67,-90],[3,-18],[69,-78],[-8,-19],[-72,-14],[-45,-79],[-19,-89],[-127,-16],[22,-40],[-2,-67],[-26,-50],[-2,-42]],[[5379,2815],[-23,-20],[-133,-58],[-124,35],[-78,10]],[[5021,2782],[-6,119],[-19,65],[-93,144],[-28,144],[10,39],[38,57],[4,32],[-16,78]],[[5021,2782],[-103,-230]],[[4918,2552],[-22,11],[-182,32],[-19,9],[-164,149],[-92,51],[-68,-2],[-84,-50],[-48,-8],[-102,35]],[[4137,2779],[-3,123]],[[5379,2815],[52,-51],[-13,-25],[-22,-141],[-13,-46],[151,-4],[40,10]],[[4669,1952],[165,350],[109,239],[-25,11]],[[4098,2069],[-98,73],[-85,13],[-18,44],[4,42]],[[3901,2241],[16,79],[33,9],[82,94],[10,51],[36,30],[51,6],[14,64],[41,36],[7,38],[-50,4],[-4,127]],[[3161,2387],[54,50],[103,-4],[69,-15],[11,36],[54,-30],[51,-8],[27,14],[38,-44],[40,-1],[80,-81],[52,52],[66,-6],[25,15],[10,-82],[39,-46],[21,4]],[[3229,2667],[39,44],[62,19],[78,1],[178,-22],[124,12],[79,17],[227,4],[74,37],[47,0]],[[3312,3955],[52,-18]]]} |
합리적 가격으로 훌륭한 스시를 즐기고 싶을 때 : 중급 스시의 강자들
서울에서 최고급 스시를 맛보고 싶을 때