Beispiel #1
0
        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 };
        }
Beispiel #3
0
        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
            });
        }
Beispiel #4
0
        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") };
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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();
        }
Beispiel #9
0
        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
            });
        }
Beispiel #11
0
        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};
        }