Park Tiles Imagery

Posted on 28 May 2014 by Mamata Akella

We're excited to share the newest addition to our suite of custom NPS basemaps: Park Tiles Imagery.

Park Tiles Imagery is a reference overlay that can be placed on top of imagery services licensed by the NPS, including Bing, Esri, and Mapbox. NPS employees can now seamlessly switch between Park Tiles and Park Tiles Imagery for their mapping needs.

Stay tuned for more news about how we are customizing Park Tiles for different use cases - including mobile and multiple overlay types. And make sure you view the map above on your retina device!

Adding Park Tiles to ArcGIS Desktop

Posted on 23 May 2014 by David Warren

We just made a big update to the National Park Service's basemap, Park Tiles, and have fielded questions from quite a few GIS users in the NPS who want to bring the basemap into ArcGIS Desktop. Luckily the process is fairly simple!

To start, you must either be part of the NPS Organizational Account for ArcGIS Online or create an account within the NPS GIS Portal. If you do not already have an NPS Organizational Account, send me an email and I'll respond with an invitation. Or, if you prefer, you can sign in to the NPS GIS Portal and create your own account instantly.

In ArcGIS versions 10.2 and above, it is now possible to pull in tiled map services from basemap providers other than Esri, such as Mapbox, Stamen, and, of course, the National Park Service. To access these basemaps, you must first run ArcGIS Administrator (assuming you have administrator rights on your computer).

ArcGIS administrator.

Click the “Advanced” button in ArcGIS Administrator, and then choose “Manage Portal Connections”.

