GIS Experiment – Brooklyn Bus Stop to Pop

Is population density a driving force in the placement of Brooklyn bus stops?


New York City carries the very disappointing title of the city with the longest average commute times. Residents are utilizing mixed methods of transportation every day to reach either their place of employment, school, or even grocery store. The MTA in particular has a weekday ridership of 8,758,708(1). That means 8,758,708 swipes, dips, and rejections all happening within a 24-hour period. With the city constantly moving and facing a multitude of quandaries such as the decision between moving due to gentrification hiking rents in an area, or an inquiry as to whether the iced espresso caramel macchiato trumps the café mocha, questions pertaining to the formulaic particulate dissemination that the MTA controls is consistently overlooked.

Out of the 357 bus routes that exist over 2,869 miles, 55 routes are in Brooklyn alone. However, are there outside factors that determine the architecture for those routes? Stops can exist anywhere from a few hundred feet to a few hundred yards from each other and the question then to ask is what spatial factors play a role in determining those stop locations. Bus stops contain a certain amount of fluidity: their placement does not take months of work and a stop could be moved within a few hours. Subway maintenance and construction could take anywhere from a couple of months to a few years. The driving forces, however controlling the stop placement are still an enigma to anyone outside of operation controls in the MTA. For this cartographic studio, I decided to take a spatial approach to the question by asking if population density a driving force in the placement of Brooklyn bus stops. Will a high population merit more bus stops – or am I trying to attach a factor to arbitrary methodology.

Conceptual Model

The idea behind this project was to see if population was a potential determining factor in the placement of bus stops. Would there be a positive correlation between population and the number of bus stops in Brooklyn? For this process, I would need to first compile data on Brooklyn population broken down into small zones. I would also need to find data on both the bus stops in Brooklyn and the bus routes that are included with the stops. I would then need to most likely break the data down to ensure that New York City data, in general, is filtered for just the results in Brooklyn to have a smaller focus present in my analysis. I would then need to project that data, and run a few different processes to make sure I see if there’s a specific relation. I would first buffer to eliminate any possible multi-directional stops that are within a certain contained distance from one another. I would then create new Theissen polygons based on these new buffered areas and join the results to find how many bus stops are contained within each population zone.

Concept Model

After the data is represented, I believe that population will be a factor in determining areas of high bus-stop concentration.


Because the MTA spans a very large area covering most of New York City, I decided to limit my study to Brooklyn alone because the concentration would be easier to work with and provide more focused results. The data I used for population and Brooklyn’s projection was from Bytes of the Big Apple’s New York City census data from 2010(2). The New York City shape file had to be corrected to just Brooklyn and to do that, all counties besides Kings County in the attribute table were eliminated. Following that, the population data collected from the data repository was specific to Kings County so it already lined up with my shape file’s limited projection. Then, the data was joined on the borough code column contained in the data and the first set was created.

To find the NYC transit data became an entirely different process because the MTA releases data only for projects with specific development goals or app creation. Thankfully, the GIS Lab at the Newman Library of Baruch College, CUNY provided datasets for both the MTA New York City bus stops and bus routes based on borough(3). Along with this data, they also had data pertaining to subway lines and stops which I downloaded to compare against as an extra factor after my initial analysis. The bus stop data provided by this repository was point data and the bus routes were represented as line data.

Representing the Brooklyn population map as an initial backdrop provided a good base to project the bus route and stop info onto. For this, I used a choropleth map with five breaks to represent five different breaks in population numbers. This helped make the population zones more understandable so I can see if there are any initial findings when I first add the bus stop and route layer data on top of it.

Cloropleth map


Once the data was successfully placed on top of the Brooklyn base layer, I had to edit the data to adjust certain figures. I had to account for the fact that some bus stops are less than 100 feet apart and utilize them as one stop area. I had to also make sure that I accounted for the fact that some people in certain census areas could travel to bus stops in other census areas. I needed to make sure that some stops had a further reach than just a single point within a census boundary. To successfully account for this, certain alterations had to be made to the bus stop layer.

The first step I took was buffering all bus stops and created 100-foot boundaries. I made sure to then dissolve the overlaps to ensure that the data would then merge to become single polygons rather than just look for particular boundaries. I then had to represent the new buffer zones created as individual polygons. When initially buffering, the data didn’t provide unique new polygons, so the “Multipart-to-Singlepart” tool had to be utilized in this case.

Buff Zones and Bus Stops

The next step after this was to create new points based on the centers of these polygons. These would then represent our new bus stops after accounting for the stops that were within that set boundary of each other. To do this, the “Feature-to-Point” function was used to find the central points of the new individual polygons. The buffers were then removed and these new points represented this new edited layer.

The next step involved figuring out how to best represent the overlap where bus stop coverage wasn’t limited to its single containing zone. This is due to people from a certain census area of a set population crossing over to another census area where a particular bus stop exists. For this, I created Theissen polygons based on the new central points created from our original buffer zones. Thiessen polygons create areas around selected points so that any location inside this newly created area is closest to the original point than any other point.

T Polygon

After that, the data from these Thiessen polygons was then joined to the original census areas to figure out how many newly created polygons existed in each one. This would then provide the answer to how many bus stops existed within each census area. After this, for the purposes of representation, the census population data was still represented as a choropleth map but the bus stops were then represented as point symbols with each point representing five bus stops.

Model Builder


Initial Results

After all of the geoprocessing steps, the resulting visualization helped to answer my initial geographic inquiry. After the join and representation of the data, the results show an even distribution of stops across the borough without any areas of increased concentration. Areas that initially had higher population didn’t necessarily have a high quantity of stops and vice versa.

My initial hypothesis provided the idea that there was a positive correlation between population and stop quantity. However, upon seeing these results, it turns out that there is no direct, positive correlation between the two. There were even cases of multiple zones of extremely varying population containing the same exact number of stops.


Population # of Stops
1,311 17
4,344 17
7,140 17

Final Map


After the initial results, I decided to normalize my bus stop data based on the size of these census areas. This would ask the spatial question in regards to the size of the zone truly accounting for the number of stops that it contains. I took my original join and created a choropleth map highlighting the stop numbers per census zone, normalized by the area of each zone. It turns out, zones of greater area don’t truly account for the number of stops within them. The amount of stops ends up being lacking in larger areas except for parts of Coney Island. But areas like Prospect Park which once hosted a plethora of stops has a significant reduction because the span doesn’t reflect the amount of stops – in fact, there’s a significant lack of stops in these areas to account for their size.



When it comes time to increase for potential positive population shifts, a fleet increase could compensate rather than an increase or spacing of a multitude of stops. Further analysis of different factors such as income, subway proximity, and neighborhood age might yield different results. It might even be a case of a multitude of factors involved in an algorithm determining the stop location placement. However, it is not population that dictates the spacing of bus stops throughout Brooklyn.

But at the same time, areas that are larger are severely underserved by bus stops. There might be a significantly larger amount of stops around Prospect Park and Redhook, but they are still disproportional to the size of these areas. Besides account for potential fleet increases, there might also have to be an increase in the number of stops created for larger areas.

Subway over Norm


  1. “The MTA Network.”MTA Network Statistics. MTA, 2015. Web. 14 May 2016.
  2. “Political and Administrative Districts – Download and Metadata.”Political and Administrative Districts – Download and Metadata. New York City, 2015. Web. 14 May 2016.
  3. “Baruch College Confluence Service.”NYC Mass Transit Spatial Layers. Baruch College, CUNY, 2012. Web. 14 May 2016.