Project description

New York City\’s rooftop water tanks provide a great deal of the city\\\’s drinking water, and can be found atop nearly every building over 7 stories tall. They are a key feature of the city\\\’s architecture, and their cleanliness is essential to maintaining a high standard of public health.

A City & State investigation found widespread neglect baked into the regulatory regime governing tank cleanliness and inspections, and this interactive map served to highlight that. The map shows which buildings tested positive for several contaminants, including animal debris and E. coli, but the most widespread problem was frequent non-inspection of tanks. City regulations dictate that every tank must be inspected at least annually, but our analysis found that an estimated 60% of those tanks had not been inspected at all between 2015 and 2017. Of the remainder that had been inspected during that period, a majority had missed at least one mandatory inspection.

What makes this project innovative?

No single directory of New York City's rooftop water tanks currently exists. This map is the closest thing that currently exists. The only record of any water tank's existence is its inspection records, and given that thousands of tanks have gone uninspected for years, no official record of them exists. This map cross-referenced city real estate data to identify buildings that are highly likely to have unaccounted for (and therefore uninspected and possibly unsanitary) tanks.

What was the impact of your project? How did you measure it?

Ultimately, the City & State investigation led the City Council, after an investigation by the city's Department of Oversight and Investigation (, to pass a series of laws reforming the water tank regulatory regime, including photo/video evidence of the cleanliness of tanks before cleaning. More details here:

Source and methodology

I worked on this project with Frank Runyeon, an investigative reporter, who was with City & State at the time, and has reported extensively on the city\'s rooftop water tanks, including for The New York Times ( My role in this story was taking Frank\'s FOIL request data from NYC DOHMH (a CSV file showing water tank inspection results for 2015-17, with each row representing a single inspection,) and converting it into something that could be mapped. In addition, I had a GeoJSON file showing footprints of every building in New York City, with each footprint identifiable by a unique Building Identification Number (BIN.) The FOIA data did not have BINs, so I had to write a script to automatically enter the addresses from the FOIA CSV into the NYC Department of Buildings\' website, and scrape the relevant BINs. Since the FOIA data only showed inspections, and not non-compliant buildings with un-inspected water tanks, I had to download \"PLUTO\" data from the Department of City Planning, filter out every building under seven stories tall (the height at which a building is almost certain to have a tank,) and run a similar process to find the BINs of those buildings. Now armed with about 10,000 BINs, I took the footprint GeoJSON file (with over 1 million footprints,) filtered out every building not on my list of BINs, and added inspection data (or the lack thereof) to the properties of each remaining building object. Without filtering here, it would be essentially impossible to load this project in a browser window. At this point, using the Google Maps API, I overlaid the footprints onto a map window, and put together the various design and interactive elements, constantly coordinating with Frank, our editors and City & State\'s design team along the way. Throughout this process, regular spot checks and fixes were needed, including manually correcting errors in the earlier BIN scrapes that yielded \"dummy BINs\" that did not correspond to real building footprints (\"1000000\" for Manhattan, \"3000000\" for Brooklyn, etc.,) but had very real inspection results that needed to be linked to real buildings.

Technologies Used

Google Maps JS API, Scraping (Nokogiri Ruby gem), Ruby for data analysis

Project members

Ben Jay ( Frank Runyeon (


Additional links


Click Follow to keep up with the evolution of this project:
you will receive a notification anytime the project leader updates the project page.