6

I need to create buffers (1km, 3km, and 5km) around the rivers of this shapefile from NOAA, something I remember being relatively simple in my GIS class.

However no matter what I do the buffers I create cover the entire United States. I've tried a number of different CRSs (for the layer I did Right-Click>Save as and set the CRS I wanted to try, I also set the project CRS not just the layer), but the buffer always covers most, if not all, of the continent. Additionally if I use the distance tool to measure this shapefile from coast to coast, it comes out in meters. I could be wrong, but I'm fairly sure that the country is larger then a couple dozen meters across.

2 Answers 2

7

Something most likely went wrong with your projection settings along the way, but it's a bit hard to figure out where exactly the error lies, so it might be easier to walk through the process from the start.

  1. When you load the shapefile, you'll notice that you're asked to pick the coordinate reference system (CRS) your shapefile is in. Usually, this dialog won't pop up, because the correct coordinate system is stored in one of the files that make up the shapefile: the one ending in .prj. That one's missing with your dataset, however, hence the dialog. So we need to find out what CRS your data is in. Without this information, any projections we apply later on will be meaningless.

  2. Googling for rs14fe02 (the base name of your shapefile) points to the NOAA metadata entry. The section "Spatial reference information" tells us that the data is in geographic coordinates (i.e. it uses latitude and longitude, not distance units), and that it uses the North American Datum of 1927 with the Clarke 1866 ellipsoid. Scrolling through the list of CRS's in the QGIS dialog, we find an entry called NAD27 in the "Geographic Coordinate Systems" section. The proj string is +proj=longlat +ellps=clrk66 +towgs84=-10,158,187,0,0,0,0, so that matches the metadata.

  3. After choosing the NAD27 CRS and clicking OK, the shapefile is opened:

    I've added a graticule of longitude and latitude: As you can see, they're perfectly square, which is what you'd expect from a geographic coordinate system displayed in QGIS, since it just uses an equirectangular projection to display the data. If you measure a distance using the line measure tool, it's in degrees, which again, is what you'd expect, but not what you want for buffering using linear units.

  4. So we need to project the data. For buffering, we should use an equal area projection to avoid introducing errors into the analysis. A common one is the "US National Atlas Equal Area" (EPSG:2163), which is a Lambert azimuthal equal area projection. You can see what your data looks like in that projection by clicking on the globe in the lower right corner, activating "on the fly projection", and choosing EPSG:2163 from the list:

  5. You might think that you could just create the buffer now, but you'd be disappointed if you did: The geoprocessing tools don't care what projection is selected for the project, they care what projection the data is in. We haven't changed that: The shapefile is still in NAD27 geographic coordinates, so running a buffer with a buffer distance of 3000 "units" would be interpreted as 3000°, not 3000 metres. Instead, we explicitly have to project the data first: Select the layer, and click "Layer / Save as...", choose a file name, and choose "Selected CRS" and "EPSG:2163". Tick "Add saved file to map" and click OK. After the file is saved, QGIS will load and display it.

  6. Now you can run the buffer with the proper units: Open the "Vector / Geoprocessing / Buffer" dialog, choose the newly created layer, and enter the buffer distance in metres. Once it's done, the layer will be added to the canvas.

    Here's a section from the north eastern US with a 5 km buffer:

2
  • 3
    Excellently written tutorial! Commented Oct 21, 2013 at 16:41
  • 2
    Every visitor to our site should read this reply in detail. "The geoprocessing tools don't care what projection is selected for the project, they care what projection the data is in" solves problems brought to this site by hundreds of people.
    – whuber
    Commented Oct 21, 2013 at 17:48
2

Your shapefile comes in as a WGS84 by default... Sounds like when you are buffering, it is applying a 1, 3 and 5 degree distanced buffer... That would make the buffers anywhere from roughly 60-200 miles wide... These are estimates, but that's what I see is wrong here.

try to find a Projected Coordinate System, such as NAD83 / UTM zone * (anywhere from 10-19 for the US) Check the box to enable on-the-fly CRS transformations Also set the project CRS to match the layer's CRS

the UTM zone depends on your area of interest... If your AOI is the entire country and angle of image doesn't matter try UTM Zone 15N

We use NAD83 / UTM Zone 18N here is Salisbury, MD depending on your location, the UTM will be different

Here is a very basic view of zones for the US

http://upload.wikimedia.org/wikipedia/en/5/57/Utm-zones.svg

1
  • 1
    Almost: This data is in NAD27 (but WGS84 is a common case). Simply setting the project CRS to a projected CRS with on the fly projection won't work, since the Buffer tool works in the layer CRS, not the project CRS, so the layer has to be explicitly projected first.
    – Jake
    Commented Oct 21, 2013 at 16:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.