ThinkGeo.com    |     Documentation    |     Premium Support

Editing In Memory Layer

I'm trying to move points that are stacked on top of one another in an InMemoryFeatureLayer.  The problem is when I update the points with the new coordinates it doesn't persist and they still show up on top of each other on the map.  In my Update call I'm using the Id of the feature that I want to update.  Am I missing something?  Thanks in advance.


Chad


 


 



foreach (Feature feat in layer.InternalFeatures)
{
Collection<Feature> feats = layer.QueryTools.GetFeaturesIntersecting(feat.GetShape(), ReturningColumnsType.NoColumns);

if (feats.Count > 1)
{
    double angleInterval = (double)360 / (double)feats.Count;
    double curAngle = 0;

    layer.EditTools.BeginTransaction();

    foreach (Feature moveFeat in feats)
    {
PointShape ps = (PointShape)moveFeat.GetShape();

ps.TranslateByDegree(20000, curAngle, GeographyUnit.DecimalDegree, DistanceUnit.Feet);

layer.EditTools.Update(new Feature(ps.X, ps.Y, moveFeat.Id));

curAngle = curAngle + angleInterval;
    }

    layer.EditTools.CommitTransaction();
}
}


 There is a Code Community sample in ThinkGeo Wiki that basically shows how to do what you are doing. It shows how to change the X and Y position of a PointShape of a feature in an InMemoryFeatureLayer. The sample is Moving Vehicle with Label and it is a Desktop sample wiki.thinkgeo.com/wiki/Map_Suite_De...ng_Samples


 You can look at the code in timer_Tick event and see how the position of the PointShape gets updated within the InMemoryFeatureLayer.


 



When I wrapped where I load the layer initially with a Begin / Commit Transaction that took care of it.  Thanks,


Chad



Chad,


 
Thanks for your post and letting us know your status.
 
Yes, the Begin—Add/Delete/Update—Commit transaction is the basic steps to edit layers, you can view the TransactionResult returned from the CommitTransaction API. The other way you can take a try is to remove the original feature and then add a new feature.
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale