Hi, Thanks for ur reply.but i didn't get u can u plz tell me briefly so that it will be helpful to me.
Thanks and Regards, Padmini. Chris Claydon wrote: > > I would recommend modifying your call to InterpolateColor() so that the > start color and end color correspond to the colors you want. They are > currently both set to the same string. > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of padmini > godavarthi > Sent: Friday, January 30, 2009 3:59 AM > To: [email protected] > Subject: [mapguide-users] Thematic Mapping > > > > > Hi, > iam using mpguide opensource 2.0 (.net 2.0 +IIS 5.1). > I want to do thematic mapping for polygon layer(for example parcel layer) > i tried to use the code in dotnetviewer sample.its working fine > > iam able to create a thematic layer with same color to the all polygons. > Now my problem is that i want to apply different colours to the different > polygons > > for example for parcel_id =1 ------------ green colour > for example for parcel_id =2 ------------ Red colour and > soon......................... > > for this can u plz tell me the code for how to do it? > > > my code was as follows > ------------------------------------------------------------------------------------------------------ > > > NameValueCollection serverVars = Request.ServerVariables; > String strServerVars = ""; > foreach (String str in serverVars.AllKeys) > { > > strServerVars += "<br>" + str; > > } > String platform = serverVars["SERVER_SOFTWARE"]; > String queryStr = serverVars["QUERY_STRING"]; > string queryStr1 = serverVars["Form"]; > NameValueCollection requestParams = Request.HttpMethod == "POST" ? > Request.Form : Request.QueryString; > String sessionId = Request.QueryString["SESSION"]; > string realPath = Request.ServerVariables["APPL_PHYSICAL_PATH"]; > String configPath = realPath + "webconfig.ini"; > MapGuideApi.MgInitializeWebTier(configPath); > MgUserInformation userInfo = new MgUserInformation(sessionId); > MgSiteConnection siteConnection = new MgSiteConnection(); > siteConnection.Open(userInfo); > MgResourceService resourceService = > (MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService); > MgFeatureService featureService = > (MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService); > > MgMap map = new MgMap(); > map.Open(resourceService, "mapdata"); > MgLayerCollection layers = map.GetLayers(); > MgLayer layer = (MgLayer)layers.GetItem("property layer"); > > MgResourceIdentifier resId = new > MgResourceIdentifier(layer.GetFeatureSourceId()); > MgResourceIdentifier layerDefResId = layer.GetLayerDefinition(); > MgByteReader byteReader = > resourceService.GetResourceContent(layerDefResId); > > // Load the Layer Definition and Navigate to the specified > <VectorScaleRange> > > XmlDocument doc = new XmlDocument(); > String xmlLayerDef = byteReader.ToString(); > doc.LoadXml(xmlLayerDef); > XmlNodeList nodeList = > doc.GetElementsByTagName("VectorScaleRange"); > > XmlElement vectorScaleRangecElement = (XmlElement)nodeList.Item(0); > XmlElement areaTypeStyle = > (XmlElement)vectorScaleRangecElement.GetElementsByTagName("AreaTypeStyle").Item(0); > > // Remove any existing <AreaRule> elements. > > XmlNodeList areaRuleList = > areaTypeStyle.GetElementsByTagName("AreaRule"); > int count = areaRuleList.Count; > for (int i = 0; i < count; i++) > { > //The areaRuleList shrinks as we remove items, so always > //remove the first item (don't use the index i) > areaTypeStyle.RemoveChild(areaRuleList.Item(0)); > } > > // Now create the new <AreaRule> elements. > > String areaRuleTemplate = > File.ReadAllText(GetThemeXmlTemplatePath()); > MgFeatureAggregateOptions aggregateOptions = new > MgFeatureAggregateOptions(); > > String value = null; > String filterText = null; > String areaRuleXML = null; > XmlDocument areaDoc = null; > XmlNode areaNode = null; > double portion = 0.0; > > aggregateOptions.AddFeatureProperty("FeatId"); > aggregateOptions.SelectDistinct(true); > aggregateOptions.SetFilter(totquery); > double increment = (5 > 1) ? 1.0 / (5 - 1) : 1.0; > MgDataReader dataReader = > featureService.SelectAggregate(resId, > layer.GetFeatureClassName(), aggregateOptions); > while (dataReader.ReadNext()) > { > value = GetFeaturePropertyValue(dataReader, "FeatId"); > > filterText = """ + "FeatId" + "" = "; > > filterText = filterText + value; > > areaRuleXML = String.Format(areaRuleTemplate, > "FeatId" + ":" + value, > filterText, > InterpolateColor(portion, "C2C3C4", "C2C3C4", 0), > InterpolateColor(portion, > "C2C3C4", "C2C3C4", 0)); > areaDoc = new XmlDocument(); > areaDoc.LoadXml(areaRuleXML); > areaDoc.Save("C:\\theme.xml"); > areaNode = doc.ImportNode(areaDoc.DocumentElement, true); > areaTypeStyle.AppendChild(areaNode); > > > portion = portion + increment; > } > dataReader.Close(); > > > // Now save our new layer definition to the session and add it to > the map. > > String xmlString = doc.DocumentElement.OuterXml; > String uniqueName = this.MakeUniqueLayerName(map, "property > layer", > "sample"); > String legendLabel = layer.GetLegendLabel(); > if ("sample".Length > 0) > legendLabel = legendLabel + " (" + "sample" + ")"; > > MgResourceIdentifier layerResId = new > MgResourceIdentifier("Session:" + sessionId + "//" + uniqueName + > ".LayerDefinition"); > resourceService.SetResource(layerResId, new > MgByteReader(xmlString, > "text/xml") , null); > > MgLayer newLayer = new MgLayer(layerResId, resourceService); > newLayer.SetName(uniqueName); > newLayer.SetLegendLabel(legendLabel); > newLayer.SetDisplayInLegend(layer.GetDisplayInLegend()); > newLayer.SetVisible(true); > newLayer.SetSelectable(layer.GetSelectable()); > layers.Insert(layers.IndexOf(layer), newLayer); > > map.Save(resourceService); > > return uniqueName; > } > --------------------------------------------- > private String InterpolateColor(double portion, String startColor, String > endColor, int percentTransparent) > { > int alpha = (int)(255 * (100.0 - percentTransparent) / 100.0); > String result = ""; > if (startColor.Equals(endColor)) > { > result = String.Format("{0:X2}{1}", alpha, startColor); > } > else > { > int red = CalculateRGB(portion, startColor.Substring(0, 2), > endColor.Substring(0, 2)); > int green = CalculateRGB(portion, startColor.Substring(2, 2), > endColor.Substring(2, 2)); > int blue = CalculateRGB(portion, startColor.Substring(4, 2), > endColor.Substring(4, 2)); > result = String.Format("{0:X2}{1:X2}{2:X2}{3:X2}", alpha, red, > green, blue); > } > return result; > } > > private String MakeUniqueLayerName(MgMap map, String layerName, String > themeName) > { > String desiredName = "_" + layerName + themeName; > String uniqueName = desiredName; > int index = 1; > > while (map.GetLayers().Contains(uniqueName)) > { > uniqueName = desiredName + index.ToString(); > index++; > } > return uniqueName; > } > private int CalculateRGB(double portion, String startRGB, String > endRGB) > { > double result = Int32.Parse(startRGB, NumberStyles.HexNumber) + > portion * (Int32.Parse(endRGB, NumberStyles.HexNumber) - > Int32.Parse(startRGB, NumberStyles.HexNumber)); > return (int)result; > } > String GetThemeXmlTemplatePath() > { > String xmlTemplatePath ="D:\\arearuletemplate.xml"; > return xmlTemplatePath; > } > --------------------------------------- > can u plz tell me the solution? > > Regards, > Padmini. > > > > > > -- > View this message in context: > http://n2.nabble.com/Thematic-Mapping-tp2244230p2244230.html > Sent from the MapGuide Users mailing list archive at Nabble.com. > > _______________________________________________ > mapguide-users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/mapguide-users > _______________________________________________ > mapguide-users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/mapguide-users > > -- View this message in context: http://n2.nabble.com/Thematic-Mapping-tp2244230p2249312.html Sent from the MapGuide Users mailing list archive at Nabble.com. _______________________________________________ mapguide-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapguide-users
