示例#1
0
        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
            });
        }
示例#2
0
        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.");
            }
        }