Fieldmapper 10.2.1 - map input geometry to the target feature class shape field?

2892
5
01-13-2014 04:08 PM
DennisGeasan
Occasional Contributor II
In the 10.2 field mapper processor you specifically link the Input 'geometry' to the target 'shape' field.  In 10.2.1 this option is no longer available.   I can't get the input geometry (JSON input) to update the shape field in the target feature class.  The output is  'Update Feature'.  All the other attribute fields from the input are being updated in the target feature class but not the 'shape' field.  No points appear in ArcCatalog or ArcMap.  I tested this by adding a new field in ArcMap and then using 'Calculate Geometry'.  An error dialog appears indicating the calculated value is invalid.  

Magically, one time I was able to get the input geometry into the target feature class, but now it is not.  What am I doing wrong?
0 Kudos
5 Replies
DennisGeasan
Occasional Contributor II
Found the problem.  It's a display issue with the IE10 browser running in a VMware session. In IE10 the field processor panel does not display the last field pairing of the Field Mapper Processor Properties window, which for me is the geometry/shape fields.  Even if I scroll the window down the item does not display.   However, if you select the last displayed field pairing and then press the TAB key the last field pairing appears.  Google Chrome and Firefox displays the top half of the last field pairing fields in the processor window if they are not full expanded but do display the entire last field pairing fully expanded.  IE10 does not display the last field pairing even when fully expanded. Now that I can see the last field pairing of geometry/shape and can define the field mapping the output feature class is now being updated correctly.  Looks like a bug with how the processor window is being displayed in the IE 10 browser.
0 Kudos
RJSunderman
Esri Regular Contributor
Hello Dennis -

Would you mind sending me the JSON you are using? Are you using a File/Text input or are you POSTing the data to a GEP REST endpoint? I'd like to try and reproduce what you are observing and want to follow as close as possible the steps you followed to cause the problem to manifest.

I may also need a MPK map package defining the schema of the features you publish as a feature service, so that I can configure a field mapper from the JSON to the Feature Service schema.

Thanks -
RJ
0 Kudos
DennisGeasan
Occasional Contributor II
Hi RJ,

I'm obtaining the JSON by polling an HTTPS REST web service.  The target is an "Update Features" output.

Thanks.  DG

Example JSON input:

{
 "lastLocations" : [{
   "driverID" : 83886089,
   "driverEmployeeId" : null,
   "vehicleID" : 83886154,
   "vehicleName" : "CBDFGG61",
   "head" : 0,
   "speed" : 0,
   "time" : "2012-12-05T20:18:53Z",
   "location" : {
    "lat" : -77.387392,
    "lng" : -150.312958
   }
  }, {
   "driverID" : 83886089,
   "driverEmployeeId" : null,
   "vehicleID" : 83886155,
   "vehicleName" : "CBCBZF72",
   "head" : 0,
   "speed" : 0,
   "time" : "2012-12-05T14:12:59Z",
   "location" : {
    "lat" : -72.387413,
    "lng" : 70.312897
   }
  },
 ]
}



Input schema def:

{
 "guid" : "a467c3fc-1ff8-4a79-bcaa-257b0eaa4cdd",
 "name" : "InputSchema",
 "owner" : "auto-generated/com.esri.ges.adapter.inbound.Generic-JSON/10.2.1",
 "fieldDefinitions" : [{
   "name" : "driverID",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "driverEmployeeId",
   "type" : "String",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "vehicleID",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["TRACK_ID"],
   "fieldDefinitions" : []
  }, {
   "name" : "vehicleName",
   "type" : "String",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "head",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "speed",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "time",
   "type" : "Date",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["TIME_START"],
   "fieldDefinitions" : []
  }, {
   "name" : "location",
   "type" : "Group",
   "cardinality" : "One",
   "fieldDefinitions" : [{
     "name" : "lat",
     "type" : "Double",
     "cardinality" : "One",
     "fieldDefinitions" : []
    }, {
     "name" : "lng",
     "type" : "Double",
     "cardinality" : "One",
     "fieldDefinitions" : []
    }
   ]
  }, {
   "name" : "geometry",
   "type" : "Geometry",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["GEOMETRY"],
   "fieldDefinitions" : []
  }
 ]
}



Output schema:

{
 "guid" : "682914af-5970-4519-8c81-28561173cf36",
 "name" : "VL_LastLocations",
 "owner" : "arcgis",
 "fieldDefinitions" : [{
   "name" : "driverID",
   "type" : "Long",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "driverEmployeeId",
   "type" : "String",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "vehicleID",
   "type" : "Long",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["TRACK_ID"],
   "fieldDefinitions" : []
  }, {
   "name" : "vehicleName",
   "type" : "String",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "head",
   "type" : "Short",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "speed",
   "type" : "Short",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "time_LastLocation",
   "type" : "Date",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["TIME_START"],
   "fieldDefinitions" : []
  }, {
   "name" : "lat",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "lng",
   "type" : "Double",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "time_ReceivedGEP",
   "type" : "Date",
   "cardinality" : "One",
   "fieldDefinitions" : []
  }, {
   "name" : "shape",
   "type" : "Geometry",
   "cardinality" : "One",
   "fieldDefinitionTag" : ["GEOMETRY"],
   "fieldDefinitions" : []
  }
 ]
}



