{ "metadata": { "name": "", "signature": "sha256:b3619184a38a0e1b7ba147ee218391404b22d3be728f43a12f1042e73b555af4" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Read Overpass-API to Python Pandas Dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [Overpass API](http://wiki.openstreetmap.org/wiki/Overpass_API) provides access to the data behind the Openstreetmaps Map Data.\n", "The [Overpass-Turbo](http://overpass-turbo.eu/) is the easyiest way to test requests and get the correct code to ask the database." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import requests\n", "import json\n", "pd.set_option('display.max_columns', 200)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 70 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Kreuzungen in OSM finden" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Annahme: Eine Kreuzung ist dadurch definiert, dass es ein `Node` gibt, der mindestens zu 2 verschiedenen `highways` geh\u00f6rt." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gebiet festlegen, am besten mit einer [Bounding Box](http://boundingbox.klokantech.com/)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Get yours at: http://boundingbox.klokantech.com/\n", "bbox = [13.521945,50.919085,13.976063,51.18772]\n", "\n", "# Links unten\n", "minLat = bbox[1]\n", "minLon = bbox[0]\n", "\n", "# Rechts oben\n", "maxLat = bbox[3]\n", "maxLon = bbox[2]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 71 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Construct the Overpass Query String" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Request from [Overpass-Turbo](http://overpass-turbo.eu/)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "tags = ['primary','secondary','secondary_link','tertiary','tertiary_link','living_street','residential']\n", "objects = ['way'] # like way, node, relation\n", "\n", "compactOverpassQLstring = '[out:json][timeout:60];('\n", "for tag in tags:\n", " for obj in objects:\n", " compactOverpassQLstring += '%s[\"highway\"=\"%s\"](%s,%s,%s,%s);' % (obj, tag, minLat, minLon, maxLat, maxLon)\n", "compactOverpassQLstring += ');out body;>;out skel qt;' " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 72 }, { "cell_type": "code", "collapsed": false, "input": [ "osmrequest = {'data': compactOverpassQLstring}\n", "osmurl = 'http://overpass-api.de/api/interpreter'\n", "\n", "# Ask the API\n", "osm = requests.get(osmurl, params=osmrequest)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 73 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Reformat the JSON to fit in a Pandas Dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The JSON can't be directyl imported to a Pandas Dataframe:\n", "\n", "Thanks to [unutbu from stackoverflow.com](http://stackoverflow.com/questions/24848416/expected-string-or-unicode-when-reading-json-with-pandas) for fiddling this out!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "osmdata = osm.json()\n", "osmdata = osmdata['elements']\n", "for dct in osmdata:\n", " if dct['type']=='way':\n", " for key, val in dct['tags'].iteritems():\n", " dct[key] = val\n", " del dct['tags']\n", " else:\n", " pass # nodes" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 74 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Now put everything to the Pandas Dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "osmdf = pd.DataFrame(osmdata)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 75 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Look at the whole Dataframe" ] }, { "cell_type": "code", "collapsed": true, "input": [ "osmdf.tail(5)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FIXMEaccessaccess:N3access:conditionalaccess:lanesaddr:cityaddr:countryaddr:postcodeaddr:streetaddr:suburbagriculturalalt_nameamenityareaarea:highwaybicyclebicycle:backwardbicycle:forwardbridgebridge_namebridge_typebusbus:lanes:backwardbus:lanes:forwardbusway:rightchange:lanes:backwardchange:lanes:forwardclass:bicyclecollection_timescommentcomment:historyconstructionconstruction:endconstruction:obstructionconstruction:startcoveredcreated_bycuttingcyclewaycycleway:bicyclecycleway:footcycleway:forwardcycleway:leftcycleway:left:bicyclecycleway:left:footcycleway:onewaycycleway:rightcycleway:right:bicyclecycleway:right:onewaycycleway:right:segregatedcycleway:right:smoothnesscycleway:right:surfacecycleway:segregatedcycleway:smoothnessday_offday_ondeliverydescriptiondesignationdestinationdestination:backwarddestination:forwarddestination:lanesdestination:lanes:forwarddestination:refdestination:ref:backwarddisused:highwayelectrifiedembankmentest_widthfake_gaslightfixmeflood_pronefootfootwayfootway:leftfootway:rightforestryfrequencygaugegoodshazmat:backwardhazmat:forwardhgvhgv:backwardhgv:conditionalhgv:forwardhgv:hazardhighwayhistorical_namehistoryhorsehour_offhour_onidimageinclineint_nameint_refis_in...motorroadmtbmtb:scalemtb:scale:uphillnamename:bename:dename:esnarrownat_refnodesnoexitnotenote:FIXMEnote:maxheightold_nameold_name:1897onewayoneway:bicycleovertakingovertaking:hgvparking:condition:bothparking:condition:both:maxstayparking:condition:both:time_intervalparking:condition:leftparking:condition:left:fee_per_hourparking:condition:left:maxstayparking:condition:left:time_intervalparking:condition:maxstayparking:condition:rightparking:condition:right:fee_per_hourparking:condition:right:maxstayparking:condition:right:time_intervalparking:condition:right:vehiclesparking:laneparking:lane:bothparking:lane:leftparking:lane:left:capacityparking:lane:left:parallelparking:lane:rightparking:lane:right:capacityparking:lane:right:diagonalparking:lane:right:parallelplacementplannedpostal_codepsvrailwayrefsegregatedserviceshort_namesidewalksidewalk:rightsmokingsmoothnesssourcesource:highwaysource:maxheightsource:maxspeedsource:maxspeed:backwardsource:maxspeed:conditionalsource:maxspeed:forwardsource:maxspeed:hgvsource:namesource:surfacesource:widthsource_refsurfacesurface:leftsurface:righttaxitrackstracktypetraffic_calmingtraffic_signtram:lanes:backwardtram:lanes:forwardtree_linedtunnelturnturn:lanesturn:lanes:backwardturn:lanes:forwardtypevehiclevehicle:backwardvehicle:forwardvehicle:forward:conditionalvoltagewheelchairwidthwikipediawikipedia:dexmas:day_datexmas:featurexmas:namexmas:opening_hourszone:maxspeedzone:traffic
100538 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 390316202 NaN NaN NaN NaN NaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN node NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100539 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1841220477 NaN NaN NaN NaN NaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN node NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100540 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 60619766 NaN NaN NaN NaN NaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN node NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100541 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 60619767 NaN NaN NaN NaN NaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN node NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100542 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 457976561 NaN NaN NaN NaN NaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN node NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
\n", "

5 rows \u00d7 252 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 76, "text": [ " FIXME access access:N3 access:conditional access:lanes addr:city \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " addr:country addr:postcode addr:street addr:suburb agricultural \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " alt_name amenity area area:highway bicycle bicycle:backward \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " bicycle:forward bridge bridge_name bridge_type bus bus:lanes:backward \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " bus:lanes:forward busway:right change:lanes:backward \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " change:lanes:forward class:bicycle collection_times comment \\\n", "100538 NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN \n", "\n", " comment:history construction construction:end construction:obstruction \\\n", "100538 NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN \n", "\n", " construction:start covered created_by cutting cycleway \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " cycleway:bicycle cycleway:foot cycleway:forward cycleway:left \\\n", "100538 NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN \n", "\n", " cycleway:left:bicycle cycleway:left:foot cycleway:oneway \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " cycleway:right cycleway:right:bicycle cycleway:right:oneway \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " cycleway:right:segregated cycleway:right:smoothness \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " cycleway:right:surface cycleway:segregated cycleway:smoothness day_off \\\n", "100538 NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN \n", "\n", " day_on delivery description designation destination \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " destination:backward destination:forward destination:lanes \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " destination:lanes:forward destination:ref destination:ref:backward \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " disused:highway electrified embankment est_width fake_gaslight fixme \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " flood_prone foot footway footway:left footway:right forestry frequency \\\n", "100538 NaN NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN NaN \n", "\n", " gauge goods hazmat:backward hazmat:forward hgv hgv:backward \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " hgv:conditional hgv:forward hgv:hazard highway historical_name history \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " horse hour_off hour_on id image incline int_name int_ref \\\n", "100538 NaN NaN NaN 390316202 NaN NaN NaN NaN \n", "100539 NaN NaN NaN 1841220477 NaN NaN NaN NaN \n", "100540 NaN NaN NaN 60619766 NaN NaN NaN NaN \n", "100541 NaN NaN NaN 60619767 NaN NaN NaN NaN \n", "100542 NaN NaN NaN 457976561 NaN NaN NaN NaN \n", "\n", " is_in ... motorroad mtb mtb:scale mtb:scale:uphill name name:be \\\n", "100538 NaN ... NaN NaN NaN NaN NaN NaN \n", "100539 NaN ... NaN NaN NaN NaN NaN NaN \n", "100540 NaN ... NaN NaN NaN NaN NaN NaN \n", "100541 NaN ... NaN NaN NaN NaN NaN NaN \n", "100542 NaN ... NaN NaN NaN NaN NaN NaN \n", "\n", " name:de name:es narrow nat_ref nodes noexit note note:FIXME \\\n", "100538 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " note:maxheight old_name old_name:1897 oneway oneway:bicycle \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " overtaking overtaking:hgv parking:condition:both \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " parking:condition:both:maxstay parking:condition:both:time_interval \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:condition:left parking:condition:left:fee_per_hour \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:condition:left:maxstay parking:condition:left:time_interval \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:condition:maxstay parking:condition:right \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:condition:right:fee_per_hour parking:condition:right:maxstay \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:condition:right:time_interval parking:condition:right:vehicles \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:lane parking:lane:both parking:lane:left \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " parking:lane:left:capacity parking:lane:left:parallel \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:lane:right parking:lane:right:capacity \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " parking:lane:right:diagonal parking:lane:right:parallel placement \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " planned postal_code psv railway ref segregated service short_name \\\n", "100538 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " sidewalk sidewalk:right smoking smoothness source source:highway \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " source:maxheight source:maxspeed source:maxspeed:backward \\\n", "100538 NaN NaN NaN \n", "100539 NaN NaN NaN \n", "100540 NaN NaN NaN \n", "100541 NaN NaN NaN \n", "100542 NaN NaN NaN \n", "\n", " source:maxspeed:conditional source:maxspeed:forward \\\n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", " source:maxspeed:hgv source:name source:surface source:width source_ref \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " surface surface:left surface:right taxi tracks tracktype \\\n", "100538 NaN NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN NaN \n", "\n", " traffic_calming traffic_sign tram:lanes:backward tram:lanes:forward \\\n", "100538 NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN \n", "\n", " tree_lined tunnel turn turn:lanes turn:lanes:backward \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " turn:lanes:forward type vehicle vehicle:backward vehicle:forward \\\n", "100538 NaN node NaN NaN NaN \n", "100539 NaN node NaN NaN NaN \n", "100540 NaN node NaN NaN NaN \n", "100541 NaN node NaN NaN NaN \n", "100542 NaN node NaN NaN NaN \n", "\n", " vehicle:forward:conditional voltage wheelchair width wikipedia \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " wikipedia:de xmas:day_date xmas:feature xmas:name xmas:opening_hours \\\n", "100538 NaN NaN NaN NaN NaN \n", "100539 NaN NaN NaN NaN NaN \n", "100540 NaN NaN NaN NaN NaN \n", "100541 NaN NaN NaN NaN NaN \n", "100542 NaN NaN NaN NaN NaN \n", "\n", " zone:maxspeed zone:traffic \n", "100538 NaN NaN \n", "100539 NaN NaN \n", "100540 NaN NaN \n", "100541 NaN NaN \n", "100542 NaN NaN \n", "\n", "[5 rows x 252 columns]" ] } ], "prompt_number": 76 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Look at some Tags" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for tag in osmdf.highway.unique():\n", " print tag" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "residential\n", "living_street\n", "secondary\n", "tertiary\n", "primary\n", "secondary_link\n", "tertiary_link\n", "nan\n" ] } ], "prompt_number": 77 }, { "cell_type": "code", "collapsed": false, "input": [ "for tag in osmdf.maxspeed.unique():\n", " print tag" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "30\n", "nan\n", "50\n", "70\n", "60\n", "100\n", "20\n", "40\n", "5\n", "80\n", "10\n", "walk\n", "7\n", "8\n", "5 mph\n" ] } ], "prompt_number": 78 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "The interesting ones are" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nur ways behalten, die auch als `highway` gekennzeichnet sind und einen Namen haben." ] }, { "cell_type": "code", "collapsed": false, "input": [ "highwaydf = osmdf[['id', 'highway', 'lanes', 'name', 'maxspeed', 'nodes', 'ref']].dropna(subset=['name','highway'], how='any')\n", "highwaydf.tail(5)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idhighwaylanesnamemaxspeednodesref
16374 293501216 secondary NaN Tiergartenstra\u00dfe 50 [373247978, 373247792, 373247777, 373247621, 2... NaN
16375 293501217 secondary NaN Tiergartenstra\u00dfe 50 [2971077364, 18630288, 796746061, 796746056, 3... NaN
16376 293509214 residential NaN Lockwitzbachweg NaN [773905499, 2693555506, 2261360369, 206122406] NaN
16377 293808792 residential NaN Talstra\u00dfe NaN [2973933926, 2973933927] NaN
16378 293808793 residential NaN Talstra\u00dfe NaN [2973933927, 304417978] NaN
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 79, "text": [ " id highway lanes name maxspeed \\\n", "16374 293501216 secondary NaN Tiergartenstra\u00dfe 50 \n", "16375 293501217 secondary NaN Tiergartenstra\u00dfe 50 \n", "16376 293509214 residential NaN Lockwitzbachweg NaN \n", "16377 293808792 residential NaN Talstra\u00dfe NaN \n", "16378 293808793 residential NaN Talstra\u00dfe NaN \n", "\n", " nodes ref \n", "16374 [373247978, 373247792, 373247777, 373247621, 2... NaN \n", "16375 [2971077364, 18630288, 796746061, 796746056, 3... NaN \n", "16376 [773905499, 2693555506, 2261360369, 206122406] NaN \n", "16377 [2973933926, 2973933927] NaN \n", "16378 [2973933927, 304417978] NaN " ] } ], "prompt_number": 79 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Clean a little bit up" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zu kleine Stra\u00dfen raus werfen" ] }, { "cell_type": "code", "collapsed": false, "input": [ "highwaydf = highwaydf[highwaydf['highway'].isin(tags)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 80 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Replace `NaN` with word `unknown` and reset the index" ] }, { "cell_type": "code", "collapsed": false, "input": [ "highwaydf = highwaydf.fillna(u'unknown').reset_index(drop=True)\n", "highwaydf.tail(5)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idhighwaylanesnamemaxspeednodesref
14645 293501216 secondary unknown Tiergartenstra\u00dfe 50 [373247978, 373247792, 373247777, 373247621, 2... unknown
14646 293501217 secondary unknown Tiergartenstra\u00dfe 50 [2971077364, 18630288, 796746061, 796746056, 3... unknown
14647 293509214 residential unknown Lockwitzbachweg unknown [773905499, 2693555506, 2261360369, 206122406] unknown
14648 293808792 residential unknown Talstra\u00dfe unknown [2973933926, 2973933927] unknown
14649 293808793 residential unknown Talstra\u00dfe unknown [2973933927, 304417978] unknown
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 81, "text": [ " id highway lanes name maxspeed \\\n", "14645 293501216 secondary unknown Tiergartenstra\u00dfe 50 \n", "14646 293501217 secondary unknown Tiergartenstra\u00dfe 50 \n", "14647 293509214 residential unknown Lockwitzbachweg unknown \n", "14648 293808792 residential unknown Talstra\u00dfe unknown \n", "14649 293808793 residential unknown Talstra\u00dfe unknown \n", "\n", " nodes ref \n", "14645 [373247978, 373247792, 373247777, 373247621, 2... unknown \n", "14646 [2971077364, 18630288, 796746061, 796746056, 3... unknown \n", "14647 [773905499, 2693555506, 2261360369, 206122406] unknown \n", "14648 [2973933926, 2973933927] unknown \n", "14649 [2973933927, 304417978] unknown " ] } ], "prompt_number": 81 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Now get all Nodes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "nodes = []\n", "for dct in osmdata:\n", " #print dct\n", " if dct['type']=='way':\n", " pass\n", " elif dct['type']=='node':\n", " nodes.append(dct)\n", " else:\n", " pass" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 82 }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf = pd.DataFrame(nodes)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 83 }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf.tail(5)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idlatlontype
84159 390316202 51.188021 13.933286 node
84160 1841220477 51.188789 13.968988 node
84161 60619766 51.187108 13.967311 node
84162 60619767 51.189634 13.969590 node
84163 457976561 51.188113 13.968319 node
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 84, "text": [ " id lat lon type\n", "84159 390316202 51.188021 13.933286 node\n", "84160 1841220477 51.188789 13.968988 node\n", "84161 60619766 51.187108 13.967311 node\n", "84162 60619767 51.189634 13.969590 node\n", "84163 457976561 51.188113 13.968319 node" ] } ], "prompt_number": 84 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Find all highways belonging to a node" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Jeden Knoten durch gehen und schauen, ob er bei einer Stra\u00dfe genutzt wird. Wenn ja, die Stra\u00dfen IDs zur\u00fcck geben." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def gethighwayids(nodeid):\n", " highwayids = []\n", " for n, nodes in enumerate(highwaydf['nodes']):\n", " for nid in nodes: # alle nodes des highways\n", " if nid == int(nodeid):\n", " highwayids.append(highwaydf['id'][n])\n", " return highwayids" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 85 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dauert sehr sehr lang, wenn BoundingBox gro\u00df gew\u00e4hlt wurde!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf['highwayids'] = nodesdf['id'].apply(gethighwayids)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 86 }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf.head(10)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idlatlontypehighwayids
0 32456409 50.924436 13.525700 node []
1 87215458 50.921920 13.521153 node [10313904]
2 87215459 50.921850 13.521617 node [10313904]
3 87215462 50.921374 13.524183 node [10313904]
4 87215463 50.921254 13.525067 node [10313904]
5 87215464 50.921168 13.525685 node [10313904]
6 87215465 50.921135 13.526123 node [10313904]
7 614864158 50.921536 13.523308 node [10313904]
8 32456411 50.923717 13.523962 node []
9 32456413 50.923199 13.522634 node []
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 87, "text": [ " id lat lon type highwayids\n", "0 32456409 50.924436 13.525700 node []\n", "1 87215458 50.921920 13.521153 node [10313904]\n", "2 87215459 50.921850 13.521617 node [10313904]\n", "3 87215462 50.921374 13.524183 node [10313904]\n", "4 87215463 50.921254 13.525067 node [10313904]\n", "5 87215464 50.921168 13.525685 node [10313904]\n", "6 87215465 50.921135 13.526123 node [10313904]\n", "7 614864158 50.921536 13.523308 node [10313904]\n", "8 32456411 50.923717 13.523962 node []\n", "9 32456413 50.923199 13.522634 node []" ] } ], "prompt_number": 87 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Identify a Junction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Node with at least 3 different highways" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def identifyjunction(highwayids):\n", " #print highwayids\n", " if len(highwayids) < 2:\n", " return False\n", " elif len(highwayids)==2:\n", " # Wenn beide Highways den gleichen Namen haben, ist es nur\n", " # ein Zwischenst\u00fcck und keine Kreuzung\n", " name1=unicode(highwaydf[highwaydf['id']==highwayids[0]]['name'].values)\n", " name2=unicode(highwaydf[highwaydf['id']==highwayids[1]]['name'].values)\n", " if name1==name2:\n", " #print('%s=%s' % (name1, name2))\n", " return False\n", " else:\n", " return True\n", " else:\n", " return True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 88 }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf['junction'] = nodesdf['highwayids'].apply(identifyjunction)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 89 }, { "cell_type": "code", "collapsed": false, "input": [ "nodesdf.tail(10)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idlatlontypehighwayidsjunction
84154 260131313 51.187867 13.907815 node [23992944] False
84155 260131314 51.187750 13.908055 node [23992944] False
84156 115777097 51.187300 13.932714 node [168364168] False
84157 115776949 51.190797 13.933067 node [168364168] False
84158 115777099 51.188737 13.933498 node [168364168] False
84159 390316202 51.188021 13.933286 node [168364168] False
84160 1841220477 51.188789 13.968988 node [173268928] False
84161 60619766 51.187108 13.967311 node [173268928, 173453037] False
84162 60619767 51.189634 13.969590 node [173268928] False
84163 457976561 51.188113 13.968319 node [173268928] False
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 90, "text": [ " id lat lon type highwayids junction\n", "84154 260131313 51.187867 13.907815 node [23992944] False\n", "84155 260131314 51.187750 13.908055 node [23992944] False\n", "84156 115777097 51.187300 13.932714 node [168364168] False\n", "84157 115776949 51.190797 13.933067 node [168364168] False\n", "84158 115777099 51.188737 13.933498 node [168364168] False\n", "84159 390316202 51.188021 13.933286 node [168364168] False\n", "84160 1841220477 51.188789 13.968988 node [173268928] False\n", "84161 60619766 51.187108 13.967311 node [173268928, 173453037] False\n", "84162 60619767 51.189634 13.969590 node [173268928] False\n", "84163 457976561 51.188113 13.968319 node [173268928] False" ] } ], "prompt_number": 90 }, { "cell_type": "code", "collapsed": false, "input": [ "junctionsdf = nodesdf[['id','lat','lon']][nodesdf['junction']==True]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 91 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Export to CSV" ] }, { "cell_type": "code", "collapsed": false, "input": [ "junctionsdf.to_csv('junctions.csv', index=False)\n", "print('done.')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "done.\n" ] } ], "prompt_number": 92 } ], "metadata": {} } ] }