Archive for September, 2009

Just wanted to remind everyone that you can get a free copy of our e-learning course “Introduction to the Google Maps API“. You will receive an email containing a download link to an installer file (setup.exe) which you can use to install the course on your local computer. If you would prefer not to download or install the course on your computer you can also view the online version of the lecture here. Some of you have expressed that you would prefer the online version to an installer file. If you choose to view the online lecture you may also consider downloading the data for the exercises as well as the instructions for the exercises.

Please pass this information along to anyone you feel would benefit from this course.

While there are many ways to add digital photos to your GIS, I find that using GPS is the easiest – provided you have a useful workflow. Finding that workflow, however, can be extremely frustrating due to the myriad of GPS and camera hardware and software options. In this multiple-part blog, I will attempt to shed light on this topic so you can find the equipment and workflow that’s right for you. The information for these articles is taken from my Adding Digital Photos to Your GIS e-course.

Georeferenced Photos as Layers
You’ve decided that you want to add digital photos to your GIS. Great! Now you need to determine how you’d like the photos to behave. Basically, you have two options. One is to have a georeferenced photo that is added as its own layer in ArcMap. Because it is georeferenced, the photo is mapped in projected coordinate space so you can see it on your map in its proper location. This method is useful for showing landscape features, perhaps to show how features and terrain change over time. It is also a good way to create a geoscrapbook to document a journey as I’ve done for one of my Sedona hikes, below.

There are a number of ways to use GPS to georeference digital photos. The workflow you use depends on the hardware and software you want to use. The goal of each is the same – assign geographic coordinates to the EXIF header of your photos – a process called geotagging. Equipment options include the following:

A GPS unit with an integrated camera

A GPS unit with a connected camera

A GPS unit with a stand-alone camera and office software for photo-linking

Digital Photos as GIS Attributes
The second way to store digital photos in your GIS is to include them as attributes of your GIS features. Here, the photo itself is not georeferenced but is instead tied to a GIS point, line, or polygon. For example, I maintain a GIS point dataset for Sedona hiking trails called ‘Trailheads’. I store a photo of each trailhead as an attribute of the feature in a field named ‘Photo’, see below. Though the photo will not appear as its own layer in ArcMap, I can use the Identify and Hyperlink tools to open the photo when clicking on the feature.

For this type of GIS photo storage, you will need to create a text field in your GIS attribute table to store the path and name of the photo. You can add your photo paths and names manually in an edit session – just type the pathname in the appropriate attribute table cell. Depending on where you store the photos relative to where you store the ArcMap MXD, you can omit the full path name as I did in the example above. If you only have a few photos, then manually entering the text is acceptable. If you have a lot of photos, however, this method is inefficient.

This is where GPS can help. GPS can automate the photo-linking so that digital photos taken in the field are automatically linked to the appropriate GIS feature. Again, there are a number of workflows you can employ to accomplish this task – each based on your GPS and camera hardware and software tools. These include the following:

GPS unit with an integrated digital camera and appropriate field software

GPS unit with a connected digital camera and photo-linking field software

GPS unit with a stand-alone digital camera and photo-linking software for use in the office

Once you’ve decided whether you want your GIS photos to be georeferenced layers or stored as attributes of other features, you can begin to identify the appropriate GPS, camera, and software tools you will need. In the next article, I will go into more detail about using GPS to geotag your photos.

GeoSpatial Training Services is an authorized provider of GIS courses that can be used to fulfill the educational achievement points section for achievement or renewal of your GISP certification through the GIS Certification Institute. We recently updated the number of hours that can be achieved by completing each of our courses. Please see below for a list of courses that we offer which are authorized by GISCI.

When ESRI announced that ArcPad 8 would have a brand new interface, I figured it would be a mild face-lift of the same cluttered interface. Boy was I mistaken! For those of you who are unfamiliar with older versions of ArcPad, one of the main problems with the interface was the three main toolbars stacked on top of each other which effectively gobbled up the top portion of the screen. If using ArcPad on a small mobile device where screen real estate is pricey, the stacked toolbars took up too much space to comfortably work with your map.

New Look
With ArcPad 8, you see the improvements immediately upon start-up. The new Open Map dialog shows the name and now a thumbnail image of your ArcPad map documents. And those clunky toolbars are gone! Ditto for the outdated tool icons. ESRI adopted the ribbon concept introduced by Microsoft Office 2007 – with a clean ribbon of tabbed toolbars. ArcPad 8 now has three tabs across the top of the screen – each representing the same functionality as the original toolbars – standard, browsing, and editing tools. If you elect to install the StreetMap extension, you will see a fourth tab for those tools. You now have the option to dock the ribbon in various places as well as hide it.

For long-time ArcPad users, you will not have to relearn tool locations. The same tools are still available and grouped on the same toolbars where they always were – they are just more efficiently presented.

The new Open Map dialog shows thumbnail images

New Functionality
Beyond these cosmetic enhancements to ArcPad, there are some smart inclusions to the new interface. One is the Quick Action button – a customizable dropdown list where you can place commonly used tools for easy access. If you or your field workers only use a handful of the available ArcPad tools, you can place all of them in the Quick Action menu and even order them to match your workflow.

