protected async void ChangeParcelType() { await QueuedTask.Run(async() => { //check for selected layer if (MapView.Active.GetSelectedLayers().Count == 0) { System.Windows.MessageBox.Show("Please select a source layer in the table of contents", "Change Parcel Type"); return; } //first get the feature layer that's selected in the table of contents var sourcePolygonL = MapView.Active.GetSelectedLayers().First() as FeatureLayer; var layers = MapView.Active.Map.GetLayersAsFlattenedList(); var pfL = layers.FirstOrDefault(l => l is ParcelLayer) as ParcelLayer; string sTargetParcelType = "Tax"; //Microsoft.VisualBasic.Interaction.InputBox("Target Parcel Type:", "Copy Parcel Lines To", "Tax"); if (sTargetParcelType.Trim().Length == 0) { return; } #region Change parcel type var targetFeatLyr = layers.FirstOrDefault(l => l.Name == "Tax" && l is FeatureLayer) as FeatureLayer; //the target parcel polygon feature layer if (pfL == null || sourcePolygonL == null) { return; } //add polygon layers and the feature ids to change the type on to a new KeyValuePair MapMember mapMemberSource = sourcePolygonL as MapMember; var ids = new List <long>(sourcePolygonL.GetSelection().GetObjectIDs()); var kvp = new KeyValuePair <MapMember, List <long> >(mapMemberSource, ids); var sourceFeatures = new List <KeyValuePair <MapMember, List <long> > > { kvp }; var editOper = new EditOperation() { Name = "Change Parcel Type", ProgressMessage = "Change Parcel Type...", ShowModalMessageAfterFailure = true, SelectNewFeatures = true, SelectModifiedFeatures = false }; editOper.ChangeParcelType(pfL, sourceFeatures, targetFeatLyr, -1); await editOper.ExecuteAsync(); #endregion }); }
protected async void ChangeParcelType() { string errorMessage = await QueuedTask.Run(async() => { //check for selected layer if (MapView.Active.GetSelectedLayers().Count == 0) { return("Please select a source layer in the table of contents"); } //get the feature layer that's selected in the table of contents var sourcePolygonL = MapView.Active.GetSelectedLayers().OfType <FeatureLayer>().FirstOrDefault(); if (sourcePolygonL == null) { return(""); } var myParcelFabricLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <ParcelLayer>().FirstOrDefault(); if (myParcelFabricLayer == null) { return(""); } var targetFeatLyrEnum = await myParcelFabricLayer.GetParcelPolygonLayerByTypeName("Tax"); if (targetFeatLyrEnum.Count() == 0) { return(""); } var targetFeatLyr = targetFeatLyrEnum.FirstOrDefault(); //the target parcel polygon feature layer #region Change parcel type //add polygon layers and the feature ids to change the type on to a new KeyValuePair var ids = new List <long>(sourcePolygonL.GetSelection().GetObjectIDs()); var kvp = new KeyValuePair <MapMember, List <long> >(sourcePolygonL, ids); var sourceFeatures = new List <KeyValuePair <MapMember, List <long> > > { kvp }; try { var editOper = new EditOperation() { Name = "Change Parcel Type", ProgressMessage = "Change Parcel Type...", ShowModalMessageAfterFailure = true, SelectNewFeatures = true, SelectModifiedFeatures = false }; editOper.ChangeParcelType(myParcelFabricLayer, sourceFeatures, targetFeatLyr); if (!editOper.Execute()) { return(editOper.ErrorMessage); } } catch (Exception ex) { return(ex.Message); } return(""); #endregion }); if (!string.IsNullOrEmpty(errorMessage)) { MessageBox.Show(errorMessage, "Change Parcel Type."); } }