Typical input definition:
{
 "name" : "in-Loc1-Locations",
 "connector" : "Poll-JSON-in-HTTPS",
 "connectorLabel" : "Poll-JSON-in-HTTPS",
 "adapter" : {
  "properties" : [{
    "name" : "XGeometryField",
    "value" : "location.lng",
    "type" : "String"
   }, {
    "name" : "CustomDateFormat",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "CreateGeoEventDefinition",
    "value" : "false",
    "type" : "Boolean"
   }, {
    "name" : "ExistingGeoEventDefinitionName",
    "value" : "InputSchema",
    "type" : "GeoEventDefinition"
   }, {
    "name" : "YGeometryField",
    "value" : "location.lat",
    "type" : "String"
   }, {
    "name" : "WKIDGeometryField",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "WKTextGeometryField",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "JsonObjectName",
    "value" : "lastLocations",
    "type" : "String"
   }, {
    "name" : "NewGeoEventDefinitionName",
    "value" : "LocationsCollectionSchema7",
    "type" : "String"
   }, {
    "name" : "ZGeometryField",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "BuildGeometryFromFields",
    "value" : "true",
    "type" : "Boolean"
   }
  ],
  "uri" : "com.esri.ges.adapter.inbound/Generic-JSON/10.2.1"
 },
 "transport" : {
  "properties" : [{
    "name" : "clientURLProxy",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "useClientURLProxy",
    "value" : "false",
    "type" : "Boolean"
   }, {
    "name" : "clientPostBody",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "acceptableMimeTypesClientMode",
    "value" : "application/json",
    "type" : "String"
   }, {
    "name" : "mode",
    "value" : "CLIENT",
    "type" : "String"
   }, {
    "name" : "username",
    "value" : "***",
    "type" : "String"
   }, {
    "name" : "httpMethod",
    "value" : "GET",
    "type" : "String"
   }, {
    "name" : "frequency",
    "value" : "60",
    "type" : "Integer"
   }, {
    "name" : "useLongPolling",
    "value" : "false",
    "type" : "Boolean"
   }, {
    "name" : "honorLastModified",
    "value" : "true",
    "type" : "Boolean"
   }, {
    "name" : "clientURL",
    "value" : "https://******/lastlocations.json",
    "type" : "String"
   }, {
    "name" : "postContentType",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "password",
    "value" : "***==",
    "type" : "Password"
   }, {
    "name" : "acceptableMimeTypesServerMode",
    "value" : "",
    "type" : "String"
   }, {
    "name" : "clientParameters",
    "value" : "",
    "type" : "String"
   }
  ],
  "uri" : "com.esri.ges.transport.inbound/HTTP-BasicAuthentication/10.2.1"
 },
 "runningState" : "STARTED",
 "supportsAllGeoEventDefinitions" : true,
 "supportedGeoEventDefinitions" : [],
 "geoEventDefinitionHistory" : ["a467c3fc-1ff8-4a79-bcaa-257b0eaa4cdd"],
 "statusDetails" : "NULL",
 "geoEventsRateRange" : {
  "min" : 0.0,
  "max" : 0.0
 }
}

0 Kudos
RJSunderman
Esri Regular Contributor
Hey Dennis -

Thank you for your effort in preparing  the JSON representation of your input and event definition. As it turns out, this issue is much easier to reproduce than I initially thought. I"?ve replicated it in Chrome as well as Internet Explorer 9 and 10.

This will be a known issue for the 10.2.1 release. We are looking to address the issue in the 10.2.2 product release which should be publicly available late Q1 or early Q2 this year.

I"?ll include some screenshots below, for those who discover this thread later, but the work around (as you discovered) will be to <tab> to reveal any input fields missing from the display. You can also use your mouse"?s scroll wheel to scroll further down than what the vertical scrollbar on the property panel currently allows.

The issue is that the pop-up dialog containing the configurable properties has a couple of static portions and a dynamic portion in its layout. You can use your mouse"?s scroll wheel to scroll through the dynamic "frame"� within the property panel.

Consider the screenshots below "? the area dashed in red is the "dynamic"� portion of the property panel. Changing the processor type from "?Field Calculator"? to "?Field Mapper"? changes the content in the middle of the panel. When I select a GeoEvent Definition with more than a few fields (such as the product"?s incident event definition) the dynamic part of the panel runs past the panel"?s bottom edge. I can either <tab> through the fields in this portion of the display, or use my mouse"?s scroll wheel to scroll and reveal the remaining input fields. This obviously needs to be fixed since using the scroll bar to scroll to what you think is the bottom of the panel doesn"?t work.

You could of course try maximizing your browser window to provide more real estate for the Manager and the pop-up properties panel "� but this may not be an option depending on screen resolution or if the size of your browser window is limited by a VM management console.

Thank you for bringing this to our attention -
RJ
[ATTACH=CONFIG]30540[/ATTACH]
0 Kudos
DennisGeasan
Occasional Contributor II
Thanks RJ.  I missed the mouse scroll wheel trick.  It should also be noted that you have to click once inside the panel with the fields for the mouse wheel to begin scrolling the panel.  DG
0 Kudos