public bool joinTabletoFeatureLayer(IServerContext mapContext, ITable externalTable, IFeatureLayer featureLayer, string tableJoinField, string layerJoinField, esriJoinType joinType) { IDisplayTable pDispTable = featureLayer as IDisplayTable; IFeatureClass pFCLayer = pDispTable.DisplayTable as IFeatureClass; ITable pTLayer = (ITable)pFCLayer; string strJnFieldLayer = layerJoinField; string strJnFieldTable = tableJoinField; IMemoryRelationshipClassFactory pMemRelFact = (IMemoryRelationshipClassFactory)mapContext.CreateObject("esriGeoDatabase.MemoryRelationshipClassFactory"); IRelationshipClass pRelClass = (IRelationshipClass)pMemRelFact.Open("Join", (IObjectClass)externalTable, strJnFieldTable, (IObjectClass)pTLayer, strJnFieldLayer, "forward", "backward", esriRelCardinality.esriRelCardinalityOneToOne); IDisplayRelationshipClass pDispRC = (IDisplayRelationshipClass)featureLayer; pDispRC.DisplayRelationshipClass(pRelClass, joinType); //esriLeftOuterJoin IDisplayTable dt = (IDisplayTable)featureLayer; ITable jointable = dt.DisplayTable; bool retval = false; if (jointable is IRelQueryTable) { retval = true; } return retval; }
public void TestAsg() { IServerContext svrContxt = null; try { svrContxt = ServerUtility.GetServerContext(this.Page); //3.创建serverObjects IPoint pt = svrContxt.CreateObject(PublicConst.Lbl_GeoObjt_Point) as IPoint; pt.X = 100; pt.Y = 200; sCallBackFuncStr = JsMesage.ShowMessage(Map1, string.Format("x={0},y={1}", pt.X, pt.Y)); } catch (Exception ex) { Console.WriteLine(ex); System.Diagnostics.Debug.WriteLine(ex); } finally { if (svrContxt != null) { svrContxt.ReleaseContext(); svrContxt = null; } } }
public Classifier(IServerContext mapContext, double [] values, int [] counts, String classifierType, int breaks) { m_classifier = (IClassifyGEN)mapContext.CreateObject("esriSystem." + classifierType); int b = breaks; m_classifier.Classify(values, counts, ref b); m_breaks = b; }
/// 获取GRB颜色 /// </summary> /// <param name="red"></param> /// <param name="green"></param> /// <param name="blue"></param> /// <returns></returns> public static ESRI.ArcGIS.Display.IColor GetRGB(int red, int green, int blue, IServerContext pServerContext) { IRgbColor rgbColor = pServerContext.CreateObject("esriDisplay.RGBColor") as IRgbColor; IColor color = rgbColor as IColor; rgbColor.Red = red; rgbColor.Green = green; rgbColor.Blue = blue; return(color); }
private IFeatureClass GetFeatureClassInsideDataset(string featureClassName) { IWorkspaceFactory2 factory = null; if (_serverContext != null) { factory = (IWorkspaceFactory2)_serverContext.CreateObject("esriDataSourcesGDB.SDEWorkspaceFactory"); } //else // factory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); //TODO COMMENTED ABOVE TO ALLOW COMPILE IWorkspace ipWks = null; IFeatureClass ipFeatClass = null; IFeatureDataset ipFeatDS = null; IEnumDataset ipEnumSubDataset = null; IEnumDataset ipEnumDataset = null; IFeatureWorkspace fws = null; try { IPropertySet2 propSet = null; if (_serverContext != null) { propSet = (IPropertySet2)_serverContext.CreateObject("esriSystem.PropertySet"); } //else // propSet = new ESRI.ArcGIS.esriSystem.PropertySetClass(); //TODO COMMENTED ABOVE TO ALLOW COMPILE propSet.SetProperty("SERVER", _sdeServerInfo.server); propSet.SetProperty("INSTANCE", _sdeServerInfo.instance); propSet.SetProperty("DATABASE", _sdeServerInfo.database); propSet.SetProperty("USER", _sdeServerInfo.user); propSet.SetProperty("PASSWORD", _sdeServerInfo.password); propSet.SetProperty("VERSION", _sdeServerInfo.version); ipWks = factory.Open(propSet, 0); fws = (IFeatureWorkspace)ipWks; //try and open it if (ipWks != null) { // Now get all the feature classes included in the datasets ipEnumDataset = ipWks.get_Datasets(esriDatasetType.esriDTFeatureDataset); ipEnumDataset.Reset(); ipFeatDS = ipEnumDataset.Next() as IFeatureDataset; while (ipFeatDS != null) { ipEnumSubDataset = ipFeatDS.Subsets; //.get_Datasets(esriDatasetType.esriDTFeatureClass); ipEnumSubDataset.Reset(); ipFeatClass = ipEnumSubDataset.Next() as IFeatureClass; while (ipFeatClass != null) { if (ipFeatClass.AliasName.ToUpper().Contains(featureClassName.ToUpper())) { return(ipFeatClass); } ipFeatClass = ipEnumSubDataset.Next() as IFeatureClass; } ipFeatDS = ipEnumDataset.Next() as IFeatureDataset; ipEnumSubDataset = null; } ipEnumDataset = null; } } catch (System.Runtime.InteropServices.COMException edd) { ipFeatClass = null; throw edd; } finally { Util.ReleaseCOMObject(fws); Util.ReleaseCOMObject(ipEnumSubDataset); Util.ReleaseCOMObject(ipEnumDataset); Util.ReleaseCOMObject(factory); } return(null); }
private IColor createRGBColor(IServerContext mapContext, int red, int green, int blue) { IColor retColor; RgbColor pColor; pColor = (RgbColor)mapContext.CreateObject("esriDisplay.RgbColor"); pColor.Red = red; pColor.Green = green; pColor.Blue = blue; retColor = (IColor)pColor; return retColor; }
private void applyRenderer(IGeoFeatureLayer geoLayer, IServerContext mapContext, string fieldName, Classifier classifier) { IClassBreaksRenderer cbRenderer = (IClassBreaksRenderer)mapContext.CreateObject("esriCarto.ClassBreaksRenderer"); cbRenderer.Field = fieldName; ILegendInfo legendInfo = (ILegendInfo)cbRenderer; ILegendGroup legendGroup = legendInfo.get_LegendGroup(0); legendGroup.Heading = "Counts"; int breaks = classifier.getBreaks(); IColor [] pColors = new IColor[breaks]; ISimpleFillSymbol [] symbols = new ISimpleFillSymbol[breaks]; double breakValue; cbRenderer.BreakCount = breaks; IAlgorithmicColorRamp colorRamp = (IAlgorithmicColorRamp)mapContext.CreateObject("esriDisplay.AlgorithmicColorRamp"); IColor startColor, endColor; startColor = createRGBColor(mapContext, 255, 255, 0); endColor = createRGBColor(mapContext, 255, 0, 0); colorRamp.FromColor = startColor; colorRamp.ToColor = endColor; colorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm; colorRamp.Size = breaks; bool created; try { colorRamp.CreateRamp(out created); } catch { this.Label2.Text = "There is not enough data associated with the current extents and attributes selected. A map was not generated. Please try selecting other attributes."; return; } IEnumColors iterColors = colorRamp.Colors; double[] classBreaksArray = (double[])classifier.getClassBreaksArray(); for (int i = 0; i < breaks; i++) { pColors[i] = iterColors.Next(); symbols[i] = (ISimpleFillSymbol)mapContext.CreateObject("esriDisplay.SimpleFillSymbol"); symbols[i].Color = pColors[i]; cbRenderer.set_Symbol(i, (ISymbol)symbols[i]); breakValue = classBreaksArray[i + 1]; cbRenderer.set_Break(i, breakValue); string breakValueString = String.Format("{0:0.00}", breakValue); if (i == 0) { cbRenderer.set_Label(i, "<" + breakValueString); } else { string prevValueString = String.Format("{0:0.00}", classBreaksArray[i]); string label = prevValueString + " < " + breakValueString; cbRenderer.set_Label(i, label); } } geoLayer.Renderer = (IFeatureRenderer)cbRenderer; this.Toc1.ExpandDepth = 1; this.Toc1.Refresh(); }