private void fnBlinking(string strLayerName, string strFieldName, int intFlickerRate, int intNClasses, short srtTransparency, double[] cb) { try { int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = mForm.axMapControl1.get_Layer(intLIndex); pFLayer = pLayer as IFeatureLayer; pTrackCancel = new CancelTrackerClass(); pTrackCancel.CancelOnClick = false; pTrackCancel.CancelOnKeyPress = true; ILayerEffects pLayerEffect = (ILayerEffects)pFLayer; pLayerEffect.Transparency = srtTransparency; while (pTrackCancel.Continue()) { IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer; for (int i = 0; i < intNClasses; i++) { if (i == 0) { pFDefinition.DefinitionExpression = strFieldName + " >= " + cb[i].ToString(); } else { pFDefinition.DefinitionExpression = strFieldName + " > " + cb[i].ToString(); } pActiveView.Refresh(); System.Threading.Thread.Sleep(intFlickerRate); if (pTrackCancel.Continue() == false) { pFDefinition.DefinitionExpression = strFieldName + " >= " + cb[0].ToString(); pActiveView.Refresh(); btnStart.Text = "Start"; pLayerEffect.Transparency = 0; break; } } } } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
private void DrawOnlySelectedFeatures(double dblValue) { try { IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer; pFDefinition.DefinitionExpression = strUncernRenderField + ">=" + dblValue.ToString(); pActiveView.Refresh(); } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
private void SetLayerDefinition(ILayer lyr) { if (lyr is ICompositeLayer) { ICompositeLayer comlyr = lyr as ICompositeLayer; for (int j = 0; j < comlyr.Count; j++) { ILayer lyr2 = comlyr.get_Layer(j); SetLayerDefinition(lyr2); } } else { switch (lyr.Name.Trim().ToLower()) { case "checkitemptn": case "checkitemln": case "checkitempoly": case "checkarea": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "VersionName = '" + AppManager.GetInstance().TaskName + "'"; } break; case "passedgrid": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "passed =1 and TaskName='" + AppManager.GetInstance().TaskName + "'"; } break; case "updategrid": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "passed is null and TaskName='" + AppManager.GetInstance().TaskName + "'"; } break; default: break; } } }
////定义地图图层的表达式,针对组图层二级分组 public static void setGpLyrsDefinitionOfHPoint(string in_sDefinition, ILayer in_Layer) { //ICompositeLayer IGroupLayer pTmpGroupLyr = in_Layer as IGroupLayer; IFeatureLayer pTmpFeaLayer = in_Layer as IFeatureLayer; if (pTmpGroupLyr != null) { ICompositeLayer pComLayer = pTmpGroupLyr as ICompositeLayer; for (int i = 0; i < pComLayer.Count; i++) { ILayer pLyr = pComLayer.get_Layer(i); if (pLyr.Valid && pLyr.Visible) { if (pLyr is IFeatureLayer) { ILayerFields pLyrFds = pLyr as ILayerFields; int idxValidDate = pLyrFds.FindField("QSRQ"), idxInvalidDate = pLyrFds.FindField("ZZRQ"); if (idxInvalidDate != -1 && idxValidDate != -1) { IFeatureLayerDefinition2 pPFLD2 = pLyr as IFeatureLayerDefinition2; pPFLD2.DefinitionExpression = in_sDefinition; } } } } return; } if (pTmpFeaLayer != null) { ILayerFields pLyrFds = pTmpFeaLayer as ILayerFields; int idxValidDate = pLyrFds.FindField("QSRQ"), idxInvalidDate = pLyrFds.FindField("ZZRQ"); if (idxInvalidDate != -1 && idxValidDate != -1) { IFeatureLayerDefinition2 pPFLD2 = in_Layer as IFeatureLayerDefinition2; pPFLD2.DefinitionExpression = in_sDefinition; } } }
private void FilterLayers() { for (int i = 0; i < axMapControl1.LayerCount; i++) { ILayer lyr = axMapControl1.get_Layer(i); switch (lyr.Name.Trim()) { case "CheckItemPtn": case "CheckItemLn": case "CheckItemPoly": case "CheckArea": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "VersionName = '" + AppManager.GetInstance().TaskName + "'"; } break; case "PassedGrid": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "passed=1 and TaskName='" + AppManager.GetInstance().TaskName + "'"; } break; case "UpdateGrid": if (lyr is IFeatureLayerDefinition2) { IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2; flyrd.DefinitionExpression = "sde.sde.TaskGridLog.passed is null and sde.sde.TaskGridLog.TaskName='" + AppManager.GetInstance().TaskName + "'"; } break; default: continue; } } }
private static void ApplyDefinitionquery(IFeatureLayer pFL, string definition_query) { IFeatureLayerDefinition2 pDefFL = (IFeatureLayerDefinition2)pFL; pDefFL.DefinitionExpression = definition_query; }
public void Execute(ESRI.ArcGIS.esriSystem.IArray paramvalues, ESRI.ArcGIS.esriSystem.ITrackCancel TrackCancel, ESRI.ArcGIS.Geoprocessing.IGPEnvironmentManager envMgr, ESRI.ArcGIS.Geodatabase.IGPMessages message) { try { IGPUtilities3 gpUtilities3 = new GPUtilitiesClass(); if (TrackCancel == null) { TrackCancel = new CancelTrackerClass(); } // find feature class inside the given feature dataset IGPParameter osmFeatureDatasetParameter = paramvalues.get_Element(in_osmFeatureDatasetNumber) as IGPParameter; IDEFeatureDataset osmFeatureDataset = gpUtilities3.UnpackGPValue(osmFeatureDatasetParameter) as IDEFeatureDataset; string osmPointFeatureClassString = ((IDataElement)osmFeatureDataset).Name + "_osm_pt"; string osmLineFeatureClassString = ((IDataElement)osmFeatureDataset).Name + "_osm_ln"; string osmPolygonFeatureClassString = ((IDataElement)osmFeatureDataset).Name + "_osm_ply"; IFeatureClass osmPointFeatureClass = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmPointFeatureClassString); IFeatureClass osmLineFeatureClass = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmLineFeatureClassString); IFeatureClass osmPoylgonFeatureClass = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmPolygonFeatureClassString); // open the specified layers holding the symbology and editing templates IGPParameter osmPointSymbolTemplateParameter = paramvalues.get_Element(in_osmPointLayerNumber) as IGPParameter; IGPValue osmGPPointLayerValue = gpUtilities3.UnpackGPValue(osmPointSymbolTemplateParameter); IGPParameter outputPointGPParameter = paramvalues.get_Element(out_osmPointLayerNumber) as IGPParameter; IGPValue outputPointLayerGPValue = gpUtilities3.UnpackGPValue(outputPointGPParameter); bool isLayerOnDisk = false; // create a clone of the source layer // we will then go ahead and adjust the data source (dataset) of the cloned layer IObjectCopy objectCopy = new ObjectCopyClass(); ICompositeLayer adjustedPointTemplateLayer = objectCopy.Copy(osmGPPointLayerValue) as ICompositeLayer; IGPGroupLayer osmPointGroupTemplateLayer = adjustedPointTemplateLayer as IGPGroupLayer; ICompositeLayer compositeLayer = gpUtilities3.Open((IGPValue)osmPointGroupTemplateLayer) as ICompositeLayer; //ICompositeLayer adjustedPointTemplateLayer = osmGPPointLayerValue as ICompositeLayer; //IGPGroupLayer osmPointGroupTemplateLayer = osmGPPointLayerValue as IGPGroupLayer; //IClone cloneSource = osmPointGroupTemplateLayer as IClone; //ICompositeLayer compositeLayer = m_gpUtilities3.Open((IGPValue)cloneSource.Clone()) as ICompositeLayer; if (compositeLayer == null) { ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass(); IFileName layerFileName = new FileNameClass(); layerFileName.Path = osmGPPointLayerValue.GetAsText(); IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName); enumLayer.Reset(); compositeLayer = enumLayer.Next() as ICompositeLayer; isLayerOnDisk = true; } IFeatureLayerDefinition2 featureLayerDefinition2 = null; ISQLSyntax sqlSyntax = null; IGPLayer adjustedPointGPLayer = null; if (compositeLayer != null) { for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++) { IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2; if (geoFeatureLayer != null) { if (geoFeatureLayer.ShapeType == osmPointFeatureClass.ShapeType) { try { ((IDataLayer2)geoFeatureLayer).Disconnect(); } catch { } ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmPointFeatureClass).FullName; ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmPointFeatureClass).FullName); featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2; if (featureLayerDefinition2 != null) { string queryDefinition = featureLayerDefinition2.DefinitionExpression; sqlSyntax = ((IDataset)osmPointFeatureClass).Workspace as ISQLSyntax; string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix); if (String.IsNullOrEmpty(queryDefinition) == false) { string stringToReplace = queryDefinition.Substring(0, 1); queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier); } featureLayerDefinition2.DefinitionExpression = queryDefinition; } } } } adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer); // save the newly adjusted layer information to disk if (isLayerOnDisk == true) { ILayerFile pointLayerFile = new LayerFileClass(); if (pointLayerFile.get_IsPresent(outputPointLayerGPValue.GetAsText())) { try { File.Delete(outputPointLayerGPValue.GetAsText()); } catch (Exception ex) { message.AddError(120041, ex.Message); return; } } pointLayerFile.New(outputPointLayerGPValue.GetAsText()); pointLayerFile.ReplaceContents((ILayer)compositeLayer); pointLayerFile.Save(); adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)pointLayerFile.Layer); } // IGPLayer adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer); gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustedPointGPLayer); gpUtilities3.PackGPValue((IGPValue)adjustedPointGPLayer, outputPointGPParameter); } isLayerOnDisk = false; IGPParameter osmLineSymbolTemplateParameter = paramvalues.get_Element(in_osmLineLayerNumber) as IGPParameter; IGPValue osmGPLineLayerValue = gpUtilities3.UnpackGPValue(osmLineSymbolTemplateParameter) as IGPValue; IGPParameter outputLineGPParameter = paramvalues.get_Element(out_osmLineLayerNumber) as IGPParameter; IGPValue outputLineLayerGPValue = gpUtilities3.UnpackGPValue(outputLineGPParameter); IGPValue adjustedLineTemplateLayer = objectCopy.Copy(osmGPLineLayerValue) as IGPValue; IGPGroupLayer osmLineGroupTemplateLayer = adjustedLineTemplateLayer as IGPGroupLayer; compositeLayer = gpUtilities3.Open((IGPValue)osmLineGroupTemplateLayer) as ICompositeLayer; if (compositeLayer == null) { ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass(); IFileName layerFileName = new FileNameClass(); layerFileName.Path = osmGPLineLayerValue.GetAsText(); IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName); enumLayer.Reset(); compositeLayer = enumLayer.Next() as ICompositeLayer; isLayerOnDisk = true; } if (compositeLayer != null) { for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++) { IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2; if (geoFeatureLayer.ShapeType == osmLineFeatureClass.ShapeType) { try { ((IDataLayer2)geoFeatureLayer).Disconnect(); } catch { } ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmLineFeatureClass).FullName; ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmLineFeatureClass).FullName); featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2; if (featureLayerDefinition2 != null) { string queryDefinition = featureLayerDefinition2.DefinitionExpression; sqlSyntax = ((IDataset)osmLineFeatureClass).Workspace as ISQLSyntax; string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix); if (string.IsNullOrEmpty(queryDefinition) == false) { string stringToReplace = queryDefinition.Substring(0, 1); queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier); } featureLayerDefinition2.DefinitionExpression = queryDefinition; } } } // save the newly adjusted layer information to disk if (isLayerOnDisk == true) { ILayerFile lineLayerFile = new LayerFileClass(); if (lineLayerFile.get_IsPresent(outputLineLayerGPValue.GetAsText())) { try { File.Delete(outputLineLayerGPValue.GetAsText()); } catch (Exception ex) { message.AddError(120042, ex.Message); return; } } lineLayerFile.New(outputLineLayerGPValue.GetAsText()); lineLayerFile.ReplaceContents((ILayer)compositeLayer); lineLayerFile.Save(); } IGPLayer adjustLineGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer); gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustLineGPLayer); gpUtilities3.PackGPValue((IGPValue)adjustLineGPLayer, outputLineGPParameter); } isLayerOnDisk = false; IGPParameter osmPolygonSymbolTemplateParameter = paramvalues.get_Element(in_osmPolygonLayerNumber) as IGPParameter; IGPValue osmGPPolygonLayerValue = gpUtilities3.UnpackGPValue(osmPolygonSymbolTemplateParameter); IGPParameter outputPolygonGPParameter = paramvalues.get_Element(out_osmPolygonLayerNumber) as IGPParameter; IGPValue outputPolygonLayerGPValue = gpUtilities3.UnpackGPValue(outputPolygonGPParameter); IGPValue adjustedPolygonTemplateLayer = objectCopy.Copy(osmGPPolygonLayerValue) as IGPValue; IGPGroupLayer osmPolygonGroupTemplateLayer = adjustedPolygonTemplateLayer as IGPGroupLayer; compositeLayer = gpUtilities3.Open((IGPValue)osmPolygonGroupTemplateLayer) as ICompositeLayer; if (compositeLayer == null) { ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass(); IFileName layerFileName = new FileNameClass(); layerFileName.Path = osmGPPolygonLayerValue.GetAsText(); IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName); enumLayer.Reset(); compositeLayer = enumLayer.Next() as ICompositeLayer; isLayerOnDisk = true; } if (compositeLayer != null) { for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++) { IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2; if (geoFeatureLayer.ShapeType == osmPoylgonFeatureClass.ShapeType) { try { ((IDataLayer2)geoFeatureLayer).Disconnect(); } catch { } ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmPoylgonFeatureClass).FullName; ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmPoylgonFeatureClass).FullName); featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2; if (featureLayerDefinition2 != null) { string queryDefinition = featureLayerDefinition2.DefinitionExpression; sqlSyntax = ((IDataset)osmPoylgonFeatureClass).Workspace as ISQLSyntax; string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix); if (String.IsNullOrEmpty(queryDefinition) == false) { string stringToReplace = queryDefinition.Substring(0, 1); queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier); } featureLayerDefinition2.DefinitionExpression = queryDefinition; } } } // save the newly adjusted layer information to disk if (isLayerOnDisk == true) { ILayerFile polygonLayerFile = new LayerFileClass(); if (polygonLayerFile.get_IsPresent(outputPolygonLayerGPValue.GetAsText())) { try { File.Delete(outputPolygonLayerGPValue.GetAsText()); } catch (Exception ex) { message.AddError(120043, ex.Message); return; } } polygonLayerFile.New(outputPolygonLayerGPValue.GetAsText()); polygonLayerFile.ReplaceContents((ILayer)compositeLayer); polygonLayerFile.Save(); } IGPLayer adjustedPolygonGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer); gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustedPolygonGPLayer); gpUtilities3.PackGPValue((IGPValue)adjustedPolygonGPLayer, outputPolygonGPParameter); } } catch (Exception ex) { message.AddError(-10, ex.Message); } }
private void DrawCCMaps() { m_intClassNumber = Convert.ToInt32(nudGCNClasses.Value); IFeatureClass pFClass = pFLayer.FeatureClass; //Determine Class Breaks for variable int intValueFldIdx = pFClass.FindField(strVarFldName); ITable pTable = (ITable)pFClass; IClassifyGEN pClassifyGEN = null; switch (cboGCClassify.Text) { case "Equal Interval": pClassifyGEN = new EqualIntervalClass(); break; case "Geometrical Interval": pClassifyGEN = new GeometricalInterval(); break; case "Natural Breaks": pClassifyGEN = new NaturalBreaksClass(); break; case "Quantile": pClassifyGEN = new QuantileClass(); break; case "StandardDeviation": pClassifyGEN = new StandardDeviationClass(); break; default: pClassifyGEN = new NaturalBreaksClass(); break; } ITableHistogram pTableHistogram = new BasicTableHistogramClass(); pTableHistogram.Field = strVarFldName; pTableHistogram.Table = pTable; //IHistogram pHistogram = (IHistogram)pTableHistogram2; IBasicHistogram pHistogram = (IBasicHistogram)pTableHistogram; ////Not working in ArcGIS 10.5 022417 HK //ITableHistogram pTableHistogram = new TableHistogramClass(); //pTableHistogram.Field = strVarFldName; //pTableHistogram.Table = pTable; //IHistogram pHistogram = (IHistogram)pTableHistogram; object xVals, frqs; pHistogram.GetHistogram(out xVals, out frqs); pClassifyGEN.Classify(xVals, frqs, m_intClassNumber); double[] cb = (double[])pClassifyGEN.ClassBreaks; //Class Determinations for vertical and horizontal axis if (m_VerticalBreaks == null) { pClassifyGEN = new QuantileClass(); //Using Quatile pTableHistogram = new BasicTableHistogramClass(); pTableHistogram.Field = strVerConFldName; pTableHistogram.Table = pTable; pHistogram = (IBasicHistogram)pTableHistogram; pHistogram.GetHistogram(out xVals, out frqs); pClassifyGEN.Classify(xVals, frqs, intVerCnt); m_VerticalBreaks = (double[])pClassifyGEN.ClassBreaks; } if (m_HorizontalBreaks == null) { pClassifyGEN = new QuantileClass(); //Using Quatile pTableHistogram = new BasicTableHistogramClass(); pTableHistogram.Field = strHorConFldName; pTableHistogram.Table = pTable; pHistogram = (IBasicHistogram)pTableHistogram; pHistogram.GetHistogram(out xVals, out frqs); pClassifyGEN.Classify(xVals, frqs, intHorCnt); m_HorizontalBreaks = (double[])pClassifyGEN.ClassBreaks; } //Create Renderer IClassBreaksRenderer pRender = new ClassBreaksRenderer(); pRender.Field = strVarFldName; pRender.BreakCount = m_intClassNumber; pRender.MinimumBreak = cb[0]; string strColorRamp = cboColorRamp.Text; IEnumColors pEnumColors = MultiPartColorRamp(strColorRamp, "CIE Lab", m_intClassNumber); pEnumColors.Reset(); int[,] arrColors = new int[m_intClassNumber, 3]; for (int k = 0; k < m_intClassNumber; k++) { IColor pColor = pEnumColors.Next(); IRgbColor pRGBColor = new RgbColorClass(); pRGBColor.RGB = pColor.RGB; arrColors[k, 0] = pRGBColor.Red; arrColors[k, 1] = pRGBColor.Green; arrColors[k, 2] = pRGBColor.Blue; } pEnumColors.Reset(); IRgbColor pColorOutline = new RgbColor(); //Can Change the color in here! pColorOutline = m_pSnippet.getRGB(picOutlineColor.BackColor.R, picOutlineColor.BackColor.G, picOutlineColor.BackColor.B); double dblGCOutlineSize = Convert.ToDouble(nudOutlinewidth.Value); ICartographicLineSymbol pOutLines = new CartographicLineSymbol(); pOutLines.Width = dblGCOutlineSize; pOutLines.Color = (IColor)pColorOutline; //' use this interface to set dialog properties IClassBreaksUIProperties pUIProperties = (IClassBreaksUIProperties)pRender; pUIProperties.ColorRamp = "Custom"; ISimpleFillSymbol pSimpleFillSym; pEnumColors.Reset(); double dblAdding = Math.Pow(0.1, m_intRounding); for (int j = 0; j < m_intClassNumber; j++) { pRender.Break[j] = cb[j + 1]; if (j == 0) { pRender.Label[j] = Math.Round(cb[j], m_intRounding).ToString("N" + m_intRounding.ToString()) + " - " + Math.Round(cb[j + 1], 2).ToString("N" + m_intRounding.ToString()); } else { pRender.Label[j] = Math.Round(cb[j] + dblAdding, m_intRounding).ToString("N" + m_intRounding.ToString()) + " - " + Math.Round(cb[j + 1], 2).ToString("N" + m_intRounding.ToString()); } pUIProperties.LowBreak[j] = cb[j]; pSimpleFillSym = new SimpleFillSymbolClass(); IRgbColor pRGBColor = m_pSnippet.getRGB(arrColors[j, 0], arrColors[j, 1], arrColors[j, 2]); pSimpleFillSym.Color = (IColor)pRGBColor; pSimpleFillSym.Outline = pOutLines; pRender.Symbol[j] = (ISymbol)pSimpleFillSym; } //Background Layer ISimpleRenderer pSimpleRender = new SimpleRendererClass(); ISimpleFillSymbol pBGSymbol = new SimpleFillSymbolClass(); pBGSymbol.Color = (IColor)m_pSnippet.getRGB(picBGColor.BackColor.R, picBGColor.BackColor.G, picBGColor.BackColor.B); ICartographicLineSymbol pBGOutLines = new CartographicLineSymbol(); pBGOutLines.Width = 0; pBGOutLines.Color = m_pSnippet.getRGB(255, 255, 255); pBGSymbol.Outline = pBGOutLines; pSimpleRender.Symbol = (ISymbol)pBGSymbol; IFeatureLayer pflBG = new FeatureLayerClass(); pflBG.FeatureClass = pFClass; IGeoFeatureLayer pGeoBG = (IGeoFeatureLayer)pflBG; pGeoBG.Renderer = (IFeatureRenderer)pSimpleRender; pGeoBG.Selectable = false; //Feature Count for each map m_intsFeatureCnts = new int[intVerCnt * intHorCnt]; int l = 0; for (int i = 0; i < intVerCnt; i++) { for (int j = 0; j < intHorCnt; j++) { IFeatureLayer pflOutput = new FeatureLayerClass(); pflOutput.FeatureClass = pFClass; IGeoFeatureLayer pGeofeatureLayer = (IGeoFeatureLayer)pflOutput; pGeofeatureLayer.Renderer = (IFeatureRenderer)pRender; IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pGeofeatureLayer; string strWhereClause = null; if (i == 0 && j == 0) { strWhereClause = strVerConFldName + " >= " + m_VerticalBreaks[i].ToString() + " AND " + strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " + strHorConFldName + " >= " + m_HorizontalBreaks[j].ToString() + " AND " + strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString(); } else if (i != 0 && j == 0) { strWhereClause = strVerConFldName + " > " + m_VerticalBreaks[i].ToString() + " AND " + strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " + strHorConFldName + " >= " + m_HorizontalBreaks[j].ToString() + " AND " + strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString(); } else if (i == 0 && j != 0) { strWhereClause = strVerConFldName + " >= " + m_VerticalBreaks[i].ToString() + " AND " + strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " + strHorConFldName + " > " + m_HorizontalBreaks[j].ToString() + " AND " + strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString(); } else { strWhereClause = strVerConFldName + " > " + m_VerticalBreaks[i].ToString() + " AND " + strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " + strHorConFldName + " > " + m_HorizontalBreaks[j].ToString() + " AND " + strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString(); } pFDefinition.DefinitionExpression = strWhereClause; IQueryFilter pQfilter = new QueryFilterClass(); pQfilter.WhereClause = strWhereClause; m_intsFeatureCnts[l] = pGeofeatureLayer.FeatureClass.FeatureCount(pQfilter); m_axMapControls[l].ActiveView.FocusMap.ClearLayers(); m_axMapControls[l].ActiveView.FocusMap.AddLayer(pGeoBG); m_axMapControls[l].ActiveView.FocusMap.AddLayer(pGeofeatureLayer); m_axMapControls[l].ActiveView.Extent = m_axMapControls[l].ActiveView.FullExtent; m_axMapControls[l].ActiveView.Refresh(); l++; } } lblVariable.Text = "Selected Variable: " + strVarFldName; UpdateRange(lvSymbol, m_intClassNumber, cb, arrColors, m_intRounding); if (m_blnAddBoxes) { UpdateTextBoxes(); } else { AddTextBoxes(); } UpdateLabels(); UpdateHorVerLabels(); }
private void btnStart_Click(object sender, EventArgs e) { try { string strLayerName = cboSourceLayer.Text; string strFieldName = cboWeight.Text; int intFlickerRate = Convert.ToInt32(Convert.ToDouble(nudFlikerRate.Value) * 1000); short intTransparency = Convert.ToInt16(nudTransparency.Value); btnStart.Text = "Hit Esc to Stop"; if (strLayerName == "" || strFieldName == "") { MessageBox.Show("Please select layer or field"); return; } if (strFieldName == "None") { int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = mForm.axMapControl1.get_Layer(intLIndex); pFLayer = pLayer as IFeatureLayer; string strOIDFieldNM = pFLayer.FeatureClass.OIDFieldName; int intFeatureCounts = pFLayer.FeatureClass.FeatureCount(null); pTrackCancel = new CancelTrackerClass(); pTrackCancel.CancelOnClick = false; pTrackCancel.CancelOnKeyPress = true; ILayerEffects pLayerEffect = (ILayerEffects)pFLayer; pLayerEffect.Transparency = intTransparency; //pActiveView.Refresh(); while (pTrackCancel.Continue()) { IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer; pFDefinition.DefinitionExpression = strOIDFieldNM + " < 0"; pActiveView.Refresh(); System.Threading.Thread.Sleep(intFlickerRate); if (pTrackCancel.Continue() == false) { pFDefinition.DefinitionExpression = strOIDFieldNM + " >= 0"; pActiveView.Refresh(); btnStart.Text = "Start"; pLayerEffect.Transparency = 0; break; } pFDefinition.DefinitionExpression = strOIDFieldNM + " >= 0"; pActiveView.Refresh(); System.Threading.Thread.Sleep(intFlickerRate); if (pTrackCancel.Continue() == false) { pLayerEffect.Transparency = 0; btnStart.Text = "Start"; break; } } } else { if (strFieldName == "") { return; } int intNClasses = Convert.ToInt32(nudCoNClasses.Value); double[] cb = fnClassification(pFLayer, nudCoNClasses.Value, cboWeight.Text, cboCoClassify.Text); fnBlinking(strLayerName, strFieldName, intFlickerRate, intNClasses, intTransparency, cb); } } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
/// <summary> /// 加载历史数据 /// </summary> /// <param name="vData"></param> /// <remarks></remarks> private void AddHisLayer(object vData, string sfunLR, Collection <object> pHisLyrColl) { string dTimeStamp = string.Empty; string strName = null; string sHTableName = null; string sName = null; int i = 0; IFeatureWorkspace pFeatureWorkspace = default(IFeatureWorkspace); IFeatureClass pFeatCls = default(IFeatureClass); //Dim pFeatLayer As IFeatureLayer IFeatureLayer pFeatLyr = default(IFeatureLayer); string strCondition = null; if (ClsHistory.WorkSpace == null) { return; } pFeatureWorkspace = ClsHistory.WorkSpace as IFeatureWorkspace; if (pHisLyrColl.Count == 0) { if (GetHisLayerColl() == false) { return; } } try { if (m_sMorTSelected == "0") { m_pHistoricalVersion = m_pHistoricalWorkspace.FindHistoricalVersionByName(vData.ToString()); dTimeStamp = String.Format(m_pHistoricalVersion.TimeStamp.ToString(), "yyyy-MM-dd HH:mm:ss"); //格式化时间 } else if (m_sMorTSelected == "1") { dTimeStamp = String.Format(vData.ToString(), "yyyy-MM-dd HH:mm:ss"); } //FrmProgressBar progressBar = new FrmProgressBar(true); //progressBar.SetMax(pHisLyrColl.Count); //progressBar.SetStep(1); //progressBar.ShowNew(); //progressBar.SetInfo("正在加载历史图层..."); for (i = 0; i < pHisLyrColl.Count; i++) { pFeatLyr = pHisLyrColl[i] as IFeatureLayer; strName = ((IDataset)pFeatLyr.FeatureClass).Name; //查找对应的历史图层名_H% try { sHTableName = ClsHistory.GetTableNameRec(strName, ClsHistory.Connection); if (string.IsNullOrEmpty(sHTableName)) { MessageBoxEx.Show("不存在'" + strName + "'图层的历史数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //progressBar.PerformOneStep(); continue; } } catch (Exception) { //progressBar.PerformOneStep(); continue; } //按时间戳进行点查询 strCondition = "GDB_FROM_DATE <= TO_DATE('" + Convert.ToString(dTimeStamp) + "','yyyy-MM-dd HH24:mi:ss') AND GDB_TO_DATE > TO_DATE('" + Convert.ToString(dTimeStamp) + "','yyyy-MM-dd HH24:mi:ss')"; IQueryFilter pFilter = default(IQueryFilter); IFeatureLayer pTmpLayer = default(IFeatureLayer); IFeatureLayer pNewFeatLyr = default(IFeatureLayer); IFeatureLayerDefinition2 pFeatLayerDef = default(IFeatureLayerDefinition2); IFeatureSelection pFeatSel = default(IFeatureSelection); pFilter = new QueryFilter(); pFilter.SubFields = "*"; pFilter.WhereClause = strCondition; pFeatCls = pFeatureWorkspace.OpenFeatureClass(sHTableName); pTmpLayer = new FeatureLayer(); pTmpLayer.FeatureClass = pFeatCls; pFeatSel = pTmpLayer as IFeatureSelection; pFeatSel.SelectFeatures(pFilter, esriSelectionResultEnum.esriSelectionResultNew, false); pFeatLayerDef = pTmpLayer as IFeatureLayerDefinition2; pFeatLayerDef.DefinitionExpression = strCondition; //IFields fields = pTmpLayer.FeatureClass.Fields; //int indext = fields.FindField("GDB_FROM_DATE"); //object str = pTmpLayer.FeatureClass.GetFeature(1).get_Value(indext); //string str=pTmpLayer.FeatureClass.get //对历史图层命名 if (m_sMorTSelected == "0") { sName = strName + "[" + vData + "]"; } else if (m_sMorTSelected == "1") { sName = strName + "[" + Convert.ToString(dTimeStamp) + "]"; } else { //progressBar.CloseBar(); return; } //按照选择集生成新的图层pNewFeatLyr pNewFeatLyr = pFeatLayerDef.CreateSelectionLayer(sName, true, "", ""); //添加历史图层到对应的MapCtl中 if (sfunLR == "0") { if (this.MapLeft.Map != null) { if (LayerExist((Map)this.MapLeft.Map, sName) == false) { //MapLeft.ClearLayers(); MapLeft.Map.AddLayer(pNewFeatLyr); } } } else if (sfunLR == "1") { if (this.MapRight.Map != null) { if (LayerExist((Map)this.MapRight.Map, sName) == false) { //MapRight.ClearLayers(); MapRight.Map.AddLayer(pNewFeatLyr); } } } //progressBar.PerformOneStep(); } } catch (Exception) { //g_ErrorHandle.HandleError(true, "错误文件名:" + "WHFHistory_frmHisDoubView" + ";错误过程名:AddHisLayer" + ";错误行数: " + g_ErrorHandle.GetErrorLineNumberString(Erl()), Err().Number, Err().Source, Err().Description); } finally { //if (frmCnProgress.IsDisposed == false) // frmCnProgress.Close(); } }