OpenStreetMap Baltimore City Buildings and Addresses Import

Two years ago, I started trying to import building footprints and addresses provided by the City of Baltimore into OpenStreetMap but was held up by red tape and eventually gave up.1 The City provides building footprints and parcel data on their open data portal; the download pages for these two datasets list the data as public domain, but the site’s terms of service is the same as the rest of City’s websites, saying the data is copyrighted. I had worked through the technical aspects of preparing and simplifying the building footprints for import and had started working on how to associate addresses from the parcel data but eventually gave up after I was unable to secure the needed licensing clarifications from the Mayor’s Office of Information Technology (MOIT).

This past fall, Elliot Plack, who then worked for Baltimore County GIS and was appointed to the Maryland Open Data Council by Governor O’Malley, got in touch with me about restarting the import, after finishing an import of similar data for the County. After meeting with Jim Garcia from MOIT, he was able to secure the permissions that we needed to proceed with the import. Additionally, he was able to get address point data, which is much superior to and easier to use than the parcel data I was originally going to extract addresses from.
Continue reading


  1. http://wiki.openstreetmap.org/wiki/Baltimore_Buildings_Import 

Posted in | Tagged , , , , , | Leave a comment

Bootstrap Navbar without jQuery

While I’m fond of Bootstrap in general, I dislike how much it relies on JavaScript and particularly dislike its dependency on jQuery. I have nothing against using JavaScript for creating interactive content, e.g. web applications, or progressive enhancement, e.g. lightboxes or copying text to the clipboard, but I do take issue with requiring JavaScript for basic site functionality as is the case with Bootstrap’s navbar and dropdowns. What I particularly dislike is that not only does this require JavaScript, but it requires a 32kB JavaScript library, jQuery, to do what would otherwise take less than 1kB of JavaScript. To avoid this when redesigning campworkcoeman.org, I made some modifications to open the navbar’s dropdowns on hover on larger devices and used a small piece of plain JavaScript to operate the menu on small, mobile devices. Unfortunately, this didn’t work properly under iOS, but I recently fixed this. I’m detailing the changes I made in case someone finds them useful.

Continue reading

Posted in | Tagged , , , | 8 Comments

Print Maps

Web maps, e.g. Google Maps, normally don’t print well, as their resolution is much lower than normal print resolution, not to mention the various other unwanted text and elements that print along with the map. While the unwanted elements can be cropped out, the only fix for the low resolution is to render a higher resolution image (or use vectors). Formerly, this required installing GIS software, which also requires a suitable data source. Print Maps changes that by leveraging Mapbox GL JS and OpenStreetMap data to render print resolution maps in the browser. After the user selects the map size, zoom, location, style, resolution, and output format, PNG or PDF, Mapbox GL JS is configured as if it was being used on a very high pixel density display and used to render the map output. To use Print Maps, visit printmaps.mpetroff.net.

Print MapsThe site’s source code is available on GitHub. Also, slides from my HopHacks presentation on the project.

Edit (2017-01-01): Changed printmaps.org to printmaps.mpetroff.net as I’m going to let the printmaps.org domain registration expire.

Posted in | Tagged , , , , | 7 Comments

Light Painting Wand

A digital light wand, used to paint images in long exposure photography, has been around for a few years, since the advent of cheap, controllable RGB LEDs. While there are freely available designs and code for such a device, I wasn’t happy with them, so I decided to design and build my own. The control electronics for the design I looked at used a Arduino Mega 2560, with a display and control shield as well as other components; I found this far too bulky. Furthermore, the design used a grossly underpowered voltage regulator rated for 1A with a strip of LEDs that draws upwards of 2.5A. The LED strip, however, is one of the nicest ones available, with 144 individually controllable WS2812B RGB LEDs on a one meter strip.

Peppers Continue reading

Posted in | Tagged , , , | Leave a comment

Peering Down

Two years ago, I took a large set of photos at the George Peabody Library. Among those were a very wide angle image looking up at the skylight and an image looking down. The latter was taken with a point-and-shoot camera suspended between the sixth floor railings with the help of fishing line and office supplies. Unfortunately, the field of view was much too narrow, leaving the stacks out completely, so the photo fell short of my vision for it, and it didn’t complement the photo looking up. I needed to use my DSLR and fisheye lens, but there was no way the previous method would have supported it. However, I just revisited this idea and finally got the photo I wanted.

Peering Down

Continue reading

Posted in | Tagged , , , | 3 Comments