Some Starting Options to Consider

One of the nice things about Explorer is that you can easily customize it to suit the way you work, or perhaps more accurately – the way you want to work. By choosing Tools, then Options, you’ll find a number of settings that will allow you to customize the way Explorer works for you. Here’s some of our favorites.

Which map do you want to open? By default, Explorer opens your most recently saved map. This is great if your workflow involves using the last map you saved, but it won’t be ideal if you do a lot of authoring and want to start with the default map. In that case, you’ll likely want to start with the Server default map, and if your Home Server is ESRI, then that will be the one you’ll want to start with.

To open the default map instead of your last saved map, just go to Tools, then Options, and choose Startup to toggle Open ESRI’s default map. If you are working from your own home server, then your home server’s name will replace “ESRI.”

Another option to consider is how you travel from one place to another, for example when you click on a result. The default action is to Fly To the next location, but you may prefer Move To. Move To is the instantaneous way to travel. Rather than liftoff and navigate, you’ll immediately be at your next location. Especially if you want to navigate to the same set of places over and over, Move To is instantaneous.

Go to Tools > Options > Flight Characteristics to toggle this setting.

Tired of answering all those wizard questions when you open local data sources? Using Tools > Options > Open Content Settings you can tell Explorer to use your last preferences, bypassing all those questions.

These are just a few of the ways to change the way Explorer works for you. For more information, visit the Setting application options Help topic.

Posted in Uncategorized | Tagged | Leave a comment

Integrating markers and dashes on cartographic representation line symbols

By Charlie Frye, Esri Chief Cartographer

Example of a thrust fault line symbol where the teeth are aligned to the dashes of the line

Using cartographic representations to make line symbols like those in the image to the right, where markers are displayed in conjunction with a dash pattern, requires more than just casual knowledge of the geometric effects. In fact, to make a line symbol like the one shown to the right, the default settings won’t work. Continue reading

Posted in Mapping | Tagged , | 3 Comments

Customizing multi-layer symbols

By Charlie Frye, Esri Chief Cartographer

Example of a multi-layer line symbol

One issue we hear about from the folks who teach cartography with ArcGIS is that users who are new to ArcGIS have some frustration in learning how to make minor customizations to symbols in the style files that come with ArcGIS.  For example, removing a layer from a multi-layer symbol, changing the color of part of a multi-layer symbol, or other minor edits that (in theory) ought to be easy to figure out how to do. Continue reading

Posted in Mapping | Tagged , | Leave a comment

Deploying Custom Tasks with Supporting Files

(Submitted by Rob Dunfey, ArcGIS Explorer SDK Team)

I’ve just uploaded a custom task to the resource center that queries Flickr, the photo sharing website.  You can use the task to search for geo-tagged photos that have been ‘tagged’ with descriptions.

The most obvious path to incorporating geo-tagged photos in ArcGIS Explorer would be to use one of the two XML feeds; Flickr serve, GeoRSS or KML.  I opted to use the Flickr web services API instead, giving me far greater control of the photos returned by Flickr.  The ArcGIS Explorer custom task framework is ideal for working with such API’s, as the custom task executes on a background thread, so the application remains responsive whilst the Flickr database is queried for photos.

Working in Visual Studio, I chose to query the API via the Flickr.NET wrapper developed by Sam Judson – it’s proved to be a really reliable wrapper and congratulate and thank Sam on his work.  I went for the .NET wrapper as I figured it would make for rapid development, in comparison to making web requests against the native Flickr REST API with the .NET base classes.

Developing a custom task that relies on additional files does prompt some head scratching when it comes to deploying custom tasks.  When designing the custom task framework we wanted a simple deployment model that didn’t require developers to generate batch scripts or MSI files to deploy their custom tasks.  We did this with use of NMF file, allowing the developer to use the NMF file to specify the download location of their task assembly.

<E2TaskUIDescriptions xsi:type=’esri:ArrayOfE2TaskUIDescription’>
<E2TaskUIDescription xsi:type=’esri:E2CustomTaskUI’>
<Assembly>MyCompany.MyProduct.MyTask, Culture=neutral, PublickKeyToken=null, Version=</Assembly>
<DisplayName>My Task</DisplayName>
http://www.myserver.conm/MyComapny.MyProduct.MyTask neutral null

This works fine, unless your custom task relies on more than a single file, as is the case with the Flickr task using the Flickr.NET API wrapper.  Fortunately we’ve accounted for this by making use of compressed folders (zip files).  You can zip your task assembly, along with any other required files, and use the download location element of the NMF file to point at the zip file; ArcGIS explorer recognizes the zip file and extracts the content.

<E2TaskUIDescriptions xsi:type=’esri:ArrayOfE2TaskUIDescription’>
<E2TaskUIDescription xsi:type=’esri:E2CustomTaskUI’>
<Assembly>MyCompany.MyProduct.MyTask, Culture=neutral, PublickKeyToken=null, Version=</Assembly>
<DisplayName>My Task</DisplayName>
http://www.myserver.conm/MyComapny.MyProduct.MyTask neutral null

