{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "\n", "### 复旦大学新闻学院新媒体硕士课程\n", "***\n", "***\n", "# 使用folium做地图可视化\n", "***\n", "***\n", "\n", "王成军 \n", "\n", "wangchengjun@nju.edu.cn\n", "\n", "计算传播网 http://computational-communication.com\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/chengjun/anaconda/lib/python2.7/site-packages/folium-0.3.0.dev0-py2.7.egg/folium/__init__.pyc\n", "0.3.0.dev\n" ] } ], "source": [ "import folium, jinja2, vincent\n", "from IPython.display import IFrame\n", "from IPython.core.display import HTML\n", "print(folium.__file__)\n", "print(folium.__version__)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 读入数据" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import pickle\n", "\n", "node_pkl = open('/Users/chengjun/GitHub/cjc2016/data/nodeLoc.pkl', 'rb')\n", "nodeLoc = pickle.load(node_pkl)\n", "node_pkl.close()\n", "\n", "edge_pkl = open('/Users/chengjun/GitHub/cjc2016/data/edgeLoc.pkl', 'rb')\n", "edgeLoc = pickle.load(edge_pkl)\n", "edge_pkl.close()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 绘制地图" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_osm = folium.Map(location=[45.5236, -122.6750])\n", "map_osm" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "beijing = folium.Map(location=(39.90403,116.407526), zoom_start=10)\n" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "beijing" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# MarkerCluster" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from folium.plugins import MarkerCluster\n", "\n", "locations = nodeLoc\n", "popups = ['{}'.format(loc) for loc in locations]\n", "beijing.add_children(MarkerCluster(locations=locations, popups=popups))\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# HeatMap" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from folium import plugins\n", "\n", "beijing.add_children(plugins.HeatMap(locations))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "beijing.save('/Users/chengjun/GitHub/cjc2016/code/beijing_mobile.html')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# PolyLine" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "colors = ['blue','orange', 'red']\n", "for k, community in enumerate(edgeLoc):\n", " locations = edgeLoc[community]\n", " for loc in locations:\n", " line = folium.PolyLine(locations=loc, color=colors[k])\n", " beijing.add_children(line)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "beijing" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "beijing.save('/Users/chengjun/GitHub/cjc2016/vis/beijing_mobile_without_heat.html')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Convert HTML to PNG\n", "* Open the generated html with chrome,\n", "* Print to save it as pdf,\n", "* Open the pdf and export it as png or the other formats." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Data preparation" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "python数据持久存储:pickle模块的基本使用\n", "  python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "output = open('/Users/chengjun/GitHub/cjc2016/data/edgeLoc.pkl', 'wb')\n", "\n", "# Pickle dictionary using protocol 0.\n", "pickle.dump(edgeLoc, output)\n", "\n", "output.close()\n" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "output = open('/Users/chengjun/GitHub/cjc2016/data/nodeLoc.pkl', 'wb')\n", "\n", "# Pickle list using protocol -1\n", "pickle.dump(nodeLoc, output, -1)\n", "\n", "output.close()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true, "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "edgeLoc = {12196: [[(39.990111, 116.330251), (39.990301, 116.339161)],\n", " [(39.990111, 116.330251), (39.991104, 116.343872)],\n", " [(39.990111, 116.330251), (40.010696, 116.338602)],\n", " [(39.975028, 116.311556), (40.008801, 116.267881)],\n", " [(39.884931, 116.672281), (39.886901, 116.675301)],\n", " [(39.884931, 116.672281), (39.983333, 116.309944)],\n", " [(39.990311, 116.351102), (39.990301, 116.339161)],\n", " [(39.990311, 116.351102), (39.991104, 116.343872)],\n", " [(39.990311, 116.351102), (39.886901, 116.675301)],\n", " [(39.990311, 116.351102), (39.990531, 116.363311)],\n", " [(39.990311, 116.351102), (39.989352, 116.356064)],\n", " [(39.990311, 116.351102), (40.000241, 116.352881)],\n", " [(40.017402, 116.305637), (40.020209, 116.302722)],\n", " [(39.920349, 116.327869), (39.979381, 116.308711)],\n", " [(39.920349, 116.327869), (39.905001, 116.342225)],\n", " [(39.920349, 116.327869), (39.977181, 116.308881)],\n", " [(39.988501, 116.318872), (39.984811, 116.315931)],\n", " [(39.988501, 116.318872), (39.981691, 116.332721)],\n", " [(39.988501, 116.318872), (39.983061, 116.319341)],\n", " [(39.988501, 116.318872), (39.978994, 116.329721)],\n", " [(39.763371011, 116.322339649), (39.977181, 116.308881)],\n", " [(39.994141, 116.405721), (39.977237, 116.308991)],\n", " [(40.050083, 116.298417), (40.017394, 116.325471)],\n", " [(40.050083, 116.298417), (39.980345, 116.370601)],\n", " [(40.050083, 116.298417), (40.010696, 116.338602)],\n", " [(39.984811, 116.315931), (39.983061, 116.319341)],\n", " [(39.984811, 116.315931), (39.978994, 116.329721)],\n", " [(39.978994, 116.329721), (39.990301, 116.339161)],\n", " [(39.978994, 116.329721), (39.981691, 116.332721)],\n", " [(39.978994, 116.329721), (39.983061, 116.319341)],\n", " [(39.978994, 116.329721), (39.989352, 116.356064)],\n", " [(39.981691, 116.332721), (39.990301, 116.339161)],\n", " [(39.981691, 116.332721), (40.017394, 116.325471)],\n", " [(39.983118, 116.310884), (39.983464, 116.308398)],\n", " [(39.983464, 116.308398), (39.983471, 116.308391)],\n", " [(39.983464, 116.308398), (39.983056, 116.309167)],\n", " [(40.017394, 116.325471), (39.990301, 116.339161)],\n", " [(40.017394, 116.325471), (40.008171, 116.328254)],\n", " [(40.017394, 116.325471), (40.010696, 116.338602)],\n", " [(39.977181, 116.308881), (39.977237, 116.308991)],\n", " [(39.977181, 116.308881), (39.981928, 116.308731)],\n", " [(39.592431, 116.183104), (39.983333, 116.309944)],\n", " [(39.983056, 116.309167), (39.983333, 116.309944)],\n", " [(40.000241, 116.352881), (39.990301, 116.339161)],\n", " [(40.000241, 116.352881), (39.990531, 116.363311)],\n", " [(40.000241, 116.352881), (39.991104, 116.343872)],\n", " [(40.000241, 116.352881), (40.010696, 116.338602)],\n", " [(39.975395, 116.313438), (39.977237, 116.308991)],\n", " [(39.979381, 116.308711), (39.905001, 116.342225)],\n", " [(39.990301, 116.339161), (39.991104, 116.343872)],\n", " [(39.991541, 116.319551), (39.983333, 116.309944)],\n", " [(40.008171, 116.328254), (40.010696, 116.338602)],\n", " [(39.981928, 116.308731), (39.977147, 116.304633)],\n", " [(40.008801, 116.267881), (40.006201, 116.279001)],\n", " [(39.978871, 116.306551), (39.977147, 116.304633)],\n", " [(39.977237, 116.308991), (39.983333, 116.309944)],\n", " [(39.981862, 116.317841), (39.983061, 116.319341)],\n", " [(39.990531, 116.363311), (39.989352, 116.356064)]],\n", " 12261: [[(40.200491, 116.179253), (40.183415, 116.161574)],\n", " [(40.200491, 116.179253), (40.183997, 116.191357)],\n", " [(40.200491, 116.179253), (40.218981, 116.230971)],\n", " [(40.226655, 116.226144), (40.145755, 116.302861)],\n", " [(40.226655, 116.226144), (40.210773, 116.239262)],\n", " [(40.226655, 116.226144), (40.222097, 116.220571)],\n", " [(40.226655, 116.226144), (40.218981, 116.230971)],\n", " [(40.226655, 116.226144), (40.213888, 116.221534)],\n", " [(40.226655, 116.226144), (40.213869, 116.234626)],\n", " [(40.055072, 116.313491), (40.076948, 116.302963)],\n", " [(40.055072, 116.313491), (40.098774, 116.302953)],\n", " [(40.171594, 116.244031), (40.210773, 116.239262)],\n", " [(40.171594, 116.244031), (40.183997, 116.191357)],\n", " [(40.100662, 116.276404), (40.098981, 116.285883)],\n", " [(40.100662, 116.276404), (40.096239, 116.272141)],\n", " [(40.100662, 116.276404), (40.112621, 116.289151)],\n", " [(40.100662, 116.276404), (40.095381, 116.283131)],\n", " [(40.100662, 116.276404), (40.106016, 116.276689)],\n", " [(40.100662, 116.276404), (40.103275, 116.284444)],\n", " [(40.216718, 116.216522), (39.792501, 116.486851)],\n", " [(40.216718, 116.216522), (40.213888, 116.221534)],\n", " [(40.216718, 116.216522), (40.212898, 116.228058)],\n", " [(40.216718, 116.216522), (40.218981, 116.230971)],\n", " [(40.029814, 116.317095), (40.034031, 116.319871)],\n", " [(40.029814, 116.317095), (40.039607, 116.316384)],\n", " [(40.029814, 116.317095), (40.035833, 116.309445)],\n", " [(40.056215, 116.327246), (40.058111, 116.330667)],\n", " [(40.056215, 116.327246), (40.047312, 116.333848)],\n", " [(40.056215, 116.327246), (40.055791, 116.324361)],\n", " [(40.056215, 116.327246), (40.057821, 116.340871)],\n", " [(40.240347, 116.117703), (40.231194, 116.118111)],\n", " [(40.240347, 116.117703), (40.235611, 116.124289)],\n", " [(40.240347, 116.117703), (40.220667, 116.239556)],\n", " [(40.133908, 116.260049), (40.125971, 116.252163)],\n", " [(40.133908, 116.260049), (40.125517, 116.261944)],\n", " [(40.133908, 116.260049), (40.131848, 116.266921)],\n", " [(40.073638, 116.310218), (40.083291, 116.322045)],\n", " [(40.073638, 116.310218), (40.076948, 116.302963)],\n", " [(40.073638, 116.310218), (40.077062, 116.325645)],\n", " [(40.073638, 116.310218), (40.068287, 116.333102)],\n", " [(40.073638, 116.310218), (40.073022, 116.316664)],\n", " [(40.073022, 116.316664), (40.083291, 116.322045)],\n", " [(40.073022, 116.316664), (40.058111, 116.330667)],\n", " [(40.073022, 116.316664), (40.089172, 116.302284)],\n", " [(40.073022, 116.316664), (40.065611, 116.322079)],\n", " [(40.073022, 116.316664), (40.087491, 116.324951)],\n", " [(40.073022, 116.316664), (40.099121, 116.338071)],\n", " [(40.073022, 116.316664), (40.077062, 116.325645)],\n", " [(40.073022, 116.316664), (40.068287, 116.333102)],\n", " [(40.073022, 116.316664), (40.076948, 116.302963)],\n", " [(40.231194, 116.118111), (40.235611, 116.124289)],\n", " [(40.052918, 116.369476), (40.058111, 116.330667)],\n", " [(40.052918, 116.369476), (40.041361, 116.373921)],\n", " [(40.140561, 116.262416), (40.141792, 116.258313)],\n", " [(40.140561, 116.262416), (40.125517, 116.261944)],\n", " [(40.140561, 116.262416), (40.131848, 116.266921)],\n", " [(40.134251, 116.252193), (40.125517, 116.261944)],\n", " [(40.035833, 116.309445), (40.058111, 116.330667)],\n", " [(40.035833, 116.309445), (40.043501, 116.298251)],\n", " [(40.035833, 116.309445), (40.034978, 116.306693)],\n", " [(40.035833, 116.309445), (40.062711, 116.295361)],\n", " [(40.035833, 116.309445), (40.039607, 116.316384)],\n", " [(40.035833, 116.309445), (40.034031, 116.319871)],\n", " [(40.206013, 116.223627), (40.209889, 116.228222)],\n", " [(40.206013, 116.223627), (40.213888, 116.221534)],\n", " [(40.076948, 116.302963), (40.083291, 116.322045)],\n", " [(40.076948, 116.302963), (40.089172, 116.302284)],\n", " [(40.076948, 116.302963), (40.087389, 116.300231)],\n", " [(40.076948, 116.302963), (40.043761, 116.285851)],\n", " [(40.076948, 116.302963), (40.098774, 116.302953)],\n", " [(40.076948, 116.302963), (40.087491, 116.324951)],\n", " [(40.076948, 116.302963), (40.099121, 116.338071)],\n", " [(40.076948, 116.302963), (40.077062, 116.325645)],\n", " [(40.076948, 116.302963), (40.069228, 116.299637)],\n", " [(40.112621, 116.289151), (40.125517, 116.261944)],\n", " [(40.112621, 116.289151), (40.118531, 116.267087)],\n", " [(40.112621, 116.289151), (40.131848, 116.266921)],\n", " [(40.038109, 116.323645), (40.039607, 116.316384)],\n", " [(40.118531, 116.267087), (40.120147, 116.254641)],\n", " [(40.118531, 116.267087), (40.131848, 116.266921)],\n", " [(40.118531, 116.267087), (40.106016, 116.276689)],\n", " [(40.118531, 116.267087), (40.125517, 116.261944)],\n", " [(40.118531, 116.267087), (40.218981, 116.230971)],\n", " [(40.118531, 116.267087), (40.125971, 116.252163)],\n", " [(40.034261, 116.358151), (40.040439, 116.349094)],\n", " [(40.145939, 116.252157), (40.125517, 116.261944)],\n", " [(40.145939, 116.252157), (40.218981, 116.230971)],\n", " [(40.081833, 116.294194), (40.098774, 116.302953)],\n", " [(40.081833, 116.294194), (40.235611, 116.124289)],\n", " [(40.081833, 116.294194), (40.089172, 116.302284)],\n", " [(40.043501, 116.298251), (40.043761, 116.285851)],\n", " [(40.043501, 116.298251), (40.055121, 116.307781)],\n", " [(40.043501, 116.298251), (40.034579, 116.288291)],\n", " [(40.043501, 116.298251), (40.034031, 116.319871)],\n", " [(40.125517, 116.261944), (40.209278, 116.216359)],\n", " [(40.125517, 116.261944), (40.213888, 116.221534)],\n", " [(40.125517, 116.261944), (40.131848, 116.266921)],\n", " [(40.125517, 116.261944), (40.120147, 116.254641)],\n", " [(40.125517, 116.261944), (40.152972, 116.298361)],\n", " [(40.125517, 116.261944), (40.141792, 116.258313)],\n", " [(40.125517, 116.261944), (40.103275, 116.284444)],\n", " [(40.108971, 116.268313), (40.106016, 116.276689)],\n", " [(40.213869, 116.234626), (40.215364, 116.240961)],\n", " [(40.213869, 116.234626), (40.210773, 116.239262)],\n", " [(40.213869, 116.234626), (40.211233, 116.239117)],\n", " [(40.213869, 116.234626), (40.212442, 116.246563)],\n", " [(40.213869, 116.234626), (40.209278, 116.216359)],\n", " [(40.213869, 116.234626), (40.216783, 116.256904)],\n", " [(40.213869, 116.234626), (40.209889, 116.228222)],\n", " [(40.213869, 116.234626), (40.220667, 116.239556)],\n", " [(40.213869, 116.234626), (40.212647, 116.251881)],\n", " [(40.213869, 116.234626), (40.213888, 116.221534)],\n", " [(40.213869, 116.234626), (40.218981, 116.230971)],\n", " [(40.213869, 116.234626), (40.212898, 116.228058)],\n", " [(40.213869, 116.234626), (40.183412, 116.232075)],\n", " [(40.213869, 116.234626), (40.214867, 116.247008)],\n", " [(40.212898, 116.228058), (40.210773, 116.239262)],\n", " [(40.212898, 116.228058), (40.211233, 116.239117)],\n", " [(40.212898, 116.228058), (40.213888, 116.221534)],\n", " [(40.212898, 116.228058), (40.209889, 116.228222)],\n", " [(40.212898, 116.228058), (40.220667, 116.239556)],\n", " [(40.212898, 116.228058), (40.218981, 116.230971)],\n", " [(40.212647, 116.251881), (40.214867, 116.247008)],\n", " [(40.212647, 116.251881), (40.210773, 116.239262)],\n", " [(40.212647, 116.251881), (40.212442, 116.246563)],\n", " [(40.212647, 116.251881), (40.216783, 116.256904)],\n", " [(39.787638, 116.493917), (39.790501, 116.483001)],\n", " [(39.787638, 116.493917), (39.787601, 116.493901)],\n", " [(39.787638, 116.493917), (39.790141, 116.482981)],\n", " [(39.787638, 116.493917), (40.187917, 117.153667)],\n", " [(39.787638, 116.493917), (39.792501, 116.486851)],\n", " [(40.033701, 116.330251), (40.039222, 116.339751)],\n", " [(40.039607, 116.316384), (40.034978, 116.306693)],\n", " [(40.039607, 116.316384), (40.034031, 116.319871)],\n", " [(40.039607, 116.316384), (40.041002, 116.315417)],\n", " [(40.034031, 116.319871), (40.034978, 116.306693)],\n", " [(40.034031, 116.319871), (40.034579, 116.288291)],\n", " [(40.040439, 116.349094), (40.058111, 116.330667)],\n", " [(40.040439, 116.349094), (40.041361, 116.373921)],\n", " [(40.154301, 116.250241), (40.156415, 116.244773)],\n", " [(40.154301, 116.250241), (40.158691, 116.266905)],\n", " [(40.034579, 116.288291), (40.034978, 116.306693)],\n", " [(40.103275, 116.284444), (40.106016, 116.276689)],\n", " [(40.103275, 116.284444), (40.098981, 116.285883)],\n", " [(40.083291, 116.322045), (40.089172, 116.302284)],\n", " [(40.083291, 116.322045), (40.098774, 116.302953)],\n", " [(40.083291, 116.322045), (40.087491, 116.324951)],\n", " [(40.083291, 116.322045), (40.099121, 116.338071)],\n", " [(40.083291, 116.322045), (40.077062, 116.325645)],\n", " [(40.083291, 116.322045), (40.068287, 116.333102)],\n", " [(40.083291, 116.322045), (40.081066, 116.342998)],\n", " [(40.083291, 116.322045), (40.084444, 116.331417)],\n", " [(40.087389, 116.300231), (40.089172, 116.302284)],\n", " [(40.156415, 116.244773), (40.197801, 116.222841)],\n", " [(40.156415, 116.244773), (40.158691, 116.266905)],\n", " [(40.150118, 116.264351), (40.146371, 116.273861)],\n", " [(40.218981, 116.230971), (40.210773, 116.239262)],\n", " [(40.218981, 116.230971), (40.212442, 116.246563)],\n", " [(40.218981, 116.230971), (40.197801, 116.222841)],\n", " [(40.218981, 116.230971), (40.222097, 116.220571)],\n", " [(40.218981, 116.230971), (40.209889, 116.228222)],\n", " [(40.218981, 116.230971), (40.220667, 116.239556)],\n", " [(40.218981, 116.230971), (40.213888, 116.221534)],\n", " [(40.218981, 116.230971), (40.152972, 116.298361)],\n", " [(40.084444, 116.331417), (40.087491, 116.324951)],\n", " [(40.084444, 116.331417), (40.099121, 116.338071)],\n", " [(40.084444, 116.331417), (40.068287, 116.333102)],\n", " [(40.084444, 116.331417), (40.081066, 116.342998)],\n", " [(40.084444, 116.331417), (40.152972, 116.298361)],\n", " [(40.461806, 115.968917), (40.462333, 115.980861)],\n", " [(40.461806, 115.968917), (40.464911, 115.992917)],\n", " [(40.461806, 115.968917), (40.463311, 115.970806)],\n", " [(40.055791, 116.324361), (40.058111, 116.330667)],\n", " [(40.055791, 116.324361), (40.065611, 116.322079)],\n", " [(39.790501, 116.483001), (39.790141, 116.482981)],\n", " [(39.790501, 116.483001), (40.187917, 117.153667)],\n", " [(39.790501, 116.483001), (39.792501, 116.486851)],\n", " [(40.209889, 116.228222), (40.210773, 116.239262)],\n", " [(40.209889, 116.228222), (40.211233, 116.239117)],\n", " [(40.209889, 116.228222), (40.222097, 116.220571)],\n", " [(40.209889, 116.228222), (40.220667, 116.239556)],\n", " [(40.220667, 116.239556), (40.215364, 116.240961)],\n", " [(40.220667, 116.239556), (40.210773, 116.239262)],\n", " [(40.220667, 116.239556), (40.222097, 116.220571)],\n", " [(40.220667, 116.239556), (40.167991, 116.314012)],\n", " [(40.220667, 116.239556), (40.223035, 116.276701)],\n", " [(40.462333, 115.980861), (40.463311, 115.970806)],\n", " [(40.095381, 116.283131), (40.106016, 116.276689)],\n", " [(40.095381, 116.283131), (40.098981, 116.285883)],\n", " [(40.095381, 116.283131), (40.089172, 116.302284)],\n", " [(40.210773, 116.239262), (40.215364, 116.240961)],\n", " [(40.210773, 116.239262), (40.222097, 116.220571)],\n", " [(40.210773, 116.239262), (40.211233, 116.239117)],\n", " [(40.210773, 116.239262), (40.212442, 116.246563)],\n", " [(40.210773, 116.239262), (40.214867, 116.247008)],\n", " [(40.211233, 116.239117), (40.212442, 116.246563)],\n", " [(40.212442, 116.246563), (40.215364, 116.240961)],\n", " [(40.212442, 116.246563), (40.214867, 116.247008)],\n", " [(40.212442, 116.246563), (40.222097, 116.220571)],\n", " [(40.212442, 116.246563), (40.216783, 116.256904)],\n", " [(40.222097, 116.220571), (40.145755, 116.302861)],\n", " [(40.222097, 116.220571), (40.213888, 116.221534)],\n", " [(40.222097, 116.220571), (40.220905, 116.213595)],\n", " [(40.120147, 116.254641), (40.125971, 116.252163)],\n", " [(40.120147, 116.254641), (40.131848, 116.266921)],\n", " [(40.125971, 116.252163), (40.131848, 116.266921)],\n", " [(40.216801, 116.203957), (40.183415, 116.161574)],\n", " [(40.220905, 116.213595), (40.235611, 116.124289)],\n", " [(40.220905, 116.213595), (40.213888, 116.221534)],\n", " [(40.170417, 116.269783), (40.141792, 116.258313)],\n", " [(40.170417, 116.269783), (40.158691, 116.266905)],\n", " [(40.065611, 116.322079), (40.058111, 116.330667)],\n", " [(40.065611, 116.322079), (40.055121, 116.307781)],\n", " [(40.065611, 116.322079), (40.052505, 116.173674)],\n", " [(40.065611, 116.322079), (40.068287, 116.333102)],\n", " [(40.065611, 116.322079), (40.051301, 116.311001)],\n", " [(40.197801, 116.222841), (40.209278, 116.216359)],\n", " [(40.131848, 116.266921), (40.145014, 116.293074)],\n", " [(40.131848, 116.266921), (40.146371, 116.273861)],\n", " [(40.145014, 116.293074), (40.145755, 116.302861)],\n", " [(40.145014, 116.293074), (40.152972, 116.298361)],\n", " [(40.145014, 116.293074), (40.146371, 116.273861)],\n", " [(40.152972, 116.298361), (40.145755, 116.302861)],\n", " [(40.152972, 116.298361), (40.167991, 116.314012)],\n", " [(40.152972, 116.298361), (40.141792, 116.258313)],\n", " [(40.043761, 116.285851), (40.051301, 116.311001)],\n", " [(40.047312, 116.333848), (40.058111, 116.330667)],\n", " [(40.047312, 116.333848), (40.052505, 116.173674)],\n", " [(40.098774, 116.302953), (40.098981, 116.285883)],\n", " [(40.122783, 116.319914), (40.099121, 116.338071)],\n", " [(40.122783, 116.319914), (40.106016, 116.276689)],\n", " [(40.122783, 116.319914), (40.136843, 116.314051)],\n", " [(40.087491, 116.324951), (40.089172, 116.302284)],\n", " [(40.087491, 116.324951), (40.099121, 116.338071)],\n", " [(40.087491, 116.324951), (40.077062, 116.325645)],\n", " [(40.087491, 116.324951), (40.081066, 116.342998)],\n", " [(40.081066, 116.342998), (40.099121, 116.338071)],\n", " [(40.106016, 116.276689), (40.098981, 116.285883)],\n", " [(40.062711, 116.295361), (39.898054, 116.219284)],\n", " [(40.062711, 116.295361), (40.052505, 116.173674)],\n", " [(40.062711, 116.295361), (40.068287, 116.333102)],\n", " [(40.062711, 116.295361), (40.096239, 116.272141)],\n", " [(40.032181, 116.340731), (39.790141, 116.482981)],\n", " [(40.032181, 116.340731), (40.034231, 116.327471)],\n", " [(40.032181, 116.340731), (40.039222, 116.339751)],\n", " [(40.052505, 116.173674), (40.034978, 116.306693)],\n", " [(40.052505, 116.173674), (40.069228, 116.299637)],\n", " [(40.052505, 116.173674), (40.051301, 116.311001)],\n", " [(39.790141, 116.482981), (40.187917, 117.153667)],\n", " [(40.214867, 116.247008), (40.215364, 116.240961)],\n", " [(40.168968, 116.311797), (40.167991, 116.314012)],\n", " [(40.096239, 116.272141), (40.158691, 116.266905)],\n", " [(40.077062, 116.325645), (40.099121, 116.338071)],\n", " [(40.077062, 116.325645), (40.068287, 116.333102)],\n", " [(39.787601, 116.493901), (39.792501, 116.486851)],\n", " [(40.051301, 116.311001), (40.055121, 116.307781)],\n", " [(40.051301, 116.311001), (40.034978, 116.306693)],\n", " [(40.034978, 116.306693), (40.022108, 116.307999)],\n", " [(40.066778, 116.342167), (40.066421, 116.341311)],\n", " [(40.066778, 116.342167), (40.068287, 116.333102)],\n", " [(40.069228, 116.299637), (40.068287, 116.333102)],\n", " [(39.947101, 116.309841), (40.089172, 116.302284)],\n", " [(40.464911, 115.992917), (40.447056, 115.968972)],\n", " [(40.136843, 116.314051), (40.145755, 116.302861)],\n", " [(40.136843, 116.314051), (40.167991, 116.314012)],\n", " [(40.146371, 116.273861), (40.089172, 116.302284)],\n", " [(40.145755, 116.302861), (40.167991, 116.314012)],\n", " [(40.209278, 116.216359), (40.213888, 116.221534)],\n", " [(40.068287, 116.333102), (40.058111, 116.330667)],\n", " [(40.057821, 116.340871), (40.058111, 116.330667)],\n", " [(40.167991, 116.314012), (40.166291, 116.343241)]],\n", " 12285: [[(39.923121, 116.515441), (39.915401, 116.556331)],\n", " [(39.923121, 116.515441), (39.921471, 116.399411)],\n", " [(39.923121, 116.515441), (39.910051, 116.514661)],\n", " [(39.923121, 116.515441), (39.918611, 116.507181)],\n", " [(39.923121, 116.515441), (39.920111, 116.546667)],\n", " [(39.923121, 116.515441), (39.926101, 116.528501)],\n", " [(40.005278, 116.223278), (39.912491, 116.533221)],\n", " [(39.938245, 116.570841), (39.920071, 116.536031)],\n", " [(39.917778, 116.555001), (39.920111, 116.546667)],\n", " [(39.918611, 116.507181), (39.921181, 116.494821)],\n", " [(39.916032, 116.529796), (39.912491, 116.533221)],\n", " [(39.921181, 116.494821), (39.920071, 116.536031)],\n", " [(39.918681, 116.507301), (39.925291, 116.472391)],\n", " [(39.910051, 116.514661), (39.912917, 116.518306)],\n", " [(39.916191, 116.528441), (39.917275, 116.524194)],\n", " [(39.916191, 116.528441), (39.912101, 116.354001)],\n", " [(39.916191, 116.528441), (39.918461, 116.523139)],\n", " [(39.911641, 116.547851), (39.920071, 116.536031)],\n", " [(39.911641, 116.547851), (39.915401, 116.556331)],\n", " [(39.887901, 116.331001), (39.920071, 116.536031)],\n", " [(39.887901, 116.331001), (40.039091, 116.305781)],\n", " [(39.907611, 116.572151), (39.920071, 116.536031)],\n", " [(39.857296, 116.078922), (39.920071, 116.536031)],\n", " [(39.857296, 116.078922), (39.915401, 116.556331)],\n", " [(39.920071, 116.536031), (39.909691, 116.591661)],\n", " [(39.920071, 116.536031), (39.912491, 116.533221)],\n", " [(39.920071, 116.536031), (39.915401, 116.556331)],\n", " [(39.920071, 116.536031), (39.976213, 116.573121)],\n", " [(39.920071, 116.536031), (39.908941, 116.525101)],\n", " [(39.920071, 116.536031), (40.008061, 116.448869)],\n", " [(39.920071, 116.536031), (39.837781, 116.389081)],\n", " [(39.920071, 116.536031), (39.926101, 116.528501)],\n", " [(39.865821, 116.488651), (39.912491, 116.533221)],\n", " [(40.129231, 117.106491), (39.892091, 116.392511)],\n", " [(39.920111, 116.546667), (39.915401, 116.556331)],\n", " [(39.912101, 116.354001), (39.912491, 116.533221)],\n", " [(39.912491, 116.533221), (39.908941, 116.525101)],\n", " [(39.912491, 116.533221), (40.039091, 116.305781)],\n", " [(39.912491, 116.533221), (39.915401, 116.556331)],\n", " [(39.912491, 116.533221), (39.913461, 116.430731)],\n", " [(39.915401, 116.556331), (39.920889, 116.557278)],\n", " [(39.915401, 116.556331), (39.908941, 116.525101)]]}" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true, "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "nodeLoc = [(40.200491, 116.179253),\n", " (39.988228, 116.308678),\n", " (39.990111, 116.330251),\n", " (40.226655, 116.226144),\n", " (39.918611, 116.507181),\n", " (40.005278, 116.223278),\n", " (39.917778, 116.555001),\n", " (40.055072, 116.313491),\n", " (40.129231, 117.106491),\n", " (40.171594, 116.244031),\n", " (40.050083, 116.298417),\n", " (40.136153, 116.132506),\n", " (40.100662, 116.276404),\n", " (39.920111, 116.546667),\n", " (39.988231, 116.311401),\n", " (40.216718, 116.216522),\n", " (40.029814, 116.317095),\n", " (40.056215, 116.327246),\n", " (40.240347, 116.117703),\n", " (40.133908, 116.260049),\n", " (40.073638, 116.310218),\n", " (39.910051, 116.514661),\n", " (40.073022, 116.316664),\n", " (39.933961, 116.724013),\n", " (39.983464, 116.308398),\n", " (40.017394, 116.325471),\n", " (40.026111, 116.304511),\n", " (40.231194, 116.118111),\n", " (39.908941, 116.525101),\n", " (39.920071, 116.536031),\n", " (39.916111, 116.525556),\n", " (40.052918, 116.369476),\n", " (40.140561, 116.262416),\n", " (39.975395, 116.313438),\n", " (40.134251, 116.252193),\n", " (40.035833, 116.309445),\n", " (40.206013, 116.223627),\n", " (40.037177, 116.370581),\n", " (40.076948, 116.302963),\n", " (39.921471, 116.399411),\n", " (39.865821, 116.488651),\n", " (40.112621, 116.289151),\n", " (39.837781, 116.389081),\n", " (40.038109, 116.323645),\n", " (39.993301, 116.385501),\n", " (40.072862, 116.403417),\n", " (40.118531, 116.267087),\n", " (40.034261, 116.358151),\n", " (39.912101, 116.354001),\n", " (40.145939, 116.252157),\n", " (40.081833, 116.294194),\n", " (40.050472, 116.321388),\n", " (40.045489, 116.345215),\n", " (39.983471, 116.308391),\n", " (40.043501, 116.298251),\n", " (40.125517, 116.261944),\n", " (40.108971, 116.268313),\n", " (40.213869, 116.234626),\n", " (40.212898, 116.228058),\n", " (39.981928, 116.308731),\n", " (39.991361, 116.309306),\n", " (40.112222, 116.285388),\n", " (40.369497, 115.888276),\n", " (39.979381, 116.308711),\n", " (39.884931, 116.672281),\n", " (39.990311, 116.351102),\n", " (40.212647, 116.251881),\n", " (40.036487, 116.340494),\n", " (39.787638, 116.493917),\n", " (40.023842, 116.331927),\n", " (40.033701, 116.330251),\n", " (40.039607, 116.316384),\n", " (40.034031, 116.319871),\n", " (39.994141, 116.405721),\n", " (40.040439, 116.349094),\n", " (39.914801, 116.469981),\n", " (40.154301, 116.250241),\n", " (40.034579, 116.288291),\n", " (40.103275, 116.284444),\n", " (40.083291, 116.322045),\n", " (39.980345, 116.370601),\n", " (39.925291, 116.472391),\n", " (39.895711, 116.397971),\n", " (40.031751, 116.368056),\n", " (40.087389, 116.300231),\n", " (40.409112, 115.939973),\n", " (39.983118, 116.310884),\n", " (40.156415, 116.244773),\n", " (40.150118, 116.264351),\n", " (39.915401, 116.556331),\n", " (40.218981, 116.230971),\n", " (40.084444, 116.331417),\n", " (40.461806, 115.968917),\n", " (40.008171, 116.328254),\n", " (39.857296, 116.078922),\n", " (40.055791, 116.324361),\n", " (39.984811, 116.315931),\n", " (39.790501, 116.483001),\n", " (40.209889, 116.228222),\n", " (40.220667, 116.239556),\n", " (40.027911, 116.335911),\n", " (40.462333, 115.980861),\n", " (40.095381, 116.283131),\n", " (40.064501, 116.279917),\n", " (39.886583, 116.673001),\n", " (39.907611, 116.572151),\n", " (40.210773, 116.239262),\n", " (40.211233, 116.239117),\n", " (40.212442, 116.246563),\n", " (39.912491, 116.533221),\n", " (40.071389, 116.323528),\n", " (39.983031, 116.298521),\n", " (40.222097, 116.220571),\n", " (39.981862, 116.317841),\n", " (39.918461, 116.523139),\n", " (39.977147, 116.304633),\n", " (39.983056, 116.309167),\n", " (39.983333, 116.309944),\n", " (40.016147, 116.296344),\n", " (40.120147, 116.254641),\n", " (40.125971, 116.252163),\n", " (40.216801, 116.203957),\n", " (40.220905, 116.213595),\n", " (40.041002, 116.315417),\n", " (40.170417, 116.269783),\n", " (40.504195, 116.054002),\n", " (40.235611, 116.124289),\n", " (39.938245, 116.570841),\n", " (40.065611, 116.322079),\n", " (40.197801, 116.222841),\n", " (40.017402, 116.305637),\n", " (40.131848, 116.266921),\n", " (39.920349, 116.327869),\n", " (39.988501, 116.318872),\n", " (39.983061, 116.319341),\n", " (40.145014, 116.293074),\n", " (40.028271, 116.341911),\n", " (40.152972, 116.298361),\n", " (40.183412, 116.232075),\n", " (39.916032, 116.529796),\n", " (39.983334, 116.309945),\n", " (39.916191, 116.528441),\n", " (39.952309, 116.402426),\n", " (40.463311, 115.970806),\n", " (40.043761, 116.285851),\n", " (40.047312, 116.333848),\n", " (40.098774, 116.302953),\n", " (40.122783, 116.319914),\n", " (40.087491, 116.324951),\n", " (40.081066, 116.342998),\n", " (40.106016, 116.276689),\n", " (40.062711, 116.295361),\n", " (40.032181, 116.340731),\n", " (39.977181, 116.308881),\n", " (40.041361, 116.373921),\n", " (39.980015, 116.311137),\n", " (40.052505, 116.173674),\n", " (39.790141, 116.482981),\n", " (40.030933, 116.332812),\n", " (40.187917, 117.153667),\n", " (40.006201, 116.279001),\n", " (40.019626, 116.456913),\n", " (40.214867, 116.247008),\n", " (40.168968, 116.311797),\n", " (39.892091, 116.392511),\n", " (39.991104, 116.343872),\n", " (40.096239, 116.272141),\n", " (40.008801, 116.267881),\n", " (40.077062, 116.325645),\n", " (39.887901, 116.331001),\n", " (39.787601, 116.493901),\n", " (39.948201, 116.542001),\n", " (39.977189, 116.305564),\n", " (40.051301, 116.311001),\n", " (39.898054, 116.219284),\n", " (39.978871, 116.306551),\n", " (40.034978, 116.306693),\n", " (39.792501, 116.486851),\n", " (40.050981, 116.320021),\n", " (39.763371011, 116.322339649),\n", " (39.913461, 116.430731),\n", " (39.977501, 116.292001),\n", " (39.917275, 116.524194),\n", " (40.043889, 116.473056),\n", " (39.909691, 116.591661),\n", " (40.066778, 116.342167),\n", " (39.990531, 116.363311),\n", " (40.010696, 116.338602),\n", " (40.039091, 116.305781),\n", " (40.069228, 116.299637),\n", " (39.947101, 116.309841),\n", " (40.464911, 115.992917),\n", " (40.034231, 116.327471),\n", " (39.975028, 116.311556),\n", " (39.923121, 116.515441),\n", " (39.977237, 116.308991),\n", " (40.223035, 116.276701),\n", " (40.020209, 116.302722),\n", " (40.015131, 116.425051),\n", " (39.921181, 116.494821),\n", " (40.215364, 116.240961),\n", " (39.905001, 116.342225),\n", " (39.920889, 116.557278),\n", " (39.978994, 116.329721),\n", " (40.183415, 116.161574),\n", " (40.136843, 116.314051),\n", " (39.985921, 116.304434),\n", " (40.039222, 116.339751),\n", " (39.911641, 116.547851),\n", " (40.146371, 116.273861),\n", " (39.592431, 116.183104),\n", " (40.000241, 116.352881),\n", " (40.145755, 116.302861),\n", " (39.976213, 116.573121),\n", " (40.158691, 116.266905),\n", " (40.089172, 116.302284),\n", " (40.022108, 116.307999),\n", " (39.990301, 116.339161),\n", " (39.991541, 116.319551),\n", " (40.209278, 116.216359),\n", " (40.216783, 116.256904),\n", " (40.008061, 116.448869),\n", " (40.099121, 116.338071),\n", " (40.068287, 116.333102),\n", " (40.057821, 116.340871),\n", " (40.227885, 116.146042),\n", " (40.447056, 115.968972),\n", " (40.044503, 116.334486),\n", " (39.905408, 116.445833),\n", " (40.058111, 116.330667),\n", " (40.055121, 116.307781),\n", " (39.912917, 116.518306),\n", " (40.066421, 116.341311),\n", " (40.098981, 116.285883),\n", " (39.886901, 116.675301),\n", " (39.989352, 116.356064),\n", " (39.994901, 116.293001),\n", " (40.167991, 116.314012),\n", " (39.983211, 116.306881),\n", " (40.166291, 116.343241),\n", " (39.918681, 116.507301),\n", " (39.963305, 116.335277),\n", " (40.183997, 116.191357),\n", " (39.914001, 116.499361),\n", " (40.213888, 116.221534),\n", " (39.926101, 116.528501),\n", " (40.141792, 116.258313),\n", " (39.981691, 116.332721)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "toc": { "toc_cell": false, "toc_number_sections": true, "toc_threshold": 6, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }