Q1: Is there a faster mechanism to create a point layer in ArcGis Pro from a custom formatted data file in a .net add-in?
Currently :
I am loading data point programmatically from a custom file format, firstly into a data structure,
I create a FeatureLayer in CurrentProject.DefaultGeodatabasePath [which seems to add to current map automatically]
I then iterate the points data, creating with MapPointBuilder.CreateMapPoint() and adding with an EditOperation, and then commit using createOperation.ExecuteAsync()
Then apply a renderer
All good, BUT the commit operation is very slow : eg 10k points takes 20-30 secs, 100k points takes 3-5 minutes
Q2 : Often this is an ephemeral/temp display layer - do i still need to create in the geoDB, or can i create in some faster, memory-only, map-only mechanism ?
For reference on the same machine , our stats package would load and display 100k points on a map in 6-7 secs, QGIS plugin using the same mechanism would load & display 10k points in under 2 secs and the 100k points file in 10-11 secs
Abbreviated Code :
FeatureLayer pointFeatureLayer = [... create empty Feature layer using : Geoprocessing.ExecuteToolAsync("CreateFeatureclass_management",...]
AddFields(); // using Geoprocessing.ExecuteToolAsync("management.AddFields",.....
// add points & attributes :
var createOperation = new EditOperation();
createOperation.SelectNewFeatures = false;
[foreach source point record ]
{
featureAttribs = [..get point attribute values..]
// create the geometry & add the attribute values
MapPoint newMapPoint = null;
Coordinate3D newCoordinate = new Coordinate3D(x, y, z);
newMapPoint = MapPointBuilder.CreateMapPoint(newCoordinate, sref);
// add the geometry as an attribute
featureAttribs.Add("Shape", newMapPoint);
// queue feature creation
createOperation.Create(pointFeatureLayer, featureAttribs);
}
// then commit :
Task<bool> res = createOperation.ExecuteAsync();
[ create and apply CIMUniqueValueRenderer ]