Our Educational Services staff has completed a new training course for ArcGIS Mobile titled “Authoring and Serving ArcGIS Mobile Projects“.
This is an instructor-led course that targets GIS Analysts/Field Supervisors in the operational arm of an enterprise that are responsible for designing, creating and deploying mobile GIS solutions. Completing this course, you will gain detailed knowledge of the architecture of ArcGIS Mobile, learn how to design and author effective mobile maps, configure the ArcGIS Mobile application to best suit the needs of your field workforce, and learn how best to deploy and manage field projects.
You can view a schedule of upcoming classes and register for one online at our Education and Training site. Cost per student is $980 USD.
This instructor-led course builds upon two additional free self-study courses available on the Virtual Campus:
Special thanks go to Kris Bezdecny and Alyson Smith for designing and building this course!
Part of our software design and development process on the mobile team involves actually getting outside and using devices outdoors! For example, we are in development of a new Windows touch version of the ArcGIS Mobile application that we released for Windows Mobile at 9.3. We need to evaluate the styling of that application in different natural light conditions.
Well today we decided to have a little fun and shoot some pictures outside. It was a gloomy day in Redlands and we wanted to make the best of it.
Click on the pictures to see them in detail. They are high-res photos so click a couple of times to enjoy the detail…
1) With the Windows Mobile application at 9.4, we enhanced the Search Task. You can now save your search criteria as a pre-defined query. Using a pre-defined query, you can quickly locate inspections, incidents, people around you…
2) The ArcGIS Mobile application running on a Trimble Geo device connected to a GeoBeacon via Bluetooth can provide sub-meter GPS accuracy! Also, the framework of the application is extensible for developers! We built an extension that plugs into the collect task that allows you to construct the shape of a feature using a laser range finder!
3) For 9.4 we are planning to release a Windows Touch version of the ArcGIS Mobile application. It targets in-vehicle mounted systems and has a day/night-time mode that adjusts to varying light conditions. Need to test it out in a vehicle right?
4) In the field you want to avoid any form of text entry if you can help it. However sometimes you just need to take notes. Notes can be stored in a text field for a feature. The new Windows Touch application we are building will have an integrated keyboard so that you can actually type on the device itself..
Hope you enjoyed our pics. We had fun taking them and expect another post with more pics coming soon!!
In this article we will explain the Spatial Reference object model and highlight what you need to know in order to build effective mobile applications that leverage the complexity of coordinate systems and the transformations between them.
Also find with this article a recent posting to the code gallery by Sabine Barrera that illustrates how to transform GPS positions from WGS84 into the spatial reference of a mobile service.
DISCLAIMER: This is not for the faint of heart and the discussion implies that you have good foundational knowledge on map projections in ArcGIS. Here is some very well written background information that you can read on the subject.
Mobile Spatial Reference
A Mobile Service is both a web service and a data source in ArcGIS Mobile. The Mobile Service is your gateway to a map document that was published with “mobile data access” capabilities and as a data source it contains the map data that you have requested and cached on the client as the edits you have made in the field.
When thinking about the mobile service, it is important to understand that the mobile service always references the “active” data frame in a map document. That data frame contains a set of map layers and has a spatial reference and precision associated with it. Note that since ArcMap supports “projection on the fly”, the spatial reference of the data frame may be different than the spatial reference of the map layer’s data source. The Mobile SDK operates in the spatial reference of the data frame.
Within the ArcGIS Mobile SDK you will find the classes necessary to access the spatial reference of the mobile service. Here is an object model diagram that illustrates the classes available:
The spatial reference class itself provides access to the string defining the coordinate system, the current geotransformation, and a collection of supported geotransformations as well. The spatial reference class supports the following projections at the 9.3.1 release: Lambert Conformal Conic, Transverse Mercator, Albers, Mercator, Double Stereographic, and Oblique Mercator. Note that spatial reference implementation for the Mobile SDK is the exact same spatial reference engine used inside of ArcGIS Engine/Desktop, however a subset of all projects are contained in the mobile engine for performance reasons.
The spatial reference class also contains methods to convert between WGS84 coordinates and the spatial reference of the mobile service. Most conventional GPS systems use WGS84 – hence the explicit methods for converting between WGS84. Please note that we are enhancing this functionality in the 9.4 release. More on this as we come closer to the release of 9.4.
The spatial reference itself is stored within the MapSchema.bin file that is located inside of the mobile cache directory. It is created when the mobile service is opened using MobileService.Open(). The map schema contains additional information about the map including the map name, full extent, initial extent, layers and their workspaces. It is important to note that the precision of the mobile cache is derived directly from the full extent property of the map. By default (in ArcMap) the full extent of the map is defined by unioning the extent of all layers in the map document. This can lead to coarse precision if your feature classes span a very large extent. You can constrain the full extent and increase precision of your cache by setting a custom full extent for the map.
If you plan to leverage GPS in your mobile application, you need to think about datum transformations!! Most GPS systems use WGS84, and as a result, the GPS components in ArcGIS Mobile assume WGS84. The map that you publish as a mobile service may not be. If it is not, and you do not apply a geotransformation when projecting the GPS positing on top of the mobile service, you will find that the location is NOT where it should be!!
If, however, you do set the coordinate system in the map document to WGS84 then no transformation need be applied. When no transformation is applied, the MobileService.SpatialReference will return “Direct” as the value for the geotransformation.
The Mobile SDK supports the following transformation methods: Direct, MolodenskyBadekas, MolodenskyAbridged, Molodensky, GeocentricTranslation, CoordinateFrame, PositionVector, LongitudeRotation and BursaWolf. Note that Grid or file-based methonds (NADCON/HARN and NTv2) are not supported.
Specifying the transformation in ArcMap
As mentioned above, if your map is not using WGS84, a datum transformation will be required to convert GPS positions from WGS84 into the datum of your map. For example, if the coordinate system of the map is GCS_Deutsches_Hauptdreicksnetz, the author of the map will need to specify a transformation that will convert from GCS_WGS_1984 into GCS_Deutsches_Hauptdreiecksnetz.
If none of the data sources in the map are in WGS84, you will need to add a datasource that is. This will enable the Transformations dialog in ArcMap so that you can easily set the transformation. When a source is added to the map, a geographic coordinate systems warning will appear. Click on the “Transformations…” button and select GCS_WGS_1984 in the “Convert from” list box and then choose a transformation. You can now remove the WGS84 layer from your data frame and save the map document – your transformation will still be available.
In the example above, DHDN_To_WGS_1984_3s was selected. For this map and published mobile service, the spatial reference will use this transformation to convert GPS positions to your coordinate system. The MobileService.SpatialReference.CurrentGeoTransformation will return “DHDN_To_WGS_1984_3x”. If you have not specified the transformation, it will return “Not Defined” and your GPS positions may be quite off.
Converting Data Sources to WGS84
If you want to project your data source from its existing datum to WGS84, you can use the Project Geoprocessing Tool that is located inside ArcToolbox under the Data Management Tools > Projections and Transformations > Feature.
Specifying the Transformation in your Mobile Application
If you need to specify the transformation in your mobile application, you can implement a Wgs84GeoTransformation. The code below shows how to implement a transformation from WGS84 into German Zone 4.
This transformation string will set the required parameters used. The geotransformation is shown in the WKT form first.
// 108206 GEOGTRAN["DHDN_To_WGS_1984_3x", GEOGCS["GCS_Deutsches_Hauptdreiecksnetz", DATUM["D_Deutsches_Hauptdreiecksnetz",
// SPHEROID["Bessel_1841",6377397.155,299.1528128]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], GEOGCS["GCS_WGS_1984",
// DATUM["D_WGS_1984", SPHEROID["WGS_1984",6378137.0,298.257223563]], PRIMEM["Greenwich",0.0],
double parameters = new double;
parameters[Wgs84GeoTransformation.XTranslation] = 597.1;
parameters[Wgs84GeoTransformation.YTranslation] = 71.4;
parameters[Wgs84GeoTransformation.ZTranslation] = 412.1;
parameters[Wgs84GeoTransformation.XRotation] = 0.894;
parameters[Wgs84GeoTransformation.YRotation] = 0.068;
parameters[Wgs84GeoTransformation.ZRotation] = -1.563;
// ScaleTranslation or ScaleDifference
parameters[Wgs84GeoTransformation.ScaleTranslation] = 7.58;
// The following parameters are only use by the MolodenskyBadekas method
parameters[Wgs84GeoTransformation.XCenterRotation] = 0;
parameters[Wgs84GeoTransformation.YCenterRotation] = 0;
parameters[Wgs84GeoTransformation.ZCenterRotation] = 0;
// This Wgs84GeoTransformation constructor requires a spatial reference,
// the name of the new transformation, the transformation type, if the
// transformation is forward (from a coordinate system to WGS84) or backward
// and the transformation parameters
customGeotransformation = new Wgs84GeoTransformation(mobileService1.SpatialReference, “DHDN_To_WGS_1984_3x”, GeoTransformationType.PositionVector, false, parameters);
// Add the new transformation to the collection of GeoTransformations in the SpatialReference
// Set the current GeoTransformation Index to the be just added
mobileService1.SpatialReference.CurrentGeoTransformationIndex = mobileService1.SpatialReference.GeoTransformations.Count – 1;
Thanks to Sabine for contributing content for this posting. Our apologies for the length. We hope it helps your application development…
Even though the server and the mobile client device have a great relationship, every time they meet they need to shake hands and identify themselves before doing any work together. We call this handshake a “checksum”. The nature of the relationship is that the mobile client is always approaching the server and asking it for something – either to request map data from it or to post some changes it has made to the server’s data. For this reason, it is important for the server to make sure that the mobile client properly identify itself so that it can fulfill its request as best it can.
The way that the server can verify the identify the mobile client is by how it was created – by using the Map Document that was published as a mobile service. When a mobile client makes a request, the server interogates its signature, the map schema, and compares the number of map layers, certain properties of the feature layers in the map, the the feature class definition for each feature layer, and the spatial reference of the map. It is very thorough in its checking!
If any of these properties have been changed since the map schema was created for the mobile client, the server will not accept its requests and instead return a “checksum error” when it shakes hands!
Publishing Best Practices
It is extremely important that when you publish a mobile service, that you treat that relationship between the map document, the mobile service, and any mobile caches created from it as a binding contract between the three.
It is recommended that you:
Create and author a map document specific for the mobile service you intend to publish.
Make a copy of that map document if you plan to re-use it for other services (mobile, map or otherwise).
Synchronize all mobile client caches that may have edits and delete the mobile caches before making changes to the schema.
Also note that if you do need need to make changes, it is recommended that you create and deploy new mobile caches so that your mobile application and projects can forge a new relationship with the server rather than trying to get all data from the field!!
In 9.3.1, we made some minor improvements to the checksum process by not checking the extent of feature layers in the map. The extent of a feature layer can grow simply by adding data to the feature class that serves as its source. This was most notable when publishing a map with an empty map layer. In the 9.4 release, the handshake will be much more relaxed. The server will now focus its interrogation on the schema of the feature classes themselves and no longer cares to much about how layers dress themselves in a map document.
Saving Abandoned Edits and Mobile Cache to Shapefile Sample
So, if the mobile client has features to share back with the server and the server no longer wants to talk to it, what is the client to do?? Well this is a challenge. The mobile team has just posted a ”Mobile Cache to Shapefile Tool” on the code gallery. There is both a 9.2 version and a 9.3 version of this tool. The code sample will read in the mobile cache, lets you select a number of features from a given layer, and will create a shapefile from the selection. The features in that shapefile can then be imported into the geodatabase through ArcMap.
It is important to note that there are inherent limitations with shapefiles that do not exist with data that is stored inside of ArcSDE geodatabases. Field names, support for domains and subtypes, etc. This will be the subject of a more detailed article around this tool itself…
Please let us know if you have further requests/questions around the checksum.
One of the key benefits of field GIS software, like ArcGIS Mobile, is that you can leverage a GPS receiver to locate yourself on a map, collect GIS features using positions from the receiver, search for things around you, and share your location with others. However, one of the challenges you face is how to connect your GPS receiver to your mobile device and to ArcGIS Mobile.
Within the 9.2 and 9.3 releases of ArcGIS Mobile, we wrote our GPS library using managed code. Unfortunately we encountered many issues that were directly related to the .NET CLR. One of the biggest problems faced with this implementation was the connection to a GPS receiver. Starting at 9.3.1 and beyond, we have now replaced the managed code GPS library with a native code implementation without changing our public .NET API.
The GPS library reads and parses GPS positions from a COM port you are connected to. The COM port can be a physical serial port, a virtual COM port bound to a GPS receiver via Bluetooth or USB cable, or a program COM port attached to a GPS intermediate driver on Windows Mobile devices. Please note that the GPS intermediate driver is available on Windows Mobile 5.0 and newer systems and allows more than one application to access the GPS at the same time. For additional information on the intermediate driver, see http://msdn.microsoft.com/en-us/library/ms850332.aspx.
It is also important to note that the ArcGIS Mobile GPS library only supports the NMEA protocol. GPS receivers that do not output GPS positions in NMEA format can be supported in ArcGIS Mobile if you leverage a third party tool (such as Trimble GPS Controller for Trimble GPS receivers).
The illustration below shows the common GPS configurations, but these are not the only options available. You should ensure that your GPS receiver is correctly configured and you know what COM port you wish to use before starting your ArcGIS Mobile application and opening a connection to the GPS receiver.
Coming soon we will post an article that details how to configure GPS for your mobile device – for embedded GPS chipsets, bluetooth receivers and USB receivers.
Thanks to Glenn for contributing this article…
If you attended the Developer Summit this year, you would have caught a glimpse at what is coming in the ArcGIS 9.4 release for ArcGIS Mobile. It is a pretty exciting release for the development team. If you did not get a chance to attend, you can view the plenary presentation on the web site – http://www.esri.com/events/devsummit/. Click on “Server and Mobile 9.4″ to watch the mobile highlights.
The 9.4 release is centered around the following key themes:
- Extending the reach of our application platform support by including a new Tablet application that has all of the capabilities of the Windows Mobile application but targets touch screen windows devices.
- Opening our field applications as a framework for developers to extend. Our goal is to lower the bar for developers that need to build highly focused mobile applications by allowing them to extend our new Tablet application and our existing Windows Mobile application with custom extensions, tasks, and data.
- Improved usability of the Windows Mobile application. We have enhanced the Windows Mobile application so that it is more effective for touch or stylus use, added new GPS data collection functionality, improved editing workflows, support for direct picture capture, enhanced base map support including online map services, and much more.
- Simplifying the management of field projects by introducing a new Mobile Project Center application that field supervisors can use to create mobile projects and deploy them to field devices.
- Key enhancements to the Mobile SDK with exciting new capabilities for data management, consumption of online services, support for .NET 3.5, WPF, and much more.
- Simplified setup and deployment of ArcGIS Mobile technology by including all mobile client capabilities into a separate setup from the Server .NET setup.
Plenary Slide for ArcGIS Mobile used at Developer Summit
In a future blog article we will spend more time talking about what is coming in 9.4.
Thinking about attending the Developer Summit this year? Well, think no more. This year we will be hosting an ArcGIS Mobile Code Challenge with cash prizes of $4000.00 for the big winner and $2000.00 for second place! To enter, you need to upload your entry to the code gallery by March 6th. Judging will take place March 13th.
You can find details on how to enter, official rules, and more at the Developer Summit Code Challenge site.
We look forward to seeing your entries!
We are getting a lot of feedback on the last blog posting that linked to a video from Sabine Barrera on the Mobile dev team and wanting more videos and online information. Well we have more for you!
A number of ArcGIS Mobile videos have been uploaded to the ESRI Channel on YouTube and I encourage you to look at them.
Here are a few:
ArcGIS 9.3: Improve mobility using ArcGIS Mobile
ArcGIS 9.3: See an example of how an Insurance Claims Manager uses ArcGIS and a mobile solution
ArcGIS 9.3: Disseminate Information To The Field Using ArcGIS Mobile
ArcGIS Mobile Questions and Answers
ArcGIS Mobile Users Conference Demo
In addition to these videos, our Educational Services team is building a course for ArcGIS Mobile. In fact, they are blogging the entire experience of building the course! You can follow the saga on the Ed Services blog.
Sabine Barrera is a senior product engineer on the ArcGIS Mobile development team. You may recognize her name from the many postings she has made to the mobile forums or you may have seen her in a recent webcast on ArcGIS Mobile 9.3.
Well Jim Barry from the EDN team caught up with Sabine and recorded a video wherein Sabine walks us through the 5 easy steps to creating a mobile application with the ArcGIS Mobile SDK and deploying it to either a Windows Mobile Device or an emulator.
Click on the picture of Sabine to watch the video…
On Friday November 7th, we shipped the first service pack for the 9.3 release of ArcGIS Server. This is a significant release for ArcGIS Mobile and we recommend that if you are currently using 9.3 that you download and install the patch.
The patch includes the following key enhancements and stability improvements that will be interested in:
ArcGIS Mobile Application supports Windows Mobile Smartphone devices
At SP1, the ArcGIS Mobile application now fully supports non-touch screen Windows Mobile devices (namely Windows Mobile 5 Pocket PC and Windows Mobile 6 Standard) devices. All menu items are fully accessible using the numeric keypad of your smartphone device and the map navigation controls are optimized for use with the rocker.
Mobile Server Performance
We identified and addressed a significant issue with the Mobile SOE of the Map Server during this service pack that will increase the performance of the Server and improve its stability. Some users were reporting that the Mobile Service would fail yet the Map Service remained accessible. Some users also found that they were running out of memory on their server as well. Both of these issues have been addressed in the SP1 release.
PostGres SQL Support
At the 9.3 final release, mobile applications did not support the editing of GIS data stored inside of a PostGres SQL database. This has now been addressed and PostGres SQL is a fully supported database for your mobile applications.
There were a lot of additional targeted fixes that were made to the Server, SDK and Application. A list of all of those fixes can be found here: http://gisupdates.esri.com/93sp1/ArcGIS/ArcGIS-93sp1-issues.htm#Mobile-sp1
You can download SP from the following location on support.esri.com: