Archive for January, 2011

Beta Chapter From My Upcoming Book on the ArcGIS Server API for JavaScript

Posted on January 25, 2011. Filed under: ArcGIS Server, ESRI, GeoSpatial Training Services, JavaScript |

I am in the process of writing a book (tentatively titled ‘The GIS Geeks Guide to Mastering the ArcGIS Server API for JavaScript”) about the ArcGIS Server API for JavaScript.  I thought that I would make the process a bit more open by releasing beta chapters that some people might read and give feedback on. Hopefully one of those people is you!

I’m doing this because I think the book will be better based on feedback that I get from my readers and of course it will serve as motivation for finishing the book!

About the book

In short the book is about how to use the ArcGIS Server API for JavaScript to build high performance, attractive Web mapping applications using the lightweight, browser based ArcGIS Server API for JavaScript.  It will be very hands on with lots of examples that can be used right away.

Download the chapter

I am not going to release the chapters in chronological order so the first chapter to be released in public beta is not the first but rather the third covering maps and layers.

Download the chapter, read it, and tell me what you think. Either by posting a comment below or by contacting me directly through eric at

Download a beta chapter.

The chapters

Here’s a tentative list of all the chapters in the book:

  • Chapter 1: Introducing to the ArcGIS Server API for JavaScript
  • Chapter 2: ArcGIS Server Basics
  • Chapter 3: Working with Maps and Layers
  • Chapter 4: Adding Graphics to the Map
  • Chapter 5: Using Widgets and Toolbars
  • Chapter 6: Editing Data in the Browser
  • Chapter 7: Working with Time
  • Chapter 8: Querying Data from Map Services
  • Chapter 9: Obtaining Information about Features
  • Chapter 10: Finding Features
  • Chapter 11: Turning Addresses into Points
  • Chapter 12: Getting from Point A to Point B (Routing)
  • Chapter 13: Geometry Tasks
  • Chapter 14: Using the Geoprocessor
  • Chapter 15: Understanding Events
  • Chapter 16: Configuration Parameters
  • Chapter 17: Working with Secure ArcGIS Services
  • Chapter 18: Dojo Application Layout Controls
  • Chapter 19: Dojo Form Controls
  • Chapter 20: Advanced Dojo Controls (Trees, Grids, Charts, Image Handling)
  • Chapter 21: Integration with Google Maps
  • Chapter 22: Integration with Bing Maps
  • Appendix: API Reference

As of now I don’t know in which form this book will be published, but I’ll keep you informed as things progress.

If you have a request for something that you want me to include in the book, or any thoughts or questions about it, please contact me.

We’ve also written a number of posts on the API for JavaScript and most have been compiled here.

The next session of our Internet based, instructor guided Mastering the ArcGIS Server JavaScript API begins March 21st.

Read Full Post | Make a Comment ( None so far )

Arc2Earth Cloud Services Drives Vineyard Power Site Selection

Posted on January 20, 2011. Filed under: Arc2Earth, Dojo, GeoSpatial Training Services, Google Maps |

Recently, GeoSpatial Training Services completed a custom, web based GIS application using the new Arc2Earth Cloud Services and its associated REST API.  Arc2Earth Cloud Services is an excellent alternative for deploying GIS applications to the web without the hassles and costs of standing up and configuring a GIS server.  In this article we’ll provide you with an overview of Arc2Earth Cloud Services and then take a shallow dive into the REST API to show you how to take advantage of this new service for building web mapping applications.

Arc2Earth Cloud Services is particularly attractive to small and medium sized organizations that need to deploy their data and applications to the web but don’t have the expertise nor the budget to purchase, install and configure, administer, and maintain a GIS server.  Vineyard Power, a renewable energy cooperative in Massachusetts, is a perfect example of this scenario. Vineyard Power is planning a cooperatively owned offshore wind farm at a site to be selected by its members. They worked with their membership and the community to develop siting criteria to compare the suitability of potential sites. With these criteria as their guide they created and compiled a variety of GIS layers to describe the physical characteristics that affect a site’s economic viability, the locations of important wildlife habitats and commercial fishing areas, and potential visual impact. Other layers include shipping lanes, sub-merged shipwrecks and popular recreational fishing areas.

To support its members in making an informed decision Vineyard Power needed a way of distributing this data in a meaningful way to a broad audience.  Using Arc2Earth for ArcGIS Desktop and Arc2Earth Cloud Services, Vineyard Power was able to export these data layers to the cloud where they could then be integrated into a Google Maps viewing application using the Arc2Earth Cloud Services REST API.  You can see a screenshot of the application below.  Tilesets are displayed in the viewer as the user clicks an item from the table of contents on the right hand side of the application or when clicking a subject tab just below the map.

According to Tyler Studds, Project Manager, “The functionality provided by A2E has been an incredible asset to our site selection process. The interface between cloud and desktop GIS is smooth and it has made it very easy to upload tilesets and to experiment with how they will appear in the web application.”

What is Arc2Earth Cloud Services?
Arc2Earth Cloud Services is a new ArcGIS Desktop software extension (currently in public beta testing) for uploading your existing GIS datasets to the cloud as vector datasets or tileset map caches.  Once uploaded, vector datasets can be searched and edited through ArcGIS Desktop or a custom, browser based map viewer.  In addition, Arc2Earth Cloud Services also provides various services including the ability to combine attribute searches with spatial operations.