Another new feature is the Map Navigator. It is a group of the four basic navigation tools (zoom in, zoom out, pan, full extent) that appears translucently in the top left of the map. Using these Map Navigator tools allows for a one-shot use of the tool. For example, if you’d like to zoom in while in the middle of editing a polyline, you can tap the Map Navigator zoom-in tool, drag a box to zoom-in, and then automatically go back to having the edit polyline tool be active. If you were to use the regular zoom-in tool on the Browse toolbar in this scenario, activating the zoom-in tool would keep that tool active until you tap to re-activate the edit polyline tool.

ArcPad 8 interface enhancements
GPS Enhancements
For GPS users, there are several improvements in ArcPad 8. There is a new GPS Status Panel which is a translucent panel at the bottom of the screen with current XY coordinates and other GPS information. The background color of the status bar changes based on GPS signal quality. Tapping on it opens the GPS Position window which has been completely updated. It is now a single window with four tabs that show data, compass, skyplot, and quality information with much-needed modernized graphics for compass navigation and satellite information.

Updated GPS Position window

Customizing ArcPad

ArcPad 8 now comes with ArcPad Studio. With previous versions, you had to make a separate purchase of ArcPad Application Builder to customize ArcPad with custom buttons, tools, and behavior. If you know a scripting language, you can create custom forms, automate tasks, and customize ArcPad behavior. If you’re not a programmer, the ArcPad Toolbar Manager allows for some basic drag-and-drop customization.

Other enhancements to ArcPad 8 include changes to the Data Manager Extension for checking or copying out data from ArcGIS for use in ArcPad. You have more options for how you want to work with your GIS data in the field – either as read-only background data or editable data that can be integrated with an existing geodatabase. For those using ArcGIS Server, the new ArcGIS Server ArcPad extension allows for synchronization of your ArcPad fields edits with an enterprise geodatabase.

Do you need to learn how to use ArcPad? Check out our GPS Mapping with ArcPad e-training class or contact GeoMattix at info@geomattix.com to find out about other ArcPad training options or to purchase ArcPad software.

The first session of our Mastering the ArcGIS Server JavaScript API Internet based, instructor led course was held August 4th – September 11th. Our next session scheduled for October 5th – November 13th is approaching fast but you still have time to register.

Register Now:

Our first session was attended by 22 students from all around the world. We’d like to share some of the thoughts and comments from students that participated in this course.

I have attended a number of instructor led training courses offered by ESRI, which are great in their own right, but the Mastering the ArcGIS Server JavaScript API course gets much more in-depth than they often do. I really liked the recommended reading, they helped expand the terms being covered in lecture to concrete examples that could be related back to my work more directly instead of just having the lecture and exercises alone. I learned a lot and will recommend this and other GeoSpatial Training courses to the GIS’ers I know. Thanks for putting this course together and offering it at a great
price.
— Jason Warzinik, GISP, GIS Manager, Boone County, MO

I have enjoyed the class. I like working at my own pace through the materials, between the other things I am working on. The examples are clear, and I appreciate that I will be able to go back and refer to them during my development efforts. The advanced dojo section seems like a deep topic, and I see myself referring back to that section and the other dojo resources as I am developing. Finally, I am glad that I was able to get this training in a cost-effective manner. It is difficult to get training classes up here in Alaska. Often we have to get on a plane and leave the state. As much as I enjoy travelling, it may not be the fiscally responsible thing to do in this era of strained budgets. This training format seems to work, and I hope to participate in more of these in the future.
— Erick Johnson, GISP, GIS Programming/Analyst – Matanuska – Susitna Borough

The things you have taught me (Mastering the ArcGIS Server JavaScript API) have helped tremendously on my project.
— Jeff Dobb, State of Montana

Capstone Project
One big difference between this course and courses offered by other providers is the inclusion of a capstone project. Leading up to the capstone project we provide a couple dozen exercises designed to enhance your understanding of the lecture materials.

The capstone project differs significantly from these exercises and those you may have experienced from other training providers. We provide you with the functional specifications for a challenging project similar to what you might find when working on real-world projects. However, we don’t hold your hand on this project! Sure, we step in and lend a hand when you need it, but the point of this exercise is to develop your skills to a point where you can be self sufficient and confident in your ability to develop web mapping applications with ArcGIS Server. You will use the knowledge gained during this course through lectures and exercises along with the assistance of your session mates to complete this challenging project and deliver a finished product.

I can assure you that this is a great way to develop expertise in developing web mapping applications with ArcGIS Server before you actually do so in a real-world setting.

Our first session built a web mapping application that shows unemployment and demographic information for the county in which they live/work. The finished application displays maps, tables, and charts.

Many ArcGIS Server applications need to be able to query data from a map service and display the results in a tabular structure. In this post I’ll show you how to use the DojoX DataGrid along with ItemFileReadStore and QueryTask from the ArcGIS Server JavaScript API to display your query results in a tabular structure. The process is really quite simple once you understand the basic concepts.