Manage {ortal connections.

This will allow you to add your NPS Organizational Account and/or a NPS GIS Portal account to ArcGIS Desktop. is already added to your connections, so you don't need to manually add it. If you'd like to add the NPS GIS Portal Account, select “Add”.

Add the NPS GIS Portal Account.

Next you will be prompted to connect to the NPS GIS Portal account. This can be done by placing into the address bar and clicking “OK”.

Add URL.

If you prefer to connect to the NPS GIS Portal through ArcGIS Desktop, ensure that the portal entry is highlighted and choose “Connect”.

Connect to the NPS GIS Portal.

Click “Save” and then “OK” to close out ArcGIS Administrator. You should now be set up to interact directly with or NPS GIS Portal via ArcGIS Desktop. From here, you can open a blank map document in ArcMap and choose “File > Sign In”.

Sign in.

For the rest of this walkthrough, I am going to sign in to the NPS GIS Portal because that’s what I highlighted in ArcGIS Administrator. If was highlighted before saving, you will also see the option to sign in to

Sign in to the NPS GIS Portal using the login credentials you created in a previous step.

Sign in to the NPS GIS Portal.

After signing in to the NPS GIS Portal, you can add the Park Tiles basemap - as well as basemaps from other providers. Go to "File > Add Data > Add Basemap". The “Add Basemap” window will open, and all the basemap items available through the NPS GIS Portal will be available to you.

Add basemap.

Under the "Table of Contents", with the “List by Drawing Order” tab highlighted, you should see Park Tiles available under the “Basemap” Layer.

List by drawing order.

The map will not display until you complete one last step. Right-click on the “Basemap” level, and choose “Ungroup”. By default, ArcMap pulls basemaps in as "Group Layers", and ungrouping releases the tiles. Now you should be able to use Park Tiles within ArcGIS Desktop.

Ungroup the basemap.

You can use this same process for all basemaps added to the NPS Organizational Account and NPS GIS Portal. If you have any questions feel free to get in touch. Enjoy your mapping!

The final map.

Using CartoDB to Label Detailed Lines in TileMill

Posted on 19 May 2014 by Mamata Akella

The best practice for labeling detailed lines at smaller scales in TileMill is to create a generalized line dataset for labeling while using the more detailed line dataset for display. There are several approaches that can be used to accomplish this task, some of which are described below.

A more detailed how-to is provided for an approach we found to be best suited for a recent project where we used CartoDB to generalize lines to label roads in TileMill.


One approach it to use either QGIS or ArcGIS to generalize lines at multiple tolerances for labeling at different scales. The result of this, as many of you know, is multiple generalized output datasets that are styled in TileMill depending on the scale level. This approach requires bringing each simplified dataset into TileMill in order to see if the simplification results were successful and to test out the labels, and, if the results aren't desirable, going back to either QGIS or ArcGIS and re-running the process.


A TileMill workflow is to connect directly to a PostGIS database and create a simplification query. This is a good solution if you are comfortable setting up and importing data into PostgreSQL/PostGIS, but it should be noted that tile creation can slow down if TileMill has to wait for simplification to take place in the database. This is especially true for large datasets.

An alternative (and recommended) solution for TileMill is to use PostgreSQL/PostGIS and add multiple attributes to the line dataset where different simplified geometries can be stored. Those attributes can then be used in TileMill to label lines at different scales. This can be a little intimidating if you aren't familiar with PostgreSQL/PostGIS, but storing simplified values in the line dataset minimizes the amount of additional datasets that need to be managed and the amount of work TileMill has to do.


The solution that I found to be most efficient and least intimidating was to use CartoDB which is basically PostgreSQL and PostGIS running in the cloud. When you upload a dataset to CartoDB, it is read into a spatially-enabled database.

A really neat (and powerful) feature of CartoDB is the ability to write SQL queries using the SQL API. This means that data stored in CartoDB can be modified and queried on the fly using SQL statements run through the SQL API.

To relate this back to our generalized lines for labeling roads:

  • We can store our line dataset in CartoDB
  • We can query that dataset, via the SQL API, multiple times with different simplification tolerances
  • We can then access the simplified version in TileMill and style it accordingly
  • If the simplification results are not satisfactory, we can easily change the query and see a different simplification tolerance on the fly in TileMill

The map I designed is meant to display road closure status for zooms 9-14. Given the map's intended use, it is important that road labels display at all zoom levels. Using the original line dataset at zooms 9 and 10 was the biggest issue; some roads were being labeled, but not as many as I wanted. At larger zooms (11-14), generalized lines were not needed and default label placement in TileMill worked well.

Road labels at zoom 10 with non-generalized lines. Road labels at zoom 10 with non-generalized lines.

Road labels at zoom 10 with generalized lines. Road labels at zoom 10 with generalized lines.

You'll notice that using generalized lines for labeling at zoom 10 allows more roads to be labeled and also results in better placement and distribution.


Here is an outline of the workflow we used to bring in generalized line data from CartoDB to label our roads in TileMill:

  1. Upload roads data to CartoDB
  2. Construct a SQL API request to run simplification on the roads table stored in CartoDB
    • Follow this basic template from CartoDB to get started:
      http://{account}{SQL statement}
    • For our map, we constructed the following query where ST_SIMPILFY is the simplification method:
      https://{account} ST_SIMPLIFY(the_geom,  1700) as the_geom,name FROM roads&format=geojson
  3. Paste the constructed URL in TileMill's layer editor: Labeling roads.
  4. Apply styling to the road labels in TileMill using CartoCSS:
     text-name: [name];
     text-size: 12;
     text-face-name:'Open Sans Regular';
     text-fill: red;
     text-halo-fill: white;
     text-halo-radius: 1.5;
     text-placement: line;
  5. If you aren't satisfied with the results, modify the SQL query to test out different simplification values:
    • From our constructed URL example above, the simplification tolerance is 1700 (meters because our data are in Web Mercator)
    • To experiment with different values, open the layer editor in TileMill, change the simplification tolerance and resave the project
    • Since the CartoCSS for road labels is already defined, the road labels will automatically update using the new simplification value
  6. If you want to use generalized lines to label at multiple zoom levels, add another layer to TileMill and modify the SQL query to best suite the zoom level you are designing for
  7. Experiment with different values until you are satisfied with the results!

Using this method, I only had one dataset to manage, could test out different simplification values on the fly, and avoided the hassle of setting up a database.

Park Tiles

Posted on 05 May 2014 by Mamata Akella

A little over a year ago, we introduced the first version of the National Park Service's basemap, Park Tiles. Today we are excited to announce the launch of a newly designed, more detailed version of the map!

Built for National Parks

Park Tiles is a custom-built basemap designed first and foremost to highlight the special places around the country that the National Park Service manages.

In order to make National Park units the focus, most information that is not directly related to Parks has been omitted from the map. We've also decreased the amount of labels on the map to enhance support for overlays. The example shown below includes POIs (points of interest) from the Places system overlaid on top of the basemap. At larger scales, the POIs in parks are interactive and can be clicked to access more information about individual features.

Zion National Park

From air visiblity data to road closure status and campsite availability, Park Tiles has a flexible design that can be used to support a wide variety of overlays and use cases. Park Tiles can also be used as a standalone map that Parks can embed in their website.

More Detail

The biggest change to Park Tiles is that the map now shows more detail in Parks. The first version of the map was built to zoom 9 (~1:1,000,000) while the current version is built to zoom 19 (~1:1,000). This means you can now zoom into any one of the 400+ Parks around the country that the National Park service manages and see building-level detail.

Combining Data Sources

Park Tiles uses a combination of OSM (OpenStreetMap) and National Park Service data. We are using OSM primarily for base data, including administrative boundaries, place names, hydrography, roads, and buildings. We are using Park Service data for Park boundaries, Park names, and POIs within Parks. In addition, we are using a vector hillshade layer created by Mapbox.

As the National Park Service develops servicewide datasets, we plan on incrementally replacing OSM data within National Park boundaries with this data.

Vector Tiles

The first version of Park Tiles was built using TileMill, an open source cartographic design studio. Park Tiles is now built with TileMill 2, which allows us to take advantage of the new vector tiles format. Vector tiles make it possible for us to seamlessly combine custom Park Service data with minutely-updated data coming in from OpenStreetMap. This means that Park Tiles is now a truly living map. Changes made in OSM appear in Park Tiles within minutes, and changes made to Park Service data in our Places system are also pulled in on a regular schedule.

The switch to vector tiles also allows us to start experimenting with next generation client-side rendering techniques.

Park Tiles in Action

NPMap will continue to use Park Tiles as the basemap for many of our custom projects. Park Tiles is also now the default basemap in the NPMap Builder, a map building interface that guides NPS employees through making web maps that are accessible, responsive, and fit into the graphic identity of the National Park Service. Park Tiles will also serve as the centerpiece of the Places Mobile framework - providing locations, sites, and geo-located content for iOS and Android apps created by Parks.

Park Tiles is available for use by all National Park Service Parks, programs, regions, and partner organizations. Contact us if you're interested in using the map in your project.

Take a Tour

You can access the full map viewer here. We'd appreciate any feedback you have, so feel free to send us feedback by clicking the "Submit Feedback" link in the bottom right-hand corner of the map.

We've also started a list of Frequently Asked Questions to help answer some basic questions about Park Tiles. Check back often for new content on that page.

Stay Tuned

In the coming weeks, stay tuned for more detailed blog posts on how we built Park Tiles and how you can help us improve the map.

We are actively working on 'exploding' the map like we did with the original version of Park Tiles. We'll report on our progress with that soon!

Welcome, Katrina Engelsted!

Posted on 14 Apr 2014 by Nate Irwin

I am very happy to welcome Katrina Engelsted to the NPMap team!

Katrina brings a wealth of experience working with OpenStreetMap - most of which was gained working with the Humanitarian OpenStreetMap Team in Indonesia and the Phillipines. Pulling from this experience, she will act as an OpenStreetMap evangelist for the National Park Service, helping Parks get off the ground using OpenStreetMap and engaging with members of the public who are interested in mapping our National Parks.

She will also work as the NPMap lead for the National Park Service's centennial initiatives, making digital mapping an integral part of the experience.

Take a look at Katrina's team page for more information about her background and interests. You can also find her online on Twitter, GitHub, or the talk-us-nps OpenStreetMap mailing list.

Welcome, Katrina!