# Tag: parking lot

Using the footprints of parking lots and garages drawn into OpenStreetMap as a data source, the area of land in Chicagoland occupied by parking lots and garages is 247,539,968 square feet. (The data was exported using HOT Export Tool; you can replicate my export.)

That converts to:

• 5,682.71 acres
• 8.88 mi^2 (square miles)
• 22.99 km^2 (square kilometers)
• ≈ 0.26 × area of Manhattan (≈ 87 km^2 )
• 3.9% area of Chicago is parking (Chicago is ~589.56 km^2 )

(I forgot to measure the portion of this within Chicago, and now the data snapshot is gone. I fixed this in the 2019 report.)

Here’s how I know that at least 2.5 percent of the land area in Chicago is covered in parking lots and garages, as of February 5, 2017.

That’s a lot of polluted water runoff.

I grabbed all the parking lots from OpenStreetMap via Metro Extracts, which is going to be the most complete map of parking lots and garages.

Volunteer mappers, including me, drew these by tracing satellite imagery.

With the parking lots data in GIS, I can count their area in square feet, which comes out to 160,075,942.42. Convert that to square miles and you get 5.74.

`5.74/227.3*100 = 2.5 percent`

The last snapshot of parking lot data I have is from February 2016, when only 3.39 square miles of parking lots have been drawn.

There are still many more parking lots to be drawn!

This tutorial is a direct response to a question about which Chicago beach has the largest parking lot. Matt Nardella of Moss Design, in a response to a Twitter-based conversation about Alderman Cappleman’s suggestion that perhaps Montrose beach has too much parking, researched on Wikipedia to find the answer. This is where it said that Montrose beach has the largest parking lot of any of Chicago’s 27 beaches.

Now we’re going to try and prove which beach has the largest associated parking lot.

This tutorial will teach how you to (1) display Chicago beaches, (2) download data held in OpenStreetMap, (3) find the parking lots within the OpenStreetMap data, (4) find the parking lots near the beaches, and (5) calculate each parking lot’s area (in square feet). You can use this tutorial to accomplish any one of these three tasks, or the same tasks but on a different part of OpenStreetMap data (like the area of indoor shopping malls).

You’ll need the QGIS software before starting. You’ll also need at least 500 MB of free space. Start a project folder called “Biggest Parking Lots in Chicago” and make two more folders, within this folder, called “origdata” and “data”.

First, let’s get some data about beaches

Since we only want to know about the parking lots near Chicago beaches we need to get a dataset that locates them. This data is presumably within the same OpenStreetMap extract we’re waiting for, but it’s best to go to the most reliable source.

1. Download the Parks – Facilities & Features shapefile from the City of Chicago open data portal. I’ve already verified that it has all the beaches (as points).
2. Open the parks shapefile in a new document in QGIS (call it “map01a.qgs”). You might not see the data so right-click the parks layer and select “Zoom to layer extent”.
3. Filter out all the points that aren’t beaches by using the query builder. Right-click the layer and select “Filter…” and input this filter expression: “FACILITY_N” = ‘BEACH’
4. Your map will now show 26 points along an invisible lakefront and then the beach at Humboldt Park.
5. For the rest of this tutorial we’ll reference the beaches layer as ParkFacilities.

Second, let’s get some data from OpenStreetMap

The easiest way to grab data from OpenStreetMap is by using QGIS, a free, open source desktop GIS application that has myriad plugins that match the capabilities of the heavyweight ESRI ArcGIS line of software. We can download OpenStreetMap data straight into QGIS.

2. We want as much data as will cover the beaches information so in the Extent section of the dialog box choose “From layer” and select the beaches layer (called ParkFacilities).
3. Browse to the “origdata” folder you created in the first task and choose the filename “chicago.osm”.
4. Click OK and watch the progress meter tell you how much data you’ve downloaded from OpenStreetMap.
6. Drag the chicago.osm file from your file system into the QGIS Layers list. A dialog box will appear asking which layers you want to add.
7. Select the layer that has the type “MultiPolygon”. This represents areas like buildings and parking lots.

