private void btnConfigure_Click(object sender, RoutedEventArgs e) { promdl.OSPointName = cmbOSPoint.Text; promdl.NHDIntName = cmbNHDIntlyr.Text; promdl.HTPathName = cmbHTPathlyr.Text; promdl.HTSpreadName = cmbHTSpreadlyr.Text; promdl.LSName = cmbLSlyr.Text; ConfigDetails = promdl; this.Close(); FrameworkApplication.SetCurrentToolAsync(null); }
public IdentityConfigWindow() { InitializeComponent(); promdl = new ProWindowConfig(); var fls = MapView.Active.Map.GetLayersAsFlattenedList();// .GetLayersAsFlattenedList().First() as FeatureLayer; foreach (Layer l in fls) { if (l.GetType().Name == "FeatureLayer") { if ((l as FeatureLayer).ShapeType == esriGeometryType.esriGeometryPoint) { if (l.Name.ToUpper().Contains("POINT")) { cmbOSPoint.Items.Add(l.Name); } else { cmbNHDIntlyr.Items.Add(l.Name); } } else if ((l as FeatureLayer).ShapeType == esriGeometryType.esriGeometryPolyline) { cmbHTPathlyr.Items.Add(l.Name); } else if ((l as FeatureLayer).ShapeType == esriGeometryType.esriGeometryPolygon) { cmbHTSpreadlyr.Items.Add(l.Name); } } else if (l.GetType().Name == "MosaicLayer") { cmbLSlyr.Items.Add(l.Name); } } if (promdl is null) { promdl = new ProWindowConfig(); if (cmbOSPoint.Items.Contains("OSPOINTM")) { cmbOSPoint.SelectedItem = "OSPOINTM"; } if (cmbNHDIntlyr.Items.Contains("NHD_Intersection")) { cmbNHDIntlyr.SelectedItem = "NHD_Intersection"; } if (cmbHTPathlyr.Items.Contains("HydrographicTransportPaths")) { cmbHTPathlyr.SelectedItem = "HydrographicTransportPaths"; } if (cmbHTSpreadlyr.Items.Contains("WaterbodySpreadPolygons")) { cmbHTSpreadlyr.SelectedItem = "WaterbodySpreadPolygons"; } if (cmbLSlyr.Items.Contains("MultiDimRasterMosaic")) { cmbLSlyr.SelectedItem = "MultiDimRasterMosaic"; } } else { if (!string.IsNullOrEmpty(promdl.OSPointName)) { cmbOSPoint.SelectedItem = promdl.OSPointName; } else { cmbOSPoint.SelectedItem = "OSPOINTM"; } if (!string.IsNullOrEmpty(promdl.NHDIntName)) { cmbNHDIntlyr.SelectedItem = promdl.NHDIntName; } else { cmbNHDIntlyr.SelectedItem = "NHD_Intersection"; } if (!string.IsNullOrEmpty(promdl.HTPathName)) { cmbHTPathlyr.SelectedItem = promdl.HTPathName; } else { cmbHTPathlyr.SelectedItem = "HydrographicTransportPaths"; } if (!string.IsNullOrEmpty(promdl.HTSpreadName)) { cmbHTSpreadlyr.SelectedItem = promdl.HTSpreadName; } else { cmbHTSpreadlyr.SelectedItem = "WaterbodySpreadPolygons"; } if (!string.IsNullOrEmpty(promdl.LSName)) { cmbLSlyr.SelectedItem = promdl.LSName; } else { cmbLSlyr.SelectedItem = "MultiDimRasterMosaic"; } } }
protected override async Task <bool> OnSketchCompleteAsync(Geometry geometry) { var bottomRight = new Point(); IList <Tuple <string, string, long> > tripleTuplePoints = new List <Tuple <string, string, long> >(); var hasSelection = await QueuedTask.Run(() => { // geometry is a point var clickedPnt = geometry as MapPoint; if (clickedPnt == null) { return(false); } // pixel tolerance var tolerance = 3; //Get the client point edges var topLeft = new Point(clickedPnt.X - tolerance, clickedPnt.Y + tolerance); bottomRight = new Point(clickedPnt.X + tolerance, clickedPnt.Y - tolerance); //convert the client points to Map points var mapTopLeft = MapView.Active.ClientToMap(topLeft); var mapBottomRight = MapView.Active.ClientToMap(bottomRight); //create a geometry using these points Geometry envelopeGeometry = EnvelopeBuilder.CreateEnvelope(mapTopLeft, mapBottomRight); if (envelopeGeometry == null) { return(false); } //Get the features that intersect the sketch geometry. var result = ActiveMapView.GetFeatures(geometry); ProWindowConfig objCfg = new ProWindowConfig(); objCfg = IdentityConfigWindow.promdl; //string[] feat_lyrnames = { }; var feat_lyrnames = new List <string>() { }; //string[] mosic_lyrnames = { }; var mosic_lyrnames = new List <string>() { }; string filtername = "LiquidsHCAFilter"; string strOSPointlayername = "NHD_Intersections"; //Assign defaul layernames if the object is empty if (objCfg is null) { feat_lyrnames = new List <string> { "HydrographicTransportPaths", "WaterbodySpreadPolygons" }; mosic_lyrnames = new List <string> { "MultiDimRasterMosaic" }; } //Assign layer names from the config object else { //Check the values are null or not if (!string.IsNullOrEmpty(objCfg.OSPointName)) { strOSPointlayername = objCfg.OSPointName; } if (!string.IsNullOrEmpty(objCfg.LSName)) { mosic_lyrnames.Add(objCfg.LSName); } if (!string.IsNullOrEmpty(objCfg.NHDIntName)) { feat_lyrnames.Add(objCfg.NHDIntName); } if (!string.IsNullOrEmpty(objCfg.HTPathName)) { feat_lyrnames.Add(objCfg.HTPathName); } if (!string.IsNullOrEmpty(objCfg.HTSpreadName)) { feat_lyrnames.Add(objCfg.HTSpreadName); } } var ospointlyr = ActiveMapView.Map.FindLayers(strOSPointlayername).First() as FeatureLayer; foreach (var kvp in result) { var bfl = kvp.Key; // only look at points if (kvp.Key.ShapeType != esriGeometryType.esriGeometryPoint) { continue; } var layerName = bfl.Name; var oidName = bfl.GetTable().GetDefinition().GetObjectIDField(); foreach (var oid in kvp.Value) { //Select a single state polygon FeatureLayer fl1 = ActiveMapView.Map.FindLayers(strOSPointlayername).First() as FeatureLayer; QueryFilter queryFilter = new QueryFilter(); string whereClause = String.Format("{0} = {1}", oidName, oid); queryFilter.WhereClause = whereClause; //Use a cursor to get to a feature's geometry using (ArcGIS.Core.Data.RowCursor rowCursor = fl1.Search(queryFilter)) { //Grab the first record (and hopefully only record) while (rowCursor.MoveNext()) { //Grab the features geometry Feature feature = rowCursor.Current as Feature; //Geometry geo = feature.GetShape(); string pintid_field = "POINT_ID"; var pointidval = feature[pintid_field]; foreach (string lyrname in feat_lyrnames) { FeatureLayer fl = ActiveMapView.Map.FindLayers(lyrname).First() as FeatureLayer; var lyrfilter = new CIMDefinitionFilter(); lyrfilter.Name = filtername; lyrfilter.DefinitionExpression = String.Format("{0} = '{1}'", pintid_field, pointidval); fl.SetDefinitionFilter(lyrfilter); } foreach (string lyrname in mosic_lyrnames) { MosaicLayer fl = ActiveMapView.Map.FindLayers(lyrname).First() as MosaicLayer; //RasterLayer rl = ActiveMapView.Map.FindLayers(lyrname).First() as RasterLayer; //rl.SetDefinition(); var lyrfilter = new CIMDefinitionFilter(); lyrfilter.Name = filtername; lyrfilter.DefinitionExpression = String.Format("Name LIKE '{0}%'", pointidval); fl.SetDefinitionFilter(lyrfilter); } ActiveMapView.RedrawAsync(true); } } } } return(true); }); return(true); }
protected override Task OnToolActivateAsync(bool active) { var hasSelection = QueuedTask.Run(() => { ProWindowConfig objCfg = new ProWindowConfig(); objCfg = IdentityConfigWindow.promdl; var feat_lyrnames = new List <string>() { }; var mosic_lyrnames = new List <string>() { }; string filtername = "LiquidsHCAFilter"; //Assign defaul layernames if the object is empty if (objCfg is null) { feat_lyrnames = new List <string> { "HydrographicTransportPaths", "WaterbodySpreadPolygons" }; mosic_lyrnames = new List <string> { "MultiDimRasterMosaic" }; } //Assign layer names from the config object else { if (!string.IsNullOrEmpty(objCfg.LSName)) { mosic_lyrnames.Add(objCfg.LSName); } if (!string.IsNullOrEmpty(objCfg.NHDIntName)) { feat_lyrnames.Add(objCfg.NHDIntName); } if (!string.IsNullOrEmpty(objCfg.HTPathName)) { feat_lyrnames.Add(objCfg.HTPathName); } if (!string.IsNullOrEmpty(objCfg.HTSpreadName)) { feat_lyrnames.Add(objCfg.HTSpreadName); } } //Remove the Defination query for the feature layers foreach (string lyrname in feat_lyrnames) { FeatureLayer fl = ActiveMapView.Map.FindLayers(lyrname).First() as FeatureLayer; fl.RemoveDefinitionFilter(filtername); } // Remove the defination query for hte Mosic dataset foreach (string lyrname in mosic_lyrnames) { MosaicLayer fl = ActiveMapView.Map.FindLayers(lyrname).First() as MosaicLayer; fl.RemoveDefinitionFilter(filtername); } ActiveMapView.RedrawAsync(true); return(true); }); return(base.OnToolActivateAsync(active)); }