The Users Conference is fast approaching and yesterday we drove from Redlands to San Diego to field test the ArcGIS Mobile application in preparation for “Try ArcGIS Mobile”. As I mentioned in a previous blog article, if you come to the Mobile Island you can sign up to “Try ArcGIS Mobile 9.4″ outside the conference center around the beautiful marina.
Jay Chen and Sunee Puckdee, product engineers on the mobile team, will be your hosts for this event. The picture below was taken yesterday outside of the convention center while we were mapping various landmarks.
All you need to do is to come to the mobile island and sign up for the event. The event days and times are as follows:
- Tuesday at 1:30pm
- Wednesday at 1:30pm
- Thursday at 10:00am
We look forward to seeing you there!
The Mobile team is busy preparing their demos and powerpoints for the Users Conference. So I thought I would list all of our activities (sessions, demo theatres, and SIG meeting) so that you can put them ALL in your calendar…
ESRI Mobile GIS Solutions Overview (Tue 8:30am, Wed 1:30pm) in room 10
ArcGIS Mobile – An Introduction (Tue 10:15am, Wed 3:15pm) in room 10
Developing Applications with ArcGIS Mobile (Wed 10:15am, Thu 3:15pm) in room 10
ArcGIS Mobile GIS 9.4 Plans (Tue 1:30pm, Thu 8:30am) in room 6B
Introducing ArcGIS Mobile (Tue 2:00pm, Wed 10:00am, Thu 9:00am)
Focused Application Development using the ArcGIS Mobile SDK (Tue 3:00pm, Wed 1:00pm)
Whats Coming in ArcGIS Mobile 9.4 (Tue 11:00am, Wed 3:00pm)
Managing business workflows with multiple roles (Wed 4:00pm)
Special Interest Group Meeting
Mobile GIS Special Interest Group Meeting (Tue 12:00pm) in Room 28E
We look forward to meeting you at the conference!
This year at the Users Conference, you will find the ArcGIS Mobile team either at the Mobile Island or presenting technical sessions. We are busy preparing now for this year’s set of activities now. This is an exciting time for us because it is one of the precious opportunities we in the software development group get to interact with the users we build software for!
This year we want the experience to be a little more exciting and interactive for you! On Tuesday and Wednesday at 1:30pm and Thursday at 10:00am, we want to take you outside the convention center to take ArcGIS Mobile for a test drive! At the Mobile Island this year, we will have 5 Trimble Juno SB and 5 AT&T Fuze devices equipped with ArcGIS Mobile so that you can walk around the marina, explore the application, capture data, come back to the island and see the results of your work.
We will have sign up sheets at the Mobile Island so when it opens up on Tuesday morning, come and secure your spot for the day of your choice.
Information about the Product Islands can be found here.
As we get closer to the Users Conference, what additional mobile activities are coming your way!
Hope to see you there,
Today we released a general patch titled ArcGIS Mobile Server and client SDK Patch for ArcGIS 9.2 Server for the Microsoft .NET Framework that you can install on top of ArcGIS Server .NET 9.2 SP6.
This patch is a culmination of hot fixes and we felt that it was important we share these fixes with all clients that are still using 9.2 SP6 and cannot migrate to 9.3.1 in the near future.
Please see the link above for details on the patch.
If you are planning to attend the users conference this year and are looking for a hands-on deep-dive into the ArcGIS Mobile SDK, we will be hosting a preconference seminar on Sunday. There is an additional cost of $325.00 for this event.
Here is a link to the seminar details http://www.esri.com/events/uc/agenda/precons.html#mobile.
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…