Skip to Main Content


Research Guide for geography resources and tools

Learning Goals

ArcGIS doesn't just allow you to place points, polygons or lines representing geographic locations on a map, it will also allow you to analyze those points using tools from within its geoprocessing toolkit.  This can help you narrow down which areas are most pertinent to your study and find out important information about those areas. 

In this exercise we'll be determining which schools in Brooklyn are within 1/8th of a mile (walking distance) of a green space using different geo-analysis tools in order to clip our files to just the borough we want, to create a buffer around the schools of an eighth of a mile, and then detect where those buffers intersect with one of the green spaces.


Getting Started

  • Open the file NYC_SchoolsAndGreenSpaces.mxd in ArcMap and take a look at the layers.
  • Open the Attribute Tables for each to see what information they contain about the subject of the layer, and is that information available for all items. For instance, though the GreenSpaces layer has information on what kind of green space it is in the field landuse on some of the records, it does not for all of them, so you couldn't narrow down your Green Space layer to only parks and not parkways. In contrast PublicSchoolLocations does have information on each school for what type it is in the SCH_TYPE column so you could narrow it down to just elementary schools if you wanted to. 

The question you'll ultimately want to answer is what areas of Brooklyn contain both a public school and a sizable park within an eighth of a mile? To do that, you'll first need to narrow down your selections to just Brooklyn using the Clip tool, then create a buffer of .125 mi around the green space using the Buffer tool, then use the Intersect tool to find just the schools that are within that boundary.

Clipping a Layer with Geoprocessing Tools

The Clip tool allows you to take a layer with a larger geographic range than you need, and clip it to match the outline of a smaller layer, creating a new feature class with that smaller area. This can be handy if you are studying a smaller area like a group of adjacent counties or census tracts but can only get basemaps that encompass a whole state or region. You can clip those larger maps to just the area you need which eliminates confusion and frees up processing power. In this case, you were only able to get maps of where public schools and green spaces were located for the whole of New York City's five boroughs, but you only want to look at the ones in Brooklyn

  • Narrow down your BoroughBoundaries layer to only contain Brooklyn. Double-click on it, and go to the Definition Query tab. 
  • The window in there will currently be blank, but click on the button that says Query Builder. This will take you to a window that will walk you through how to build a query
  • The first window has the different fields you can use. You are looking to narrow it to Brooklyn so double-click on boro_name to add it to your query. Then click on the = button in order to add that. Click on Get Unique Values to see how the names are written out and double-click on 'Brooklyn' to add it to your query. 
  • Click on Verify and if you get a pop up saying it has been successfully verified, click OK
  • Your map will now look something like the below, because though BoroughBoundaries layer has been narrowed down to only include Brooklyn, nothing else has. However, because with Definition Query you have defined that layer to only consist of Brooklyn, you can use it as a cookie-cutter type template to clip your other layers.
    There are dots on the map to indicate schools and green patches to indicate Green spaces. Brooklyn's borders are outlined in yellow because it's been selected by Query.

The Clip tool allows you to trim one layer to match the geographic boundaries of another. We'll be using it on the PublicSchoolLocations and GreenSpaces layers rather than the Definition Query  that we used on the BoroughBoundaries layer for a couple of reasons. Firstly, it's just easier to use this tool on the green space layer because there isn't an attribute field for what borough the green space is located in. Secondly, even though Definition Query controls the size and shape of the BoroughBoundaries layer as it appears, the extra information is still available and so taking up space when the map is being processed. We won't need information on public schools or green spaces that aren't in Brooklyn, so we may as well create a new layer that doesn't contain that information to save on processing speed.

  • Click on Geoprocessing in the menu bar and choose Clip.
  • This brings you to your Clip Tool window. Click on PublicSchoolLocations in the Table of Contents and drag it into the field marked Input Features. This is where the layer that you want to clip goes. Click on BoroughBoundaries in the Table of Contents and drag it into the field marked Clip Features. This is where your narrower layer that you want to clip the other layer to goes.
  • Leave the default name for Output Feature Class for now and click OK
  • A new layer will appear on your Table of Contents window called PublicSchoolLocations_Clip.
  • Right-click on your original PublicSchoolLocations layer and choose Remove. You'll notice that the new clipped layer now only shows locations in Brooklyn
  • Repeat the Clip tool process with the GreenSpaces layer. You may need to change the symbol for your new layer, from the default color so that it's green.
  • Now your map canvas will contain 3 layers, PublicSchoolLocations_Clip, GreenSpaces_Clip and the original BoroughBoundaries layer. 
    A map of Brooklyn with blue dots for schools and green spaces for parks