Posted in Uncategorized | Tagged , | Leave a comment

Creating picture lines for graphically pleasing arrangements of picture markers

By Charlie Frye, Esri Chief Cartographer

Excerpt from Thomas Hyde Page's map of Boston in 1775/1776, it was published in London in 1777

For the past few years, when time allowed, I’ve been reconstructing a map of colonial Boston in ArcGIS, using source maps from 1775 to 1784.  The image on the left is an excerpt of one of these maps.  I like a number of the effects that 18th century cartographers had drawn on their maps, including little pictographs for trees (today cartographers call these mimetic symbols).  Anyway, I wanted to add some of these effects to my map.  This posting explains how I showed trees on my map. Continue reading

Posted in Mapping | Tagged , | 2 Comments

ArcGIS JavaScript and REST APIs: "Super Tuesday" results

Boy, time goes fast and the Developer Summit is already upon us. This year’s conference coincides with the release of ArcGIS 9.3 Beta. We are very excited to share with you all the work we put into this release. We have improved the documentation in our SDKs, made map caching easier, added tools to manage security, optimized the web mapping applications, and many other things.

Today, we just want to talk a bit about the new ArcGIS JavaScript and REST APIs. We built this new JavaScript API because many of you have asked for a simple way to share your GIS data and tools over the internet. Here is an example built on top of the ArcGIS JavaScript API.

We have kept this ArcGIS JavaScript API very simple; to make sure that everyone could take advantage of it without being a hardcore programmer. But at the same time, you’ll quickly learn that this API will let you go beyond mapping and incorporate advanced GIS functionality into your applications. You’ll have access to a complete online SDK with many samples for getting started and using this API. The example above goes beyond your simple “Hello World” mapping application and includes interactive charting of feature attributes using the Google Chart API.

For those of you who are familiar with REST, at 9.3 you’ll be able to REST-enable your GIS services. Once you enable REST on your GIS services, you’ll be able to access them with any scripting language such as Python, PHP, Ruby and why not, with JavaScript. In fact, the ArcGIS JavaScript API is a collection of JavaScript libraries that use ArcGIS REST resources. We built it for you so you can get the most common tasks, accessing map, geoprocessing, and geolocator services, done with minimum effort. For those who want to go the extra mile or use REST directly we are fully documenting the REST API as well.

We look forward to seeing you at the Developer Summit where you can learn more about ArcGIS Server 9.3. In the meantime, if you are curious, listen to these podcasts about sessions on ArcGIS Server REST services and ArcGIS JavaScript APIs.

Mark your calendars: March 17-20 in Palm Springs

-The ArcGIS Server Development Team

Posted in Services | Tagged , , , , , | 4 Comments

ArcGIS Explorer = Many Kinds of Layers

One of Explorer’s distinguishing features is its ability to connect directly to a wide variety of Web service-based content and a wide variety of local data, both vector and raster, and integrate and manipulate them all in a single map. It’s truly in a league of its own in this regard. Shown below is Explorer with:

  • 2 ArcGIS Online layers
  • 1 WMS layer
  • 1 ArcIMS layer
  • 2 2D ArcGIS Server layers (1 of them dynamically updated every 10 minutes)
  • 1 3D ArcGIS Server layer
  • 1 KML (from the USGS site)
  • 1 KMZ (from the NOAA site)
  • 1 Shapefile
  • 1 Result (a collection of points imported from GPS coordinates in a textfile)
  • 1 BSQ raster image (from the EROS Data Center)

And we could add even more.

Several of the layers have been made partially transparent so they can be overlayed, and several have scale dependencies. The underlying data sources for the Web-based content include everything from enterprise ArcSDE geodatabases, file and workgroup geodatabases, and local sources that include shapefiles, rasters, and points added from textfiles containing GPS coordinates.

Posted in Uncategorized | Tagged , , , , , , , , | Leave a comment

Explorer and Super Bowl XLII

Posted in Uncategorized | Leave a comment

Tip for creating annotation for complex maps

By Charlie Frye, Esri Chief Cartographer

Right-click menu for a data frame showing convert labels to annotation

Complex maps such as topographic maps present several significant challenges for setting up labeling rules and creating annotation.  The first challenge is that these maps typically have many layers and types of features, requiring map authors to create and manage numerous label classes. Second, these layers may have a high density of features, which means that automated labeling for these maps requires loading all the data into the labeling engine and making your computer to work fairly hard. Third, some labels on the map are very important and should be placed optimally (e.g., labels for cities or very important landmarks); some labels can be placed with some flexibility (e.g., placing river or stream names along lines; there are many candidate positions along a given line); and some labels are just less important (e.g., labels for contours, which must yield to the other information on the map). Continue reading

Posted in Mapping | Tagged , | 10 Comments

