New map tutorials

A screenshot of using BatchGeocode to take a spreadsheet of addresses and turn it into a nice map. 

Over at Grid Chicago, my other blog that sucks all the time from this blog, I’ve recently written tutorials on how to create online maps, first with Google My Maps (which they renamed to My places) and secondly with BatchGeocode (which renamed itself to BatchGeo because it does more than geocoding now).

Google My Maps is primitive as far as map making goes, but it has the lowest learning curve and it’s easy: you just click on the map where you want something to go and fill in the info window. Read that tutorial.

BatchGeocode is slightly more advanced, but takes your tabular data (most likely from a spreadsheet) and throws it on a map you can embed on your website. They do have pay features. Read the tutorial for BatchGeocode.

I’ve written about BatchGeocode for QGIS, as it was once the only way to do geocoding in QGIS. But now BatchGeocode doesn’t give you a results table that has the latitude and longitude (apparently this is against Google Maps’s terms of service). But I updated the article to talk about using other methods for geocoding in QGIS.

I will be writing two more tutorials, one about GeoCommons and one about Google Fusion Tables.

Top keywords people use to find Steven can plan

Being a “webmaster” (should we retire that word?) is a lot of fun. There are so many tools that make being a webmaster easy and enjoyable.

The best tool ever – statistics! Also known as analytics. With statistics, you get to learn what words and phrases people searched for and found your website.

Day after day, the same keywords show up in my statistics:

David Bryne, Luann Hamilton, Randy Neufeld, and Jacky Grimshaw (in the back) were the panelists at “Cities, Bicycles and the Future of Getting Around: A Special Urban Sustainability Forum with David Byrne.”

How to geocode a single address in QGIS

Since the last time I wrote about how to use to perform pseudo-geocoding tasks in QGIS, there have been considerable improvements in the multi-platform, free, and open source GIS software. Now, geocoding (turning addresses into coordinates) is more automatic, albeit difficult to setup. (Okay, this has been around June 2009 and I just found out about it in October 2010.)

Once you install all the components, you’ll never have to do this again.

This method can only geocode one address at a time, but it will geocode all of the addresses into a single shapefile.

  1. Download QGIS.
  2. Download and install Python SetupTools. This includes the easy_install function that will download a necessary Python script, simplejson. On Mac you will have to use the Terminal (Applications>Utilities). Email me if you run into problems.
  3. Install simplejson. In the command line (Terminal for Mac; in Windows press Start>Run>”cmd”>Enter), type “easy_install simplejson”.
  4. Download the GeoCode plugin by Alessandro Pasotti via QGIS>Plugins>Fetch Python Plugins. You may have to load additional repositories to see it.
  5. Install geopy. In the command line (like step 3), type “easy_install geopy”.
  6. Specify your project’s projection in File>Project Properties.
  7. Get a Google Maps API key and tell the GeoCode plugin about it (QGIS>Plugins>GeoCode>Settings). You will need a Google account. If you don’t have your own domain name, you can just enter “” when it asks for your domain.
  8. Geocode your first address by clicking on Plugins>GeoCode>Geocode. Type the full address (e.g. 121 N LaSalle Street, Chicago, IL for City Hall).
  9. The geocoded address will then appear in your Layers list as its own shapefile. All addresses geocoded (or reverse geocoded) in this project will appear in the same layer (therefore same attribute table).

Once you install all the components, you’ll never have to do this again. Geocoding will be available each and every time you use QGIS in the future on that workstation.


  • When you’re done geocoding,  save your results as a shapefile (right click the layer and click “Save as shapefile”). Twice I’ve lost my results after saving the project and quitting QGIS. When I reopened the project, the results layer was still listed, but contained no data.
  • Add a “name” column to the GeoCoding Plugin Results layer’s attribute table (toggle editing first). You can then type in the name of the building or destination at the address you geocoded. Edit the layer’s properties to have that name appear as a label for the point.

A map I made with QGIS showing three geocoded points of interest in Chicago. Data from City of Chicago’s GIS team.


Manipulating geodata

If you’re a planner, a student, or an engineer, you will use geographic data. Sometimes you’ll require special skills to perform a task but more often than not you will need to simply convert or display the data. These tools (most of them online) will help you.

Shapefile (SHP)



