Mapping 311 Fireworks Complaints in Brooklyn in 2020

Lab Reports, Maps, Visualization


New York City entered the first two phases of reopening in June 2020 after a 2-month stay-at-home order to stop the spread of COVID-19. Around the same time, the city saw what many residents felt was an unprecedented increase in illegal fireworks. For this mapping lab using Carto, I wanted to explore both the when and where of fireworks incidents in Brooklyn by looking at complaints to NYC311.


For reference, I looked at a few maps: one from Gothamist based on 311 data on the increase in fireworks complaints and another from the New York Times on the distribution of coronavirus cases in NYC by zip code. The Gothamist post is one of many that got me interested in this topic and they often use 311 data to create visualizations. I liked that their map was animated and it inspired me to create an animated map as well. What I like about the NYT map is the clear visual distinction between zip codes and rates of infection. I also like that you can get contextual info by hovering over areas of the map. My one personal critique was that initially, they were lumping my neighborhood of Greenpoint in with Williamsburg, even though they have different zip codes, so I was unable to see the infection rate in my neighborhood. They have since corrected this.


To create maps for this lab I used Carto, an open-source web-based spatial analysis software. The datasets I used to generate the maps were from NYC Open Data and the NYC Department of Planning.


I previously worked with 311 data for the Tableau lab, so I started by getting an updated dataset from NYC Open Data, which I filtered by date and borough before exporting as a CSV. Once I looked at the data, I realized that I also needed to filter it by complaint type “illegal fireworks,” which I was able to do easily using OpenRefine. I uploaded this dataset to Carto to get a sense of what it would look like. 311 data comes with latitude and longitude coordinates for the complaint locations, so it maps easily. I did also want to add neighborhood borders as a cross-reference to this, so I downloaded a shapefile of Neighborhood Tabulation Areas created from 2010 Census Tracts by the NYC Department of City Planning. Once I uploaded this to Carto and added it as a second layer on the existing map, I wanted to color code by values using neighborhood as the value, but it didn’t quite work because Carto limited the number of values to 10, adding the rest to an “other” category, which were all gray. I decided to remove the color and set them as transparent.

From there I decided to create 2 maps. The first is a point map that shows 311 fireworks complaints by zip code and by date of complaint (using 2 widgets), so you can see where they are concentrated. This map shows that the highest number of complaints came from the 11226 zip code, which is the neighborhood of Flatbush.

The next map is animated to show the rate of fireworks complaints by week from March 1 – July 18:


I think the first point map is good at providing contextual data and a visual snapshot of the concentration of 311 complaints about fireworks by location. I have a preference for the second animated map because, while it doesn’t provide as much granular information, it’s more visually dynamic and you can really get a sense of the increase in complaints as you watch the increase as the weeks track forward on the map widget. If I were to take this a step further, I would (as I mentioned previously) want to create a separate layer or map that looks at the rate of 311 complaints by neighborhood. I might also filter the 311 dataset down further by date, so it doesn’t start in March, when there is low activity.