ArcGISMapImageLayer, FeatureLayer, GraphicOverLay, which one should I use?

955
4
04-30-2020 09:25 PM
EricJing
New Contributor III

I am very new to ArcGIS. We are integrating ESRI map to our software (built in WPF).This is an offline map feature. We are using ArcGISLocalServer 100.6 to load file geodatabase to client. In File Geodatabase there are 7 feature tables and 3 standalone tables.

We will have around 30,000 nodes on the map, and the symbols will keep changing on the fly, based on some state change. Besides, we need to filter the nodes on the map very often. (Currently we are using DefinitionExpression) . The current solution is we are using LocalMapService to generate ArcGISMapImageLayer to display map in client side, and add symbols(changing on runtime) to a GraphicOverLay. The performance is bad, it takes more than 1 minute to query the filtered features (here, we use ArcGISMapImageSublayer.Table to load data) .

We are not sure if we are on the right direction.

Based on the limited ArcGIS knowledge I got, I guess there could be 2 other solutions I will try.

1. FeatureLayer with a uniquevaluerenderer.

Create a featurelayer with LocalFeatureService, and set a uniquevaluerenderer to featurelayer... (But here is a question, how can I change the state in client side. I guess I need to add a state column into FeatureTable. However, I do not want to save the runtime state value to remote filegeodatabse, is it possbile?)

2. GraphicOverLay with a UniqueValueRenderer.

Use LocalFeatureService to load all data into GraphicOverLay, and set a uniquevaluerenderer to GraphicOverLay..In this case, what is the best practice to filter graphics in GraphicOverlay...Is the performance as good as FeatureTable.DefinitionExpression.

Can someone tell me which is the best solution for me...

0 Kudos
4 Replies
MichaelBranscomb
Esri Frequent Contributor

Hi,

Starting with the datasource, where does the file geodatabase come from / how is it created?

Thanks

Mike 

0 Kudos
EricJing
New Contributor III

Thanks for reply...

The file geodatabased is created by ArcGIS pro, then packed in mpkx file, which is deployed on a server accessible for all clients...

In client, we use ArcGIS LocalServer to load them...Currently we use LocalMapService to load file geodatabase.

0 Kudos
MichaelBranscomb
Esri Frequent Contributor

Instead of packaging a .mpkx file the recommended approach is to package as a mobile map package (.mmpk). This avoids the requirement for the Local Server component.

For more information see:

Create Mobile Map Package—Data Management toolbox | Documentation 

Open mobile map package | ArcGIS for Developers 

Add graphics with renderer | ArcGIS for Developers 

Feature collection layer (Query) | ArcGIS for Developers 

For the data where the status is rapidly changing, you could consider:

- A GraphicsOverlay with a UniqueValueRenderer (GraphicsOverlays are in a collection on the MapView and render over the top of layers in the Map) 

- A FeatureCollection with a UniqueValueRenderer (FeatureCollections can be interleaved with other layers in the Map)

0 Kudos
EricJing
New Contributor III

Thank you for the mmpk solution, we are considering this solution. Seems mmpk has better performance on querying features than mpkx. But MMPK does not support editing feature. If we want to have the capability of editing feature on the fly, is there other solution other than mpkx? Is it possible mmpk would have feature editing functionality in the future?

0 Kudos