private void FastestPath(BuildingRoutingDataRtgRoutingSourceEventArgs e) { featureSource.Open(); Feature feature = featureSource.GetFeatureById(e.LineShape.Id, new string[] { "CFCC" }); if (feature.ColumnValues["CFCC"].CompareTo("A4") < 0) { e.RouteSegment.Weight = e.RouteSegment.Weight / SpeedOfHighWay; } else { e.RouteSegment.Weight = e.RouteSegment.Weight / SpeedOfLocalRoad; } }
protected override Collection<Style> GetStylesCore(FeatureSource featureSource) { // here we generate CustomDotDensityStyle. double totalValue = 0; featureSource.Open(); int featureCount = featureSource.GetCount(); for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; if (double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue)) { totalValue += columnValue; } } featureSource.Close(); CustomDotDensityStyle dotDensityStyle = new CustomDotDensityStyle(); dotDensityStyle.ColumnName = SelectedColumns[0]; dotDensityStyle.PointToValueRatio = DotDensityValue / (totalValue / featureCount); dotDensityStyle.CustomPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.FromArgb(Opacity, Color), 4); return new Collection<Style>() { dotDensityStyle }; }
protected override Collection <Style> GetStylesCore(FeatureSource featureSource) { double totalValue = 0; featureSource.Open(); int featureCount = featureSource.GetCount(); for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue); totalValue += columnValue; } featureSource.Close(); CustomDotDensityStyle dotDensityStyle = new CustomDotDensityStyle(); dotDensityStyle.ColumnName = SelectedColumns[0]; dotDensityStyle.PointToValueRatio = DotDensityValue / (totalValue / featureCount); dotDensityStyle.CustomPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.FromArgb(Opacity, Color), 4); return(new Collection <Style>() { dotDensityStyle }); }
protected override Style GetStyleCore(FeatureSource featureSource) { double totalValue = 0; featureSource.Open(); int featureCount = featureSource.GetCount(); for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue); totalValue += columnValue; } featureSource.Close(); double pointToValueRatio = DotDensityValue / (totalValue / featureCount); CustomDotDensityStyle dotDensityStyle = new CustomDotDensityStyle(); dotDensityStyle.ColumnName = SelectedColumns[0]; dotDensityStyle.PointToValueRatio = pointToValueRatio; dotDensityStyle.CustomPointStyle = new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.FromArgb(Opacity, Color)), 4); return(dotDensityStyle); }
protected override Collection<Style> GetStylesCore(FeatureSource featureSource) { // here we generated a class break style and a text style. Collection<GeoColor> familyColors = GeoColor.GetColorsInQualityFamily(Color, EndColor, classBreakCount, ColorWheelDirection); featureSource.Open(); int featureCount = featureSource.GetCount(); double[] values = new double[featureCount]; for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; if (double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue)) { values[i] = columnValue; } } featureSource.Close(); ClassBreakStyle classBreakStyle = new ClassBreakStyle(SelectedColumns[0]) { BreakValueInclusion = BreakValueInclusion.IncludeValue }; double[] classBreakValues = GetClusterClassBreaks(values, ClassBreakCount - 1); for (int i = 0; i < classBreakValues.Length; i++) { ClassBreak classBreak = new ClassBreak(classBreakValues[i], AreaStyles.CreateSimpleAreaStyle(new GeoColor(this.Opacity, familyColors[i]), GeoColor.FromHtml("#f05133"), 1)); classBreakStyle.ClassBreaks.Add(classBreak); } return new Collection<Style>() { classBreakStyle, TextStyles.Country1("NAME") }; }
protected override Road GetRoadByIdCore(string roadId) { Feature feature = featureSource.GetFeatureById(roadId, ReturningColumnsType.NoColumns); LineBaseShape sourceShape = (LineBaseShape)feature.GetShape(); Collection <LineShape> lines = ConvertLineBaseShapeToLines(sourceShape); List <string> adjacentIDs = new List <string>(); foreach (LineShape line in lines) { Collection <Feature> features = featureSource.GetFeaturesInsideBoundingBox(line.GetBoundingBox(), ReturningColumnsType.NoColumns); foreach (Feature tempFeature in features) { BaseShape tempShape = tempFeature.GetShape(); if (feature.Id != tempFeature.Id && line.Intersects(tempShape)) { adjacentIDs.Add(tempFeature.Id); } } } //adjacentIDs.Sort(); PointShape center = sourceShape.GetCenterPoint(); float centerX = (float)center.X; float centerY = (float)center.Y; float length = (float)sourceShape.GetLength(GeographyUnit.Meter, DistanceUnit.Meter); Road road = new Road(roadId, RoadType.LocalRoad, length, adjacentIDs, centerX, centerY, roadId); return(road); }
protected override Style GetStyleCore(FeatureSource featureSource) { Collection <GeoColor> familyColors = GeoColor.GetColorsInQualityFamily(Color, EndColor, classBreakCount, ColorWheelDirection); featureSource.Open(); int featureCount = featureSource.GetCount(); double[] values = new double[featureCount]; for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue); values[i] = columnValue; } featureSource.Close(); ClassBreakStyle classBreakStyle = new ClassBreakStyle(SelectedColumns[0]) { BreakValueInclusion = BreakValueInclusion.IncludeValue }; double[] classBreakValues = GetClusterClassBreaks(values, ClassBreaksCount - 1); for (int i = 0; i < classBreakValues.Length; i++) { ClassBreak classBreak = new ClassBreak(classBreakValues[i], AreaStyles.CreateSimpleAreaStyle(new GeoColor(this.Opacity, familyColors[i]), GeoColor.FromHtml("#f05133"), 1)); classBreakStyle.ClassBreaks.Add(classBreak); } return(classBreakStyle); }
private void RenderMap() { winformsMap1.MapUnit = GeographyUnit.DecimalDegree; winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#e6e5d1")); winformsMap1.CurrentExtent = new RectangleShape(-97.7717794617797, 30.3120942308639, -97.7082647523071, 30.2667756273482); WorldMapKitWmsDesktopOverlay worldMapKitsOverlay = new WorldMapKitWmsDesktopOverlay(); winformsMap1.Overlays.Add(worldMapKitsOverlay); InMemoryFeatureLayer routingLayer = new InMemoryFeatureLayer(); featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp"); featureSource.Open(); Feature startRoad = featureSource.GetFeatureById(txtStartId.Text, ReturningColumnsType.NoColumns); featureSource.Close(); Feature startPoint = new Feature(startRoad.GetShape().GetCenterPoint().GetWellKnownBinary(), txtStartId.Text); routingLayer.InternalFeatures.Add(txtStartId.Text, startPoint); routingLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1; routingLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.FillSolidBrush = new GeoSolidBrush(GeoColor.FromArgb(100, GeoColor.StandardColors.Blue)); routingLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle.OuterPen.Color = GeoColor.StandardColors.Red; routingLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay routingOverlay = new LayerOverlay(); routingOverlay.Layers.Add("RoutingLayer", routingLayer); winformsMap1.Overlays.Add("RoutingOverlay", routingOverlay); InMemoryFeatureLayer routingExtentLayer = new InMemoryFeatureLayer(); routingExtentLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColor.SimpleColors.Green)); routingExtentLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; routingExtentLayer.InternalFeatures.Add(new Feature(new RectangleShape(-97.815409, 30.369949, -97.657999, 30.217922))); routingOverlay.Layers.Add("RoutingExtentLayer", routingExtentLayer); InMemoryFeatureLayer facilityLayer = new InMemoryFeatureLayer(); facilityLayer.Open(); facilityLayer.Columns.Add(new FeatureSourceColumn("NAME")); facilityLayer.Close(); facilityLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.Capital1; facilityLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; routingOverlay.Layers.Add("FacilityLayer", facilityLayer); winformsMap1.Refresh(); }
protected override RouteSegment GetRouteSegmentByFeatureIdCore(string roadId) { Feature feature = featureSource.GetFeatureById(roadId, ReturningColumnsType.NoColumns); LineBaseShape shape = feature.GetShape() as LineBaseShape; LineShape sourceShape = ConvertLineBaseShapeToLines(shape)[0]; sourceShape.Id = feature.Id; Collection <string> startIds = new Collection <string>(); Collection <string> endIds = new Collection <string>(); GetAdjacentFeataureIds(featureSource, sourceShape, startIds, endIds); PointShape startPoint = new PointShape(sourceShape.Vertices[0]); PointShape endPoint = new PointShape(sourceShape.Vertices[sourceShape.Vertices.Count - 1]); float length = (float)sourceShape.GetLength(GeographyUnit.Meter, DistanceUnit.Meter); RouteSegment road = new RouteSegment(feature.Id, 0, length, startPoint, startIds, endPoint, endIds); return(road); }
protected override Collection <Style> GetStylesCore(FeatureSource featureSource) { // here we generate a ValueCircle Style. double minValue = double.MaxValue; double maxValue = double.MinValue; featureSource.Open(); for (int i = 0; i < featureSource.GetCount(); i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; if (double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue)) { if (columnValue < minValue) { minValue = columnValue; } else if (columnValue > maxValue) { maxValue = columnValue; } } } featureSource.Close(); ValueCircleStyle valueCircleStyle = new ValueCircleStyle(); valueCircleStyle.ColumnName = SelectedColumns[0]; valueCircleStyle.DrawingRadiusRatio = radiusRatio; valueCircleStyle.MinValidValue = minValue; valueCircleStyle.MaxValidValue = maxValue; valueCircleStyle.MinCircleAreaInDefaultZoomLevel = 80; valueCircleStyle.MaxCircleAreaInDefaultZoomLevel = 10000; valueCircleStyle.InnerColor = GeoColor.FromArgb(this.Opacity, Color); valueCircleStyle.OuterColor = GeoColor.SimpleColors.White; return(new Collection <Style>() { valueCircleStyle }); }
private void btnRoute_Click(object sender, EventArgs e) { Algorithm algorithm = new AStarAlgorithm(); RoutingSource routingSource = new CustomRoutingSource(new ShapeFileFeatureSource(@"..\..\App_Data\Austinstreets.shp")); Collection <Road> pathIDs = algorithm.GetShortestPath(routingSource, txtStartId.Text, txtEndId.Text); Collection <Feature> features = new Collection <Feature>(); Dictionary <string, ShapeFileFeatureSource> featureSources = new Dictionary <string, ShapeFileFeatureSource>(); for (int i = 0; i < pathIDs.Count; i++) { FeatureSource featureSource = routingSource.GetFeatureSourceByroadId(pathIDs[i].Id); featureSource.Open(); features.Add(featureSource.GetFeatureById(routingSource.GetFeatureIdByroadId(pathIDs[i].Id).ToString(), ReturningColumnsType.NoColumns)); featureSource.Close(); } winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock(); try { InMemoryFeatureLayer inmemoryLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; inmemoryLayer.InternalFeatures.Clear(); foreach (Feature feature in features) { inmemoryLayer.InternalFeatures.Add(feature); } inmemoryLayer.Open(); winformsMap1.CurrentExtent = inmemoryLayer.GetBoundingBox(); inmemoryLayer.Close(); } finally { winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock(); } winformsMap1.Refresh(); }
protected override Collection <Style> GetStylesCore(FeatureSource featureSource) { // here we generated a class break style and a text style. Collection <GeoColor> familyColors = GeoColor.GetColorsInQualityFamily(Color, EndColor, classBreakCount, ColorWheelDirection); featureSource.Open(); int featureCount = featureSource.GetCount(); double[] values = new double[featureCount]; for (int i = 0; i < featureCount; i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; if (double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue)) { values[i] = columnValue; } } featureSource.Close(); ClassBreakStyle classBreakStyle = new ClassBreakStyle(SelectedColumns[0]) { BreakValueInclusion = BreakValueInclusion.IncludeValue }; double[] classBreakValues = GetClusterClassBreaks(values, ClassBreakCount - 1); for (int i = 0; i < classBreakValues.Length; i++) { ClassBreak classBreak = new ClassBreak(classBreakValues[i], AreaStyles.CreateSimpleAreaStyle(new GeoColor(this.Opacity, familyColors[i]), GeoColor.FromHtml("#f05133"), 1)); classBreakStyle.ClassBreaks.Add(classBreak); } return(new Collection <Style>() { classBreakStyle, TextStyles.CreateSimpleTextStyle("NAME", "Arial", 8, DrawingFontStyles.Bold, GeoColor.StandardColors.Black, GeoColor.StandardColors.White, 3) }); }
protected override Collection<Style> GetStylesCore(FeatureSource featureSource) { // here we generate a ValueCircle Style. double minValue = double.MaxValue; double maxValue = double.MinValue; featureSource.Open(); for (int i = 0; i < featureSource.GetCount(); i++) { Feature feature = featureSource.GetFeatureById((i + 1).ToString(CultureInfo.InvariantCulture), SelectedColumns); double columnValue; if (double.TryParse(feature.ColumnValues[SelectedColumns[0]], out columnValue)) { if (columnValue < minValue) { minValue = columnValue; } else if (columnValue > maxValue) { maxValue = columnValue; } } } featureSource.Close(); ValueCircleStyle valueCircleStyle = new ValueCircleStyle(); valueCircleStyle.ColumnName = SelectedColumns[0]; valueCircleStyle.DrawingRadiusRatio = radiusRatio; valueCircleStyle.MinValidValue = minValue; valueCircleStyle.MaxValidValue = maxValue; valueCircleStyle.MinCircleAreaInDefaultZoomLevel = 80; valueCircleStyle.MaxCircleAreaInDefaultZoomLevel = 10000; valueCircleStyle.InnerColor = GeoColor.FromArgb(this.Opacity, Color); valueCircleStyle.OuterColor = GeoColor.SimpleColors.White; return new Collection<Style>(){valueCircleStyle}; }