Third, display the OpenStreetMap data and eliminate everything but the parking lots

We only want to compare parking lots in this dataset with beaches in the previous dataset so we need to eliminate everything from the OpenStreetMap data that’s not a parking lot. Since OSM data depends on tags we can easily select and show all the objects where “amenity” = “parking”.

1. Filter out all the polygons that aren’t parking lots by using the query builder. Right-click the layer and select “Filter…” and input this filter expression: “amenity” = ‘parking’. Hopefully all the parking lots have been drawn so we can analyze a complete dataset!
2. Your map will now show little squares, rectangles, and myriad odd shapes that represent parking lots around Chicagoland. (Most of these have been drawn by hand.) It should look like Image XXX.
3. Since this data is stored in a projection with the codename of EPSG:3435 and the OpenStreetMap data is stored with codename of EPSG:4326 we need to convert the beaches to match the beaches (because we’re going to be using feet as a  measuring distance instead of degrees).
4. Right-click the layer and select “Save As…” and choose the format “ESRI Shapefile”. Then click the top Browse button and select a location on your hard drive for the converted file.
5. For “CRS” choose “Selected CRS”. Then click the bottom Browse button and search for the EPSG with the codename 3435. Select the checkbox named “Add saved file to map” so the new layer will be immediately added to our map.

Fourth, select all the parking lots near a beach

This task will select all the parking lots near the beaches. I chose 2,000 feet but you could easily choose a different distance. You might want to measure on Google Earth some minimum and maximum distances between beaches and their respective, associated parking lots.

(This task is easier using PostGIS which has a ST_DWithin function to find objects within a certain distance because we can avoid having to create the buffer in QGIS.)

1. Create a 2,000 feet buffer. Select Vector>Geoprocessing tools>Buffer.
2. In the Buffer(s) dialog box, select ParkFacilities (which has your beaches) as the “Input vector layer”. Choose a distance of 2000 (the units are pre-chosen by the projection and since we’re using a projection that’s in feet, the distance unit will be feet).
3. Browse to your project folder’s “data” folder and save the “Output shapefile” as “beaches buffer 2000ft.shp”.
4. Click “Add results to canvas” and then click OK.
5. Double check that 2,000 feet was enough to select the parking lots. In my case, I see that the point representing Montrose beach was further than 2,000 feet away from a parking lot.
6. Let’s do it again but with 3,000 feet this time, and saving the “Output shapefile” as “beaches buffer 3000ft.shp”.
7. This time it worked and the nearest parking lots are now in the 3,000 feet radius buffer. You can see in Image XXX how the two concentric circles stretch out from the beach point towards the parking lots.

We’re not done. We’re next going to use our newly created 3,000 feet buffers to tell us which parking lots are in them. These will be presumed to be our beach parking lots.

1. Use the “Select by location” tool to find the beaches that intersect our 3,000 feet buffers. Select Vector>Research Tools>Select by location.
2. Follow me: we want to select features in parking 3435 [our parking lots] that intersect features in beaches buffer 3000ft [our beaches]. We’ll modify the current selection by creating a new selection so that we don’t accidentally include any features previously selected.
3. You’ll now see a bunch of parking lots turn yellow meaning they are actively selected.
4. Let’s save our selected parking lots as a new file so it will be easier to analyze just them. Right-click “parking 3435” and select “Save Selection As…” (it’s important to choose “Save Selection As” instead of “Save As” because the former will save just the parking lots we’ve selected).
5. Save it as “selected parking 3435.shp” in your “data” folder. The CRS should be EPSG:3435 (NAD83 Illinois StatePlane East Feet). Check off “Add saved file to map” and click OK.
6. Turn off all other layers except ParkFacilities to see what we’re left with and you’ll see what I show in Image XXX.

Fifth, let’s calculate