The new DojoX DataGrid is an excellent user interface control for displaying tabular data and is tightly integrated with the Dojo Data stores including ItemFileReadStore. In a previous post I showed how you can use Dojo’s ItemFileReadStore class to read JSON format data. We’ll build on that example in this post by populating an instance of ItemFileReadStore with the contents of a query that we perform against a map service layer. ItemFileReadStore is then integrated with the DojoX DataGrid to display the results of our query.

Here is a simple example that we’ll use to illustrate this process. Simply enter a U.S. state abbreviation to see the example in action.

The Map Service
We can start by examining the map service that we’ll use to perform our query against. ESRI has published a number of demographic services to ArcGIS Online including one that can be used to obtain unemployment information for the U.S. from 2008 and 2009. This data is provided at the state, county, census tract, and census block group levels. Take a few moments to examine the map service. For our purposes in this simple example we’ll be querying the counties layer (3). As you can see in the figure below this layer contains a number of data columns and supports the Query Layer operation. Essentially this just means that we can perform an attribute (or spatial) query against the fields that you see listed.

This service can also be used to display a thematic map of the unemployment information by any of the geographic levels that we listed above.

Creating the DojoX DataGrid
The next thing that we’ll need to do is create the actual DojoX DataGrid that will hold the results of our query. There are a few simple steps that we need to perform to do this.

Style Sheets
First we need to load the Dojo style sheets that are used to control the display characteristics of our DataGrid. We can do this by adding the following lines of code in the <head> section of our web page.

Resources
Next we add in the resources that will be used. Notice here that we are also include a reference to esri.tasks.query which includes the Query and QueryTask objects that will be used to define the parameters for our query and execute the query against the map service layer.

The DataGrid
Finally, in the <body> section of our web page we define an HTML table with a dojoType of ‘dojox.grid.DataGrid’. Notice that the field attributes defined in our table exactly match the field names found in the layer contained in our map service.

Query Parameters and Execution
Next we need to create an instance of QueryTask which points to the counties layer in the ESRI unemployment map service. We also create an instance of Query and set the returnGeometry and outFields properties. The returnGeometry property specifies whether or not you need to return the geometric definition of each of the features that match the query. In this case we are simply presenting the results in a DataGrid so there is no need to return the geometry. However, if you were also going to use the features in some way such as creating graphics in addition to presenting the data in a table you’d want to set this value to ‘true’. The outFields property specifies the data columns that will be returned. This property is frequently used to limit the information returned.

We have also defined a ‘doQuery’ function that accepts a state abbreviation.

In the interest of focusing on our topic we haven’t defined any error handling routines to handle values other than a matching two character string for each state so do realize that you will get an unhandled exception if you do no enter a matching state abbreviation. Obviously this is something that we would handle in a real application. In ‘doQuery’ we set the ‘where’ property on Query. This property functions like a SQL statement. In this case we are querying for the state abbreviation entered by the user. Finally, we call the QueryTask.execute method to perform the query. Notice that we are passing in the query parameters and also defining a callback function called ‘showResults’ that will execute upon completion of the query.

Display the Query Results
Now comes the interesting part where we tie all this together. Our ‘showResults’ function is callback function which means that it is called after the query has finished. A FeatureSet object is passed into this callback function. This object contains an array of features each of which may contain geometry, attributes, symbology, and an InfoTemplate. In this case our features do not contain geometry since we set the ‘returnGeometry’ property to false. Therefore, we can treat our FeatureSet as a table wherein each feature functions as a row object. Please refer to the figure below as we discuss what happens inside ‘showResults’. First we create an array variable called ‘items’ and we populate this variable with the attributes of each row returned by our query. Next we need to create the JSON structure that will be used as input in the creation of an instance of ItemFileReadStore. As I pointed out in “Reading JSON Data with Dojo” ItemFileReadStore requires a specific structure for JSON data. This includes the use of an identifier property, an optional label property, and the data itself arranged in an array of attribute/ value pairs specified with an items property. The attribute/value pairs have already been created an stored in the ‘items’ variable. In this case we specify that the ‘ID’ field will be used as both our identifier and label. The identifier needs to be a unique value which is what we get with the ‘ID’ field. Finally, we create a new instance of ItemFileReadStore using the JSON data structure we defined in the ‘data’ variable and use this store as input for our DataGrid. Here, the DojoX DataGrid was defined with an id of ‘grid’ when we created the DataGrid in a previous step.

So, as you can see, the steps for displaying the results of a query against an ArcGIS Server map service are really quite simple.

More Information
For more information on the ArcGIS Server JavaScript API you may wish to consider our “Mastering the ArcGIS Server JavaScript API” course which covers this topic among many others. Our next session begins October 5th and ends November 13th. Register before August 31st to save 15%.

You can check out the details of all this summers wildfire activity in California and the rest of North America using our North American Wildfire Browser. This application was built using the Google Maps API and Dojo along with various data sources including GeoMAC and Fire Information for Resource Managers.