Example: Raster Layers from an ArcGIS REST Image Server

ArcGIS REST servers are web servers that provide raster or vector layers using REST (representational state transfer) architecture and ESRI ArcGIS protocols.  ESRI uses the name image server to refer to ArcGIS REST servers that provide raster data.    We connect to an ESRI image server as a data source, allowing us to pull raster layers from that server for display.   

 

 This topic uses a connection to a web server that is operated by a third party.   Web servers operated by third parties may change their access policies, use different URLs, go offline, or be very slow.  If you have any connection problems with the server in this topic, review the Notes at the end of the Web Servers topic for tips.

 

For an example showing a connection to an ArcGIS REST server for vector data, see the Example: Vector Layers from an ArcGIS REST Feature Server topic.

 

In our browser (Microsoft's Bing browser is illustrated) we visit the ESRI page at https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/ for links to a variety of example ArcGIS REST feature (vector) servers operated by ESRI.

 

 

Double-click on the Portland link to visit that page.

 

 

The  page lists two ImageServers.   We want the Aerial server.

 

 

Right-click onto the Portland/Aerial link, and choose Copy link from the menu.   The URL we copy is:

 

https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Portland/Aerial/ImageServer

 

The URL above is all on one line.  If the browser displaying this topic wraps it into two lines, when using the URL above make sure to copy and paste it as a single line.

Create a Web Server Data Source

In Manifold, choose File - Create - New Data Source from the main menu, or right-click in the Project pane and from the menu choose Create - New Data Source.

 

 

Choose More... to launch the New Data Source dialog.

 

 

Enter Portland aerial  as the Name.  We can enter whatever name we like, but it is wise to specify a name that reminds us of what this data source contains.

 

Choose Web Server: arcgisrest as the Type.   

 

In the Source box we paste the URL connection string we copied earlier:

 

https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Portland/Aerial/ImageServer

 

  Make sure to check the Cache data box, which is checked by default.  This stores in cache memory everything Manifold downloads from the server, so that subsequent operations, such as panning and zooming, can take the data from cache and not have to download it again.

 

ArcGIS REST servers can be incredibly slow, so once we suffer the pain of waiting for data to be sent by the server we do not want to wait any more to re-fetch the data from the server.

 

Press Create Data Source.

 

A new data source called Portland aerial appears in the Project pane.

 

 

We can expand the data source to see it contains a drawing, an image, and tables for the drawing and image.  Despite being called an ImageServer on the ESRI web page, this particular server provides both vector and raster layers.  Manifold's ArcGIS REST dataport can handle both.   We will work with the Portland/Aerial Image.

Create a Map

We could use the drawing from the data source as is, but it would be more convenient to create a map in the local part of the project, and then to create a version of the drawing in the project, which we can Style.  

 

For the difference between parts of the project that are resident in remote data sources and those parts of the project that are resident locally, see the Portals to Other Worlds discussion in the  Project Pane topic.

 

Right-click into the local part of the project, that is, the lower part of the Project pane outside of the Portland aerial data source, and choose Create - New Map.

 

 

We accept the default name for the new map, and the default choice of a new Base layer of Bing streets.  That creates a map that has a Bing streets background layer, otherwise having no layers.

 

Press Create Map.

 

 

A new map, called Map, appears in the Project pane.   The new map dialog also creates a Bing streets data source for the background layer.

Display the Image Layer in the Map

We pop open the map and zoom in to the region surrounding Portland, Oregon.

 

 

Drag and drop the Portland/Aerial Image into the map.

 

 

The image appears showing top level images from the server, which blend together in a mass of colors.

 

 

Zooming farther in we can see more photographic details as the server begins serving more detailed imagery.

 

 

Zooming even farther into the view we see more typical photographic detail.

 

  If we are following along in this example and repeating it, by now we have noticed that the ESRI server can be very slow to respond.  As we zoom farther into the image the response time seems to get slower.   This is not Manifold being slow: it is just a slow server.

 

We see that the images being provided in the mosaic have poor contrast, and seem washed out.   We can fix that using the Style pane, but first we must create a local copy of the image.

Create a Local Component to Manipulate Style

An image component is just a window that tells the system how to display data that is store in a table.  In the case of an ESRI server providing imagery, all of the data for the imagery is in the table, in this case called Portland/Aerial, that is resident on the server.   The Portland/Aerial Image simply states what field in which table to use for the image.

 

We can copy the image component and paste it into the local project to make a local copy of the image component.

 

 

We right-click the Portland/Aerial Image component within the data source and we choose Copy.   Next, we right-click into the local part of the project, that is, outside of the Portland aerial data source hierarchy, and we choose Paste.

 

 

That creates a local copy of the image, also called Portland/Aerial Image, which we can use as it if were the original image in the data source.   The image we have just created takes its data from the table that is within the data source, but because it is a local structure under our full control in the local project, we can style it as we like.   

 

Since it is unwieldy to have two components that appear to have the same name (the full name of the component in the data source is Portland/Aerial Image : Portland aerial, but still, the two names are confusing), we will rename the copy we have just made to Aerial.

 

 

We drag and drop the Aerial image into the map.  It appears exactly the same as the Portland/Aerial Image layer we dragged and dropped into the map from the Portland aerial data source.  That is as it should be, since after all the Aerial image is taking data from exactly the same table in exactly the same way.

 

We can now change the style of the Aerial image to add more contrast.    With the focus on the Aerial layer in the map window, in the Style pane we Ctrl-click on each of the R, G, and B rows to select them.  They appear with red selection background color.

 

 

We right-click onto the range part (the 0 to 255 portion) of any of the selected rows and choose Autocontrast and then choose 2.0 std, the middle of the range of autocontrast values in the secondary menu.    That will provide medium autocontrast.

 

 

The three selected ranges are immediately recalculated to provide medium autocontrast.   Press Update Style.

 

 

The imagery immediately updates to show better contrast, an effect which will apply throughout the entire Aerial image regardless of where we pan and zoom and thus regardless of which tiles are sent by the ESRI server for new views.

 

 

For example, we can zoom out to a new level of pyramid tiles and the contrast will still be improved.

 

The image within the data source remains the same:

 

 

In both cases the data is coming from the same table, from within the remote ESRI server data source, but the local image has been modified to use better contrast in visualizing that data.

 

See Also

Project Pane

 

Web Servers

 

File - Create - New Data Source

 

ArcGIS REST Servers

 

CSV Servers

 

Custom Servers

 

GeoJSON Servers

 

JSON Servers

 

OSM Servers

 

TMS Servers

 

WFS Servers

 

WMS Servers

 

WMTS Servers

 

Example: Spectacular Images and Data from Web Servers - A must see topic providing a gallery of views illustrating how Manifold can use web servers such as image servers and other free resources to provide a seemingly endless selection of spectacular background maps, satellite images and GIS data with nearly zero effort.

 

Example: Vector Layers from an ArcGIS REST Feature Server - Visit an ESRI web site, copy a URL, and then use that URL to connect to an ArcGIS REST web server that shows petroleum fields in Kansas, getting the data as a vector drawing layer. Style the layer as if it were local.  ESRI refers to ArcGIS REST servers that provide vector data as feature servers.  

 

Example: Connect to a WFS Server for State Government Data - Gathering our courage, we connect to a WFS server that provides 1200 vector layers, run by the state of Massachusetts.   We open a layer showing airports and then scrape the vector data into our own local storage.  

 

Example: Connect to a WMS Server for National Map Layers - Visit the National Map services web page, copy a URL for a shaded relief layer from USGS, and then use Style to enhance that shaded relief data for combination with other layers and really spectacular effects.

 

Example: Connect to a Custom Server for Cadastral Data - We connect to a custom image server that provides cadastral information originally from the French national cartographic agency, IGN.  We create a map and use the Style pane to re-style the web served image on the fly into a more usable form.

 

Example: Connect to a Custom OpenRailwayMap Server - We connect to a custom server that provides an OpenRailwayMap view of railroads worldwide, showing railway, tram, and subway infrastructure based on OpenStreetMap data.  Our first try at creating a data source does not work.  After consulting the Log Window we try again with a slight adjustment and our second try works.

 

Example: Connect to an OSM Vector Server - We connect to an OSM Server that provides a vector layer containing points and lines in the OpenStreetMap database.  We then show how to scrape (copy) data from the OpenStreetMap server into local storage.  We extract building footprints from the local copy.