Now that you have the layers that contain only the information that you need, you can process that information much easier

Using the Buffering Tool to Display Proximity

The Buffer tool is used to create a new layer that expands out the boundaries of a point, line or polygon a specified distance in all directions. That distance can be the same for all objects, or you can decide it based on one of the fields in your attribute table. For instance, maybe you are looking into environmental hazards and have different kinds of chemical plants mapped that each have a different minimum safe distance. Instead of creating a uniform buffer of a mile for each, you could create a buffer layer that had 1/4 mile for plants that had that listed as their safe distance, 1/2 a mile for plants with that safe distance and so on. 

In this case you're just looking to create a buffer zone around polygons in the GreenSpaces_Clip and the points in the PublicSchoolLocations_Clip layer of 1/8 of a mile out so that you can see which areas have both features in close proximity. 

On the map though, you'll see that some of the parks are large, and others seem to just be narrow sections of roadway. So you'll want to do another Definition Query to narrow down the parks that are being shown as just ones over a certain amount.

  • Right-click on GreenSpaces_Clip and choose Open Attribute Table. Scroll over to the Shape_Area column. You'll notice that a lot of the items say 0. That's because the unit of measurement is degrees instead of feet, so you'll need to increase the amount of decimal places appearing in order to be able to see the area of the shapes.
  • Right-click on the Shape_Area header and choose Properties. Click on the dots next to Numeric, and when you open the Number Format menu use the arrows below Number of decimal places  to change it to 12
  • The Shape_Area section of the table now looks a lot different, though the numbers involved are still small, nothing is simply a 0. 
  • Now to calibrate the smallest we'd allow a park to be and still appear on the map, we'll use the Identify tool and click on one of the shapes in the Green_Spaces layer that looks to be on the small side of reasonable (I've chosen the P.S. 31 schoolyard park in North Brooklyn)
    The identify tool stating the measurements for P.S. 31's Schoolyard
  • Copy the number it gives for Shape_Area in this case it's 0.000000071
  • Double-click on the GreenSpaces_Clip layer to open the Properties window and navigate to the Definition Query tab. Click on Query Builder.
  • In the Query Builder window, you'll be looking to have your layer only display the parks that are at least as large as the park you picked as the smallest you'd want counted as a green space that it would be nice for a public school to be near. So you want only the records with a Shape_Area  of at least 0.000000071
  • Double-click on Shape_Area in the list of available fields to add it to the query, then click on the button for greater than or equal to which is > = then add to the query 0.000000071.
  • Click on Verify and if it says that your query is valid, click OK

​Your map should now look something like the below, with less parks because you are only showing the ones with larger areas on them

A map of Brooklyn with larger parks and dots for schools 

Now you can add a buffer to these parks and see which schools are within an eighth of a mile of these parks.

  • Go up to the Geoprocessing menu item and choose Buffer.
  • Click on GreenSpaces_Clip in the Table of Contents and drag it into where it says Input Features in the Buffer window that opens
  • Change the name where it says Output Feature Class to only say GreenSpaces_EighthMile at the end.
  • Where it says Distance, choose Miles in the dropdown and write in .125
  • Take a look at the other options. If you were basing the distance you wanted the buffer for on one of the fields in your attribute table, this is where you would select that option and choose which field you wanted as a dropdown. 
  • Where it says Dissolve Type make sure it says NONE. You can also create buffers which cease to differentiate the individual features, but you'll be doing that later.
  • When you are set and your window looks something like the below, click OK.
  • The tool will process, you'll see a little item in the bottom that keeps saying 'Buffer....Buffer....' and then when it finishes a new layer will be added to your table of contents GreenSpaces_EighthMile and it will look something like this.
    There are purple areas around the green spaces on the map of Brooklyn
  • Repeat this process with the Public SchoolLocations_Clip layer to put a 1/8th a mile buffer around the schools in a new layer PublicSchoolLocations_EighthMile.

You'll now look for where the two layers overlap with the Intersect tool. 

Using the Intersect Tool

You can use the Intersect geoprocessing tool to look for where two different layers coalesce and making a new layer with that information

  • Go to Geoprocessing and select Intersect. Click on PublicSchoolLocations_EighthMile and drag it over where it says Input Features. Do the same with GreenSpaces_EighthMile
  • Change the Output Feature Class name to EighthMileSchoolAndPark. Click OK
  • When the tool finishes, it will add the layer EighthMileSchoolAndPark. Click to turn off your other layers and it will look like a bunch of interlocking circles and semi-circles. 
    Interlocking circles on a map that the only layer is turned on is EighthMileSchoolAndPark

You'll notice that when you zoom in and out or pan the map, it can take some time to redraw these layers, because any individual circle can have multiple intersections due to there being multiple parks' or schools' buffers which intersect. With the Dissolve tool you can turn these many different intersections into one layer. This is a tool that is useful mostly if you don't care about any of the other attributes (if say, you don't want to know which elementary school and which park a given intersection is near). You can keep some amount of information about the individual interesections by choosing a layer to make the dissolve based on. For instance if I wanted one of these shapes to just consist of all the occasions where an elementary school overlapped and another to consist of all the times a high school overlapped I'd make the Dissolve Field SCH_TYPE. Or if I wanted there to be a separate shape based on each park, I could make the dissolve field park_name

  • Go to the Geoprocessing menu item and select Dissolve
  • Drag In EighthMileSchoolAndPark into Input Features
  • Select the Dissolve Field  as GEO_DISTRI since I want the different shapes dissolved together but separated for each district. This way instead of having thousands of different overlapping shapes, I'll instead have about 20.
  • Go with EigthMile_Diss as the feature class name
  • Click OK

And now you've created a layer with only 22 shapes one for each district, rather than one for each intersection.

Symbols with no inner divisions on the map. 

If you want to see how this works as a finished product it's attached below.

Learning Goals

With ArcMap you can do more than just run the tools that individually come with your toolbox, you can create your own model. A model lets you string together a series of geoprocessing tools into a workflow. When you have finished creating your model you can run it using specified map layers and data, and can even set it up to perform the same tasks on different tables or layers. Additionally, a final view of the model works excellently as a illuminating graphic you can use in your paper or project to explain to the viewer exactly how you processed your data.

With this exercise, you'll be working with a similar map to the one you created last time that showed the areas of Brooklyn that were within 1/8th of a mile of both an elementary school and a green space. You'll create a model that will process the intersection of those areas with areas that are within half a mile of a public library to further analyze which parts of Brooklyn are short walks from institutions important for child development. When this model is run, you'll get a new map layer that displays the intersection of these areas. 


Getting Started

  • Open NYC_SchoolsAndGreenSpaces_ForModel.mxd and take a look at the layers placed in the Table of Contents. You'll notice that one of the ones turned on NYC Facilities isn't yet clipped to only display Brooklyn facilities, so note that is a step that you'll be undertaking for the layer in the model you'll be creating.
  • Use the Identify tool to click on a few of the blue dots represented, and note that in addition to Public Libraries, there are also Parks, Offices, Schools and other kinds of facilities, so you'll also want to early on in the model create a layer that just contains Libraries, but first you'll want to know what field that information resides in
  • Right-click on NYC Facilities and choose to Open Attribute Table
  • In the Attribute Table, click on the dropdown menu to the far left and choose Find and Replace
  • Type into the search field 'Public Libraries'  and click on Find Next.  
  • Scroll through the different records where this text string is found and note that they all have the designation Public Libraries in the facsubgrp field. This is the attribute that you'll use to select these records once you've clipped the NYC Facilities layer to only contain Brooklyn. You can do this, and other steps all in one fell swoop by creating a model

Creating a Model

In the last exercise, you went through multiple steps, some first on one layer, and then on another, in order to create a map that used open GIS data to illustrate where in the city was within a short walk of a public school and green space in Brooklyn. Since you now know which geoprocessing tools can be used to create this map, you'll next be adding those same tools to a model which you can then run and automate your process. This model is going to be stored in your toolbox.

A model consists of data (layers, feature classes, tables, shapefiles) and tools with connections made between them. You can use not only data that you already have on hand, but also the data that occurs when a new layer is created as a result of a task being performed on an existing layer. 

You used tools from ArcToolbox in your last exercise, in this one you'll make your own toolbox that contains a model combining different processes that accomplish a task.

  • In your Catalog window, click to collapse your Folder Connections so the Toolboxes is visible. Expand it and right-click on My Toolboxes, choose New>Toolbox.
  • It will create a toolbox (a collection for any Python scripts or models you create) with the default name of Toolbox.tbx. Right-click on it and choose New>Model
  • This will open the editor window for your modelThis is where you will create your model that when run will:
    • Clip your NYC Facilities layer to your Borough Boundaries layer, thus limiting to Brooklyn using the Clip tool
    • Select only the libraries from your new Brooklyn only NYC Facilities layer and export that as a new layer
    • Create a buffer of 1/2 a mile around each of those libraries with the Buffer tool 
    • Use the Intersect tool to see where the 1/2 a mile buffer around libraries intersects with the existing EighthMile_Diss layer that shows where in each school district there are areas near both a public school and a green space, and export this as a new layer.

Adding the Clip Tool to Your Model

A model is a visual representation of a process you'd like ArcMap to do. Data is represented by blue ovals, rectangles represent tools, and green ovals represent the output of a tool. Tools and the ovals representing outputs are represented as clear if the tool still requires inputs or parameters to function. The items get a drop shadow after they have been performed when you run the tool. 

If you ever have issues locating where a tool is you can do a search for it by pressing CTRL F to open the Search window.

  • Click on NYC Facilities in your Table of Contents window and drag it into the Model window. You can also add data by going to the Insert menu at the top of your window and selecting Add Data or Tool. It will appear as a blue oval with the layer name in it. 
  • Add the Clip tool to your model by going to Insert>Add Data or Tool and clicking to go up one layer in the pop-up that appears. Double click on Toolboxes then System Toolboxes then Analysis Tools, Extract  and finally Clip and select Add. A white box labeled Clip will appear on the screen, along with an oval that says Output Feature Class.
  • Go to the icon at the top of the screen that features two boxes connected with a line. This will let you add a connection between the boxes. Click on it and your cursor will change into a magic wand icon. Click first on the oval for NYC Facilities and draw a line to the box that says Clip. An option menu will appear asking you if you want it to be the Input Feature or the Clip Feature. Select Input Feature.
  • The Output Feature Class name will change to an auto-populated option based on the original  and a solid black line will appear between the NYC Facilities box and the Clip  box. Double-click on the Clip box and change the name for the Output Feature Class to BK_Facilities
  • Click on Borough Boundaries and drag it into your model window. Click on the Connections box and make a connection between the Borough Boundaries oval and the Clip box. When the window pops up asking you if the connection is Input Features or Clip Features select Clip Features since these are the features you want your NYC Facilities layer clipped to. 

You have now in a few boxes and arrows done the same thing as the first couple of steps for the previous exercise. It should look something like this.

A flow chart describing the two layers that the clip tool operates on and turns into a third layer

Selecting Attributes of a layer for export as new layer

You've created a layer BK_Facilities that has already clipped the shape file with all the facilities in New York City to just contain those in Brooklyn. Now you can use the Select tool to narrow that new layer down further to just those in the subgroup of Public Libraries. 

  • In the Model window, select Insert at the top and choose Add Data or Tool. Open the Analysis Tools toolbox, go into the Extract folder there and click on Select to add that tool. This will drop in a rectangle labeled Select that contains an arrow pointing to an oval labeled Output Feature Class.
  • Drag the tool over to a point to the right of the BK_Facilities. Click on the Connect icon at the top of the screen and draw a line from BK_Facilities into the Select box. 
  • Choose Input Features from the dropdown menu that results
  • Double-click on the Select box to change the other properties associated with this tool. Change the Output Feature Class to be BK_Facilities_Libraries. Click to the icon that says SQL to the left of the Expression field, and this is where you will create the SQL Query that will select only the libraries.
  • In the Query Builder window, scroll down to the field that you determined earlier contained the information that the facility was a public library, facsubgrp  and doubleclick to add it to your query. Click on the = button. Then type in 'Public Libraries'In this case, you can't use the Get Unique Values or Verify buttons since you're selecting by attributes in a table that doesn't exist yet.  
  • Click OK and the field next to Expression should read: "facsubgrp" = 'Public Libraries'Click OK again

Selecting a tool on the model opens the window where you can configure that tool, in this case Select

Creating a Buffer around the Public Libraries Layer

The Buffer tool creates a new layer with a buffer circle at a given distance from every point in a layer. Like the other tools used on an individual basis in the last exercise, you can add this tool as part of a model and create a buffer around your layer with the public libraries in Brooklyn that shows the area a half mile in every direction of a library.

  • Click on Add Data or Tool, and use the up arrow at the top to go up to the Analysis Tools.tbx, and on that menu select Proximity
  • Highlight Buffer and click Add. This will put a box that says Buffer on your model which has an arrow pointing into an oval that says Output Feature Class.
  • Click on the arrow that looks like a cursor at the top of your window to use the Select cursor, to then drag the Buffer box to the right of the oval for BK_Facilities_Libraries.
  • Click on the Connect box and connect BK_Facilities Libraries to the Buffer box, and in the accompanying dropdown select Input Features
  • Double-click on the Buffer box to control its parameters. Change the Output Feature Class to be named BK_Libraries_Buffer. and for distance, select .5 Miles. Click OK, and the Output Feature Class will change to the new name you've given it. 

Calculating Intersection Between two Layers

The Intersect tool will look for the places where two layers intersect, and export a layer containing only those intersections. This can be handy when you are looking for only areas meeting certain criteria within a larger geographic unit like a city, state or country. Like the other tools in the last exercise, it can be added to the model. You'll add this tool calculating the intersection between EighthMile_Diss and the new layer you just created with the buffer around the public libraries.

  • Click on EighthMile_Diss in the Table of Contents and drag it into the Model window. Position below the oval for BK_Libraries_Buffer.
  • From the Insert menu in the top toolbar, select Add Data or Tool. Move up a level and then in the Overlay toolbox, select Intersect and click Add.
  • Move the box labeled Intersect and oval labeled Output Feature Class to the right of BK_Libraries Buffer and EighthMile_Diss
  • By clicking on the Connect tool at the top, add connections between BK_Libraries_Buffer and Intersect and choose Input Features. Repeat the process for EighthMile_Diss
    Both layers are set up to be fed into the Intersect tool in the model
  • Double-click on the box labeled Intersect to configure this tool. You'll notice both features are already in the Input features. Change the Output Feature Class to be Overlap_Libraries_School_Park and this changes the name of the green oval on your model

Saving and Running your Model

When your model looks like the below, you'll be set to save it. Save it as PublicLibraryBuffer

The complete model

  • Go to the menu item Model and select Validate Entire Model. If no error messages pop up, click on Model and choose Run Entire Model.
  • A dialog box will pop up tracking the model as it runs and as each step is carried out a drop shadow will appear under that box or oval on the model
  • When you open the Default geodatabase where you have saved your work to you'll notice that there are now layers for each of the green output data placeholders created in your model: BK_Facilities, BK_Facilities_Libraries, BK_Libraries_Buffer, Overlap_Libraries_School_Park

The layers created by our model as they are listed in the geodatabase

  • Drag each of these layers over into the Table of Contents and check and un-check their boxes to see what they look like on your map. You'll see they represent the different layers created by your model. Facilities narrowed only to Brooklyn, Facilities narrowed only to Public Libraries, a buffer applied around the public libraries, and finally the intersection between the public libraries buffer and the buffer previously created around schools and parks.

When you only have the intersection layer on the map, it should look something like this.
The map of Brooklyn with pink strangely shaped polygons on it

Suppose having run this model, you want to add one more process on your final layer - the Dissolve tool used in the last module. You could just run it using ArcToolbox, but if you wanted it to be part of the model (if you wanted to send someone your model if they wanted to base their research off it), you can add it to the model now, and run that step. 

Adding Another Step to a Model

  • Right-click on Overlap_Libraries_School_Park and choose Open Attribute Table. Scroll through this table and see what attributes if any, you'd like saved when the dissolve is done. In this scenario, I'll be selecting GEO_DISTRI, which contains the data on school districts. This is for a scenario where eventually I'd want to compare school districts and how much of each of those districts falls within the intersection layer I've created. 
  • In the Catalog window, go to the Toolboxes option, and expand My Toolboxes, within Toolbox.tbx right-click on PublicLibraryBuffer and choose Edit.
  • At the Insert menu, choose Add Data or Tool. Go up one level in the menu, and double-click on Data Management Tools.tbx, in that folder double-click on Generalization and then select Dissolve and click Add.
  • A rectangle marked Dissolve that has an arrow pointing from it to an oval that says Output Feature Class will appear on your map. Drag it over to the right of Overlap_Libraries_School_Park
  • Choose the Connect tool at the top of the menu bar, and draw an arrow from Overlap_Libraries_School_Park into the box marked Dissolve. From the menu that results, select that this is Input Features.
  • The Dissolve box will now be yellow instead of transparent. Double-click on it to open the options. Change Output Feature Class  to Diss_Libraries_Schools_Parks
  • In the menu for Dissolve Fields, scroll to GEO_DISTRI and check that box. Click OK  to close the options. 
  • Go to the icon at the top of the menu bar that looks like a mouse cursor and click on it. Then click to highlight the Dissolve box.
  • Go to the Model menu and this time instead of selecting the Run Entire Model function, just select Run
  • It will go through the model, adding a drop shadow as each step is run.

  • Save your new model. 
  • There will be a new layer now in your geodatabase called Diss_Libraries_Schools_Parks. Drag it over to the Table of Contents and you'll see the same group of ovals and semi-circles on the map from the last layer only they are now not layered on top of each other. 
  • Right-click on Diss_Libraries_School_Parks and choose Open Attribute Table. When you scroll through you'll see there is now a record for each GEO_DISTRI represented on the map but that there is no longer any additional information about which libraries, schools and parks go into that shape. This will ease processing time on your map. 
  • Save your map

If you want to see how I have constructed my map, it is attached below, along with a jpeg of how the model was constructed.