Calculating the area is probably the easiest part of this tutorial.

1. Close all attribute tables you may have opened.
2. Select Vector>Geometry Tools>Export/Add geometry columns and choose “selected parking 3435” as your input vector layer.
3. Leave all other options as-is and press OK. When told about how QGIS can’t access something simultaneously, choose “Yes”.
4. QGIS should have told you that “selected parking 3435” has been updated. Right-click the layer and choose “Open Attribute Table”.
5. Scroll to the far right and you’ll see a new column called AREA. This represents the parking lot’s area in square feet.
6. Click on the AREA column heading to sort it from smallest to largest. Scroll to the bottom of the list and you’ll find the parking lot with the largest area. Double check – is it near a beach?

Conclusion

With my analysis, and with the data available from OpenStreetMap when I created this tutorial, there are three abnormally large parking lots:

1. A linear lot near the Lincoln Park Zoo and North Avenue beach (6.8 acres)
2. A curving lot near Montrose Beach (4.75 acres)
3. An irregularly shaped lot near Montrose Beach (4.5 acres)

There’s one major caveat in this analysis and that’s the missing parking lots on beaches south of Navy Pier. This means that no one has drawn them into OpenStreetMap so it’s time to start editing!

20 minutes ago, when the Twitter outage probably corrected itself, the Chicago Fire Department’s Office of News Affair tweeted three photos, without comment. I’ve posted them in reverse order.

Tweet 3

The third photo (above) shows a BMW X5 SUV on top of a Jaguar sedan and Mercedes E320 sedan in a multi-level parking garage. The parking garage appears to be a split-level, and it seems the BMW SUV was moved forward from an upper level to the tops of these cars, which you can see in the second photo (below).

Tweet 2

Tweet 1

The photos appear to have been taken with a cellphone, using the flash. The license plates are obscured by their reflection of the flash. The car broke through the cables leading me to ask two questions: What is the level of tension on the cables? How fast did the car travel?

The @CFDMedia account is often cryptic. The Chicago Sun-Times provided more information an hour later:

A 74-year-old man driving a 2012 BMW X5 crashed through cable barriers separating two levels of a Loop parking garage Thursday — and his SUV came to a stop atop a 2005 Jaguar and a 2003 Mercedes-Benz parked on the level beneath him, police said.

Police cited the 74-year-old with driving too fast for conditions.

Updated 16:18 to add a report from the Chicago Sun-Times.

I moved to Avondale (north of Logan Square) in the final weekend of January 2011. I didn’t want to abandon Bridgeport but I didn’t want to find a new roommate and a great opportunity opened up. I miss Bridgeport.

So now my daily riding to friends’ houses, bars, clubs, UIC, or the library, happens most often on Milwaukee Avenue. Both are diagonal streets but I live 1.6 kilometers from Milwaukee Avenue and 350 meters from Elston Avenue.Â To be more efficient, I should more often ride on Elston Avenue.

So why do I prefer Milwaukee Avenue? In response to a thread on The Chainlink, “Milwaukee v. Elston,” I posted a photo essay with each photo documenting and describing problems that collectively are unique to Elston Avenue. The series starts with a photo of the Ashland/Elston/Armitage intersection and moves northbound through the Elston Avenue Strip Mall Zoo* ending at Diversey and Western Avenues.

Riding through this intersection is like being a gazelle in a savannah with hungry lions. At least for 340 feet. There are so many opportunities to get hit by a car, especially going northbound right before reaching Ashland Avenue (not pictured).

View the rest of the photos in “Why I don’t like riding on Elston.”

*Strip malls are terrible urban design. They’re inhospitable to everyone, even those who drive. At some point every visitor will be walking through a parking lot to get to the front door, risking life and limb, breathing fumes, and walking through leaked automobile oil.

Afterword: The Chicago bike crash map shows few crashes on Elston Avenue relative to Milwaukee Avenue. But the number of people cycling on Elston Avenue is unknown – we cannot make a comparison.