Deconstructing the map cache tiling scheme (Part II): Working with map caches programmatically

This post explains ways to access cached map service tiles programmatically. This is useful if you don’t have access to a Web ADF Map control but you still want to quickly retrieve map images for a certain area. Another reason to retrieve tiles programmatically is if you want to overlay them on other services, such as Google Maps…but that’s a topic for another post. Today we’ll be focusing on how to get a tile of interest.

Before you continue, you should be familiar with how the tiling scheme works. See the archived post Deconstructing the map cache tiling scheme (Part I) if you need a review.

There are lots of ways to retrieve tiles from an ArcGIS Server map cache. The way that you use is affected by several factors which are listed here. This post shows two of the fastest ways to retrieve tiles:

  1. Using a simple HTTP Get request to the virtual cache directory of the Web server
  2. Requesting a tile from the ArcGIS Server map service tile handler

First let’s look at an example of each URL.

Virtual cache directory

If the virtual directory is exposed, you can request a tile from the Web server via the public cache directory. Here’s an example of a URL for a tile retrieved from the virtual cache directory:

Let’s break this URL down.

  • Root URL of one of your virtual cache directories
  • dgaerials: Map service name
  • Layers: The name of the data frame of interest in the map service
  • _alllayers: All layers in the map. This is always the case for single fused caches, if you have a multi-layer cache it will correspond to the specific group layer that was cached in the multi-layer cache
  • L00: Level ID
  • R0000029f: Cache tile row in padded hexadecimal format
  • C00000280.jpg: Cache tile column in padded hexadecimal format

To programmatically discover the virtual cache directory you can call:


Where defaultMapName is the data frame name and layerNumber is -1 for fused caches or the index of the layer of interest for multilayer caches.

Map service tile handler

If the virtual directory is not exposed, you can still request a tile from the web server, but in this case you need to use the map service tile handler. Here’s an example of a URL for a tile retrieved by the map service tile handler:

Here is the breakdown of this URL:

  • URL to the map service of the cache
  • mapName=Layers: Map name of the cached map service
  • format=JPEG: Image type of the cache
  • level=0: Level ID
  • row=671: Cache tile row in decimal format
  • column=640: Cache tile column in decimal format

The SOAP API and cached tiles

The accompanying code example shows how to use the ArcGIS Server SOAP API to get information about a cache and create a URL to retrieve a specific tile. You don’t need any ESRI software installed to program with the SOAP API. You just need a running ArcGIS Server whose services are enabled for Web access. In Microsoft Visual Studio, you can add a Web reference to one of these services and access a number of methods.

If you’re not familiar with adding a Web reference to your project or working with SOAP, you should definitely read the ArcGIS SOAP API Overview. It also explains how the SOAP API uses proxy classes and value objects to expose GIS functionality through Web services. Some of the most important value objects to know about when working with cached map services in the SOAP API are:

  • TileCacheInfo: Contains spatial reference information, as well as the width and height of the tile in pixels.
  • LODInfo: Contains information about the resolution and scale for a level of detail in the cache. You can access an array of LODInfos from TileCacheInfo.
  • TileImageInfo: Contains information about the cache image format

Getting a tile

When using the SOAP API, you might be tempted to get a tile by calling MapServerProxy.GetMapTile( ). It’s actually faster to construct the URL and get the tile directly, as we show in the code example.

Finding the specific tile that covers your point of interest requires a little bit of math. These are some important things to know:

  • The tiling origin

    Remember that the tiling origin is the upper-left point of the tiling scheme grid. You can get it using TileCacheInfo.TileOrigin.

  • The width and height of a tile in ground units

    You can get this by multiplying the tile width (TileCacheInfo.TileCols) or height (TileCacheInfo.TileRows) by the resolution (LODInfo.Resolution)

  • The row and column of your point of interest on the tiling grid

    Columns are zero-based and increase as you move to the right from the tiling origin. Rows are also zero-based and increase as you move down from the tiling origin.

    For example, in the map below, if you were traveling from the tiling origin to Salt Lake City, you would have to move five tiles to the right and four tiles down. This puts Salt Lake City in Column 4, Row 3.

Tiling grid 

Here’s some math you can use to find any tile:

Column = Floor((Point of interest X – Tile origin X) / Ground width of a tile)


Row = Floor((Tile origin Y – Point of interest Y) / Ground height of a tile)


This example application does the following things using the ArcGIS Server SOAP API:

  1. Connects to a map service and discovers whether it has a cache
  2. Computes the number of tiles needed to cover the map horizontally and vertically. This is useful if you have an empty tiling scheme and you want to find out how many tiles will need to be created as part of the caching process.
  3. Creates a URL to get the center tile directly from the virtual cache directory
  4. Creates a URL to get the center tile using the tile handler

See the example application

Download the code (See authors’ comments in Default.aspx.cs)

-Jeremy Bartley and Sterling Quinn

Posted in Services | Tagged , , , , | 3 Comments