As we have done with the Vineyard Power application, you can extend your data into Google Maps, Bing, and OpenLayers and build both web and mobile applications.  The API is also compatible with the ArcGIS Server Open Geoservices REST specification which allows you to use all of the infrastructure, web applications, mobile applications, and web APIs with your Cloud hosted data.

Arc2Earth Cloud Services is built on Google App engine which is designed for automatic and instant scalability along with the reliability, performance, and security of Google’s infrastructure.  Storage costs are dramatically reduced due to the cost efficient hosting provided by Google App engine.  You only pay for the CPU/Bandwidth/Storage that you use.

Creating and Using an Arc2Earth Cloud Service
Before you can begin using Arc2Earth Cloud Services you’ll first need to create an instance which is hosted by Google App Engine.  This article from Arc2Earth fully describes this process.

After creating an Arc2Earth Cloud instance you can then start creating Tilesets and uploading vector layers.  You can then manage your instance through the interface as seen below.  Here you see a listing of tilesets that have been loaded for a cloud instance.

Clicking a particular tileset will display additional information including a display of the data on a Google basemap.

The Arc2Earth Cloud Services REST API

All data uploaded to an Arc2Earth Cloud instance is accessible through a standard REST API which exposes several APIs including the following:

Datasource API – Read/Write access to vector data using industry data standards

Tileset API – Read/Write access to all tile caches

Static Map API – All tilesets have built in support for combining multiple tilesets on the server to create a single static image.

Vineyard Power published several dozen layers as individual tile caches to their unique Arc2Earth Cloud.  We then used the Tileset API to access the various tiles that had been published to the Cloud and display them in a Google Maps application.    In addition to using the Tileset API and the Google Maps API we also took advantage of the Dojo JavaScript framework to create the user interface and handle browser differences.  Dojo widgets including the TabContainer and Tree were used to handle the display of various tilesets in the map viewer.  We also created a custom base map layer for Google Maps using a NOAA tileset that was uploaded to the Arc2Earth Cloud.  See the figure below.

Programming with the Tileset API
As I mentioned earlier in the article we only used the Tileset API for this particular application since we were dealing with tilesets.  In future articles we’ll explore the Datasource API and Static Map API and the capabilities of each, but for now we’ll concentrate on the Tileset API.

With the Tileset API you can get a list of all tilesets for a Cloud instance, get an individual tileset, add a new tilset, delete a tileset, and bulk uploaded tiles.  You can view the documentation for the Tileset API.

In the Vineyard Power application which functions solely as a map viewer the only thing we’re interested in doing is accessing tilesets from the Cloud instance.  The tileset that we access depends upon the layer that has been clicked in the table of contents.  Map tiles can be accessed using either the Google Maps or Microsoft Bing naming conventions as seen below.

We used the Google Maps naming convention along with the ImageMapType class from the Google Maps API v3 to add a tileset to the map.  A code example is provided below.  The ImageMapType class is provided for rendering image tiles such as the ones stored in our Arc2Earth Cloud instance.  This class takes a parameter of type ImageMapTypeOptions which is used to set various properties of the new ImageMapType including the Url (getTileUrl) to the tileset, tilesize, if the image is a PNG, transparency value (opacity) and others.  Once these parameters are set we simply call the ‘push’ method on map.overlayMapTypes to push the tileset into the Google Maps display.

There was a lot of additional code that we implemented in the application to create the tree and tab structures, layout the application, clear the layers, and add a NOAA basemap, but the primary purpose of the application was to display tilesets on a Google Maps base layer and this is pretty easy to accomplish using the Tileset API for Arc2Earth Cloud Services.  In future posts we’ll take a look at other functionality provided by the Tileset API along with the Datasource API and Static Map API.

GeoSpatial Training Services is an authorized reseller of Arc2Earth and a Google Maps Qualified Developer.

Read Full Post | Make a Comment ( None so far )

2011 Schedule of Instructor Led Courses (1st Quarter)

Posted on January 5, 2011. Filed under: AGIS Server API for Flex, ArcGIS Server, ESRI, Geoprocessing, GeoSpatial Training Services, JavaScript, Python |

Here is our schedule of instructor led courses for January-March 2011 in both web based and traditional face to face formats.

Mastering the ArcGIS Server JavaScript API
Web Based
January 10th – February 18th
Still 5 Seats Available

Programming the ArcGIS Server API for Flex
Web Based
January 10th – February 18th

ArcGIS Server Bootcamp
Web Based
February 14th – March 18th
$715 when you register by January 15th

GIS Programming 101 for ArcGIS 10
Web Based
February 21st – March 18th
$567 when you register by January 15th

GIS Programming 101 for ArcGIS 10
Traditional Face to Face
February 7th – February 9th
Keck & Wood Headquarters
Duluth, Georgia
More Information
Click here to register

This last one is in May but it’s already on the calendar so we’re including it as well.

GIS Programming 101 for ArcGIS 10
Traditional Face to Face
May 23rd – May 25th
King County GIS Center
Seattle, WA
Contact sales at for more information on this session or to register.

Read Full Post | Make a Comment ( None so far )

Liked it here?
Why not try sites on the blogroll...