Keyhole Markup Language (KML)



  • – Forward and reverse geocode addresses and geographic coordinates. Input tabular data copied directly from your spreadsheet (in Microsoft Excel, Calc, or Google Docs). Download results as a Google Earth and Maps-compatible KML file or copy back into your spreadsheet. The web application even allows for simple grouping (to which it will apply unique map icons).

Geographic Positioning System (GPS)



  • GPS Visualizer – “A free, easy-to-use online utility that creates maps and profiles from GPS data (tracks and waypoints, including GPX files), street addresses, or simple coordinates. Use it to see where you’ve been, plan where you’re going, or visualize geographic data (business locations, scientific observations, events, customers, real estate, geotagged photos, ‘GPS drawing,’ etc.).”

Geographic Information Systems (GIS)

Alternatives to ESRI ArcGIS

  • QGIS
  • uDig
  • GeoCommons – completely online.


Projection – Be observant of the project that data you obtained comes in. Then learn which coordinate reference systems and projections are common for that type of data and that location. For Chicago, you will most often use NAD83 / Illinois East (ftUS), with an EPSG ID of 3435.

    Geocoding in Quantum GIS – QGIS

    Geocoding is the process of turning street addresses into geographic coordinates. You can geocode easily in QGIS using several methods.

    If you just want to geocode and you don’t need to see the addresses plotted on a map in QGIS, then follow these instructions. If you don’t need to see them on a map nor do you need the geographic coordinates, then use BatchGeocode.

    If you only need to geocode a single address and get its coordinates immediately, use

    An example geocoded address on the map using the “single address” method.

    How to geocode multiple addresses in QGIS

    UPDATE April 11, 2013: Updated the directions because the “Add delimited text layer” function moved from the Plugins to Layer menu. 

    UPDATE March 24, 2011: I updated the directions to use GPS Visualizer instead of because BG stopped giving geographic coordinates in its output.

    Get directions on geocoding a single address in QGIS with a plugin.

    QGIS is an open-source Geographic Information Systems (GIS) application that has been gaining ground since 2004. It runs on all operating systems (it began as a Linux project) and you can download it for free.

    I use it often because ESRI doesn’t make the popular ArcGIS software for Mac. That’s unfortunate, but like I said here, software, technology and mapping issues can be easily overcome – we can use QGIS to create maps. QGIS, though, is missing one major feature for basic map building: geocoding.

    Here’s a step-by-step tutorial on how to bring in multiple street addresses and their XY coordinates into your QGIS map en masse: Continue reading

    GIS and mapping tools

    Some of the work I do for school and my job requires that I make maps. I’ve never taken a class on how to make maps or analyze data sets featured in maps (what GIS does), so I learn as I go.

    There’s no one around me I can call upon when I have questions that need immediate answers. Well, there’s me! Because of this, I must quickly find a solution or workaround myself.

    Today I had to import a list of Chicago Transit Authority and Metra rail stations into ArcGIS so I could plot them on a map that also showed Chicago’s boundary and our bikeways. I could do this in Google Earth, but then I would have less control over the printed map I wanted to make, or the image output. ArcGIS has a built-in geocoder and I learned how to use it six months ago, but a skill not practiced is lost – and I forgot how to do it.

    That’s okay – what follows is how I overcame this barrier:

    Because I know how to use PHP to instantly create Keyhole Markup Language (KML) files (the format which Google Earth and Maps speaks fluently). Then, with this user-contributed KML to SHP plugin for ArcGIS, I was able to convert my KML files to Shapefiles and display them on my map. Unfortunately, my custom “fancy” icons were lost in the translation. Supposedly this alternate user-contributed script does the same thing.

    Other tools I used to get my map created:

    • – This site is indispensable for turning a list of addresses (with names, descriptions, and URLs) into the same list but with latitude and longitude coordinates! It will even create a KML file for you.
    • KML Generator (PHP class) – This class allows you to quickly and easily create KML files from any array and array source of coordinates. I store the transit stations in a database and run a query on the database and loop through them to generate the points in a KML file.

    I’d like to thank James Fee’s GIS Blog for the links to the ArcGIS scripts/plugins I used in my project. To everyone else who must confront software, technology and mapping roadblocks, there’s almost always a solution for you.

    Read about how I got around QGIS’s lack of geocoding.

    © 2019 Steven Can Plan

    Theme by Anders NorénUp ↑