In [216]:
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pykml import parser
from collections import defaultdict
from mpl_toolkits.basemap import Basemap

In [2]:
"""
You will need to download this file from the city's open data portal.
I provide a direct link below.  Update the variable declared below to
match wherever you out your copy.

https://data.lacity.org/api/geospatial/7j4e-nn4z?method=export&format=KML
"""

filename = 'data/Street Centerline.kml'

In [228]:
los_angeles_ne = [34.336781, -118.155212]
los_angeles_sw = [33.703732, -118.668167]

In [3]:
with open (filename, "r") as myfile:
    data=myfile.read().replace('\n', '')

In [8]:
root = parser.fromstring(data)

In [160]:
lats = []
lons = []
children = root.Document.Document.getchildren()
for child in children:
    if child.tag.endswith('Placemark'):
        la = child.LookAt
        lats.append(la.latitude)
        lons.append(la.longitude)

In [181]:
df = pd.DataFrame({'lat': lats, 'lon': lons})
#df.reindex(np.random.permutation(df.index))
filter = range(5000)
plt.scatter(df.lon[filter], df.lat[filter])
plt.
plt.show()



In [ ]:
ASSETID:39989
INT_ID_FRO:9182
INT_ID_TO:9183
STNUM:5633
MAPSHEET:130-5A217
ID:15875
ADRF:800
ADRT:898
ZIP_R:90012
ADLF:801
ADLT:899
ZIP_L:90012
TDIR:E
STNAME:JACKSON
STSFX:ST
SFXDIR:
STNAME_A:
STSFX_A:
SECT_ID:2798700
SHAPE_Leng:310.037908823
SYMBOL:3
STREET_DES:Collector Street
PLANNING_S:
TOOLTIP:JACKSON ST \nStreet Designation: Collector Street

In [200]:
pershing = [[-118.25281, 34.04775], [-118.24782, 34.05031]]

In [207]:
children = root.Document.Document.getchildren()
placemarkers = []
for child in children:
    if child.tag.endswith('Placemark'):
        la = child.LookAt
        lat = la.latitude
        lon = la.longitude
        if lon > pershing[0][0] and lon < pershing[1][0]:
            if lat > pershing[0][1] and lat < pershing[1][1]:
                placemarkers.append(child)

In [209]:
lats = []
lons = []
for pm in placemarkers:
    lats.append(pm.LookAt.latitude)
    lons.append(pm.LookAt.longitude)

plt.scatter(lons, lats)


Out[209]:
<matplotlib.collections.PathCollection at 0x1480e6890>

In [211]:
placemarkers[0].description


Out[211]:
'<h4>geo_7j4e-nn4z-1</h4><ul class="textattributes">    <li><strong><span class="atr-name">ASSETID</span>:</strong> <span class="atr-value">7938.0</span></li>  <li><strong><span class="atr-name">INT_ID_FRO</span>:</strong> <span class="atr-value">8949</span></li>  <li><strong><span class="atr-name">INT_ID_TO</span>:</strong> <span class="atr-value">8305</span></li>  <li><strong><span class="atr-name">STNUM</span>:</strong> <span class="atr-value">2523</span></li>  <li><strong><span class="atr-name">MAPSHEET</span>:</strong> <span class="atr-value">129A211</span></li>  <li><strong><span class="atr-name">ID</span>:</strong> <span class="atr-value">15373</span></li>  <li><strong><span class="atr-name">ADRF</span>:</strong> <span class="atr-value">401</span></li>  <li><strong><span class="atr-name">ADRT</span>:</strong> <span class="atr-value">499</span></li>  <li><strong><span class="atr-name">ZIP_R</span>:</strong> <span class="atr-value">90013</span></li>  <li><strong><span class="atr-name">ADLF</span>:</strong> <span class="atr-value">400</span></li>  <li><strong><span class="atr-name">ADLT</span>:</strong> <span class="atr-value">498</span></li>  <li><strong><span class="atr-name">ZIP_L</span>:</strong> <span class="atr-value">90013</span></li>  <li><strong><span class="atr-name">TDIR</span>:</strong> <span class="atr-value">S</span></li>  <li><strong><span class="atr-name">STNAME</span>:</strong> <span class="atr-value">SPRING</span></li>  <li><strong><span class="atr-name">STSFX</span>:</strong> <span class="atr-value">ST</span></li>        <li><strong><span class="atr-name">SECT_ID</span>:</strong> <span class="atr-value">5059300</span></li>  <li><strong><span class="atr-name">SHAPE_Leng</span>:</strong> <span class="atr-value">658.816799212</span></li>  <li><strong><span class="atr-name">SYMBOL</span>:</strong> <span class="atr-value">102.0</span></li>  <li><strong><span class="atr-name">STREET_DES</span>:</strong> <span class="atr-value">Modified Secondary Highway</span></li>  <li><strong><span class="atr-name">PLANNING_S</span>:</strong> <span class="atr-value">Downtown Street Standards</span></li>  <li><strong><span class="atr-name">TOOLTIP</span>:</strong> <span class="atr-value">SPRING ST  \\nStreet Designation: Modified Secondary Highway\\nCity Planning: Downtown Street Standards</span></li>  <li><strong><span class="atr-name">_SocrataID</span>:</strong> <span class="atr-value">nhrb-rxtw</span></li></ul>'

In [258]:
res='h'
res='c'
m = Basemap(projection='merc',llcrnrlat=los_angeles_sw[0]
            ,urcrnrlat=los_angeles_ne[0],llcrnrlon=los_angeles_sw[1]
            ,urcrnrlon=los_angeles_ne[1],resolution=res)
fig = plt.figure(figsize=(15,7))
m.fillcontinents(color='gray',lake_color='blue')
m.drawcoastlines()
m.drawstates()
m.drawrivers()
m.drawlsmask()
m.shadedrelief()
m.drawmapboundary(fill_color='white')
plt.scatter(lons, lats)
plt.show()