Exemple #1
0
        protected override BaseShape CreateAccessibleAreaCore()
        {
            string rtgFilePathName = Path.ChangeExtension(StreetShapeFilePathName, ".rtg");

            RtgRoutingSource routingSource = new RtgRoutingSource(rtgFilePathName);
            FeatureSource    featureSource = new ShapeFileFeatureSource(StreetShapeFilePathName);
            RoutingEngine    routingEngine = new RoutingEngine(routingSource, featureSource);

            if (!featureSource.IsOpen)
            {
                featureSource.Open();
            }
            ManagedProj4Projection proj = new ManagedProj4Projection();

            proj.InternalProjectionParametersString = ManagedProj4Projection.GetBingMapParametersString();
            proj.ExternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);

            proj.Open();
            StartLocation = proj.ConvertToExternalProjection(StartLocation) as PointShape;

            Feature      feature      = featureSource.GetFeaturesNearestTo(StartLocation, GeographyUnit, 1, ReturningColumnsType.NoColumns)[0];
            PolygonShape polygonShape = routingEngine.GenerateServiceArea(feature.Id, new TimeSpan(0, DrivingTimeInMinutes, 0), 100, GeographyUnit.Feet);

            polygonShape = proj.ConvertToInternalProjection(polygonShape) as PolygonShape;

            proj.Close();

            return(polygonShape);
        }
Exemple #2
0
        private void btnRaiseEvent_Click(object sender, EventArgs e)
        {
            cancel                 = false;
            gbProgress.Visible     = true;
            processedCount         = 0;
            pgBuildingData.Minimum = 0;
            pgBuildingData.Value   = 0;

            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));

            featureSource.Open();
            pgBuildingData.Maximum = featureSource.GetCount();
            lbTotalCount.Text      = pgBuildingData.Maximum.ToString(CultureInfo.InvariantCulture);
            featureSource.Close();

            RtgRoutingSource.GenerateRoutingData(Path.Combine(rootPath, "BuildingRoutingDataEvent.rtg"), featureSource, BuildRoutingDataMode.Rebuild, "DallasCounty-4326.shp");
            if (cancel)
            {
                MessageBox.Show("Building routing data has been cancelled!");
            }
            else
            {
                MessageBox.Show("Finish building routing data!");
            }
            gbProgress.Visible = false;
        }
Exemple #3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            mapView = new MapView(View.Frame);
            View.Add(mapView);
            ComposeTableControl();

            mapView.MapUnit       = GeographyUnit.Meter;
            mapView.ZoomLevelSet  = ThinkGeoCloudMapsOverlay.GetZoomLevelSet();
            mapView.MapSingleTap += MapViewMapSingleTap;

            ThinkGeoCloudMapsOverlay thinkGeoCloudMapsOverlay = new ThinkGeoCloudMapsOverlay();

            mapView.Overlays.Add(thinkGeoCloudMapsOverlay);

            layerOverlay = new LayerOverlay();
            routingLayer = new RoutingLayer();
            layerOverlay.Layers.Add(routingLayer);
            mapView.Overlays.Add(layerOverlay);

            string shapeFilePath = Path.Combine("AppData", "DallasCounty-3857.shp");
            string rtgPath       = Path.Combine("AppData", "DallasCounty-3857.rtg");
            var    routingSource = new RtgRoutingSource(rtgPath);
            var    featureSource = new ShapeFileFeatureSource(shapeFilePath);

            routingEngine = new RoutingEngine(routingSource, featureSource);
            routingEngine.GeographyUnit        = GeographyUnit.Meter;
            routingEngine.SearchRadiusInMeters = 200;

            mapView.CurrentExtent = new RectangleShape(-10781100.2970769, 3875007.18710502, -10767407.8727504, 3854947.78546675);
            mapView.Refresh();
        }
Exemple #4
0
        private void Route()
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);

            RoutingLayer           routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];
            Collection <LineShape> paths        = new Collection <LineShape>();

            if (cbxAddStop.Checked)
            {
                paths.Add(routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.StopPoints[0]).Route);
                paths.Add(routingEngine.GetRoute(routingLayer.StopPoints[0], routingLayer.EndPoint).Route);
            }
            else
            {
                paths.Add(routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint).Route);
            }

            RoutingLayer inmemoryLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            inmemoryLayer.Routes.Clear();
            foreach (LineShape item in paths)
            {
                inmemoryLayer.Routes.Add(item);
            }
        }
Exemple #5
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            RtgRoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg");
            RoutingEngine    routingEngine = new RoutingEngine(routingSource, featureSource);

            routingEngine.GeneratingServiceArea += new EventHandler <GeneratingServiceAreaRoutingEngineEventArgs>(routingEngine_GeneratingServiceArea);
            float averageSpeed   = float.Parse(txtAverageSpeed.Text);
            int   drivingMinutes = int.Parse(txtDrivingMinutes.Text);

            PolygonShape         polygonShape = routingEngine.GenerateServiceArea(txtStartId.Text, new TimeSpan(0, drivingMinutes, 0), averageSpeed);
            InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.InternalFeatures.Remove("ServiceArea");
            if (polygonShape.Validate(ShapeValidationMode.Simple).IsValid)
            {
                routingLayer.InternalFeatures.Add("ServiceArea", new Feature(polygonShape));
                routingLayer.Open();
                winformsMap1.CurrentExtent = routingLayer.GetBoundingBox();
                routingLayer.Close();
            }

            winformsMap1.Overlays["RoutingOverlay"].Lock.IsDirty = true;

            winformsMap1.Refresh();
        }
Exemple #6
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp");
            RoutingSource          routingSource = new RtgRoutingSource(@"..\..\SampleData\routeDataForFastest.rtg");
            RoutingEngine          routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult          routingResult = routingEngine.GetShortestPath(txtStartId.Text, txtEndId.Text);

            InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            try
            {
                routingLayer.InternalFeatures.Clear();
                foreach (Feature feature in routingResult.Features)
                {
                    routingLayer.InternalFeatures.Add(feature);
                }
            }
            finally
            {
                winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            }

            winformsMap1.Refresh();
        }
Exemple #7
0
        private void InitalizeMap()
        {
            mapView.MapUnit      = GeographyUnit.Meter;
            mapView.ZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet();
            mapView.SingleTap   += MapView_SingleTap;

            // Please input your ThinkGeo Cloud Client ID / Client Secret to enable the background map.
            ThinkGeoCloudRasterMapsOverlay baseOverlay = new ThinkGeoCloudRasterMapsOverlay("ThinkGeo Cloud Client ID", "ThinkGeo Cloud Client Secret");

            mapView.Overlays.Add(baseOverlay);

            layerOverlay = new LayerOverlay();
            routingLayer = new RoutingLayer();
            layerOverlay.Layers.Add(routingLayer);
            mapView.Overlays.Add(layerOverlay);

            var routingSource = new RtgRoutingSource(DataManager.GetDataPath("DallasCounty-3857.rtg"));
            var featureSource = new ShapeFileFeatureSource(DataManager.GetDataPath("DallasCounty-3857.shp"));

            routingEngine = new RoutingEngine(routingSource, featureSource);
            routingEngine.GeographyUnit        = GeographyUnit.Meter;
            routingEngine.SearchRadiusInMeters = 100;

            mapView.CurrentExtent = new RectangleShape(-10781100.2970769, 3875007.18710502, -10767407.8727504, 3854947.78546675);
        }
Exemple #8
0
        private void RenderMap()
        {
            winformsMap1.MapUnit = GeographyUnit.DecimalDegree;
            winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#e6e5d1"));
            winformsMap1.CurrentExtent = new RectangleShape(-97.763384, 30.299707, -97.712382, 30.259309);

            ShapeFileFeatureLayer austinstreetsLayer = new ShapeFileFeatureLayer(@"..\..\SampleData\Austinstreets.shp");

            austinstreetsLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(GetRoadStyle());
            austinstreetsLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            LayerOverlay austinstreetsOverlay = new LayerOverlay();

            austinstreetsOverlay.Layers.Add("AustinstreetsLayer", austinstreetsLayer);
            winformsMap1.Overlays.Add("AustinstreetsOverlay", austinstreetsOverlay);

            // The layer for rendering routing result
            InMemoryFeatureLayer routingLayer = new InMemoryFeatureLayer();

            routingLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle.OuterPen = new GeoPen(GeoColor.FromArgb(100, GeoColor.StandardColors.Purple), 5);
            routingLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel       = ApplyUntilZoomLevel.Level20;
            LayerOverlay routingOverlay = new LayerOverlay();

            routingOverlay.Layers.Add("RoutingLayer", routingLayer);
            winformsMap1.Overlays.Add("RoutingOverlay", routingOverlay);

            // The layer for rendering start and end points
            InMemoryFeatureLayer stopLayer = new InMemoryFeatureLayer();

            stopLayer.Open();
            stopLayer.Columns.Add(new FeatureSourceColumn("Order"));
            stopLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = new PointStyle(PointSymbolType.Square, new GeoSolidBrush(GeoColor.SimpleColors.LightGreen), new GeoPen(GeoColor.SimpleColors.Black), 12);
            stopLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle  = TextStyles.Urban1("Order");
            stopLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.XOffsetInPixel = -4;
            stopLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel             = ApplyUntilZoomLevel.Level20;
            LayerOverlay stopOverlay = new LayerOverlay();

            stopOverlay.Layers.Add("StopLayer", stopLayer);
            winformsMap1.Overlays.Add("StopOverlay", stopOverlay);

            // Add start and end points to the layer
            RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg");

            routingSource.Open();
            austinstreetsLayer.Open();
            Feature startRoad  = austinstreetsLayer.FeatureSource.GetFeatureById(txtStartId.Text, ReturningColumnsType.NoColumns);
            Feature startPoint = new Feature(startRoad.GetShape().GetCenterPoint().GetWellKnownBinary());

            startPoint.ColumnValues["Order"] = "1";
            stopLayer.InternalFeatures.Add(startPoint);
            Feature endRoad  = austinstreetsLayer.FeatureSource.GetFeatureById(txtEndId.Text, ReturningColumnsType.NoColumns);
            Feature endPoint = new Feature(endRoad.GetShape().GetCenterPoint().GetWellKnownBinary());

            endPoint.ColumnValues["Order"] = "2";
            stopLayer.InternalFeatures.Add(endPoint);
            routingSource.Close();
            austinstreetsLayer.Close();

            winformsMap1.Refresh();
        }
Exemple #9
0
        private void ShowTheShortestPath(RoutingLayer routingLayer)
        {
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasWithOneWayRoad.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);
        }
Exemple #10
0
 private void btnBuild_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("This operation will take a while, click Ok to continue and click Canel to quit.", "Build Routing Data", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
     {
         featureSource = GetFeatureSource();
         RtgRoutingSource.GenerateRoutingData(Path.Combine(rootPath, txtFilename.Text), featureSource, BuildRoutingDataMode.Rebuild, GeographyUnit.DecimalDegree, DistanceUnit.Meter);
         MessageBox.Show("Finish building routing data!");
     }
 }
Exemple #11
0
        private void btnGenerateRoadData_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Finish building routing data!");
            return;

            RtgRoutingSource.BuildingRoadData += new EventHandler <BuildingRoutingDataRtgRoutingSourceEventArgs>(RtgRoutingSource_BuildingRoadData);
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp");

            RtgRoutingSource.GenerateRoutingData(@"..\..\SampleData\routeDataForFastest.rtg", featureSource, "Austinstreets.shp");
        }
Exemple #12
0
        private void UserControl_Load(object sender, EventArgs e)
        {
            RenderMap();

            featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            featureSource.Open();
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "HighwayFirst.rtg"));

            routingEngine = new RoutingEngine(routingSource, featureSource);
            routingEngine.RoutingAlgorithm.FindingRoute += new EventHandler <FindingRouteRoutingAlgorithmEventArgs>(Algorithm_FindingPath);

            this.cbmPrioritiy.Text = "On Foot";
        }
Exemple #13
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            RoutingSource          routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));

            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingLayer  routingLayer  = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];
            RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Exemple #14
0
        void cbmAlgorithm_SelectedIndexChanged(object sender, EventArgs e)
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, GetAlgorithm(), featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Exemple #15
0
        private void btnGenerateRoadData_Click(object sender, EventArgs e)
        {
            MultipleShapeFileFeatureLayer.BuildIndex(@"..\..\SampleData\testdata?.shp", BuildIndexMode.DoNotRebuild);
            MultipleShapeFileFeatureSource featureSource      = new MultipleShapeFileFeatureSource(@"..\..\SampleData\testdata?.shp", @"..\..\SampleData\testdata?.midx");
            Collection <string>            shapePathFileNames = featureSource.GetShapePathFileNames();
            string fileNames = String.Empty;

            foreach (string fileName in shapePathFileNames)
            {
                fileNames += Path.GetFileName(fileName) + ",";
            }
            RtgRoutingSource.GenerateRoutingData(@"..\..\SampleData\testdata.rtg", featureSource, fileNames.TrimEnd(','), BuildRoutingDataMode.DoNotRebuild);
            MessageBox.Show("Finish building routing data!");
        }
Exemple #16
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            ShowTurnByTurnDirections(routingResult.RouteSegments, routingResult.Features);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Exemple #17
0
        private void RenderPathBetweenPoints()
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp");
            RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg");
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);

            RoutingResult        routingResult = null;
            InMemoryFeatureLayer stopLayer     = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["StopOverlay"]).Layers["StopLayer"];

            if (stopLayer.InternalFeatures.Count > 2)
            {
                string startId = stopLayer.InternalFeatures[0].Id;
                string stopId  = stopLayer.InternalFeatures[1].Id;
                string endId   = stopLayer.InternalFeatures[2].Id;
                routingResult = routingEngine.GetRoute(startId, stopId);
                RoutingResult secondRoutingResult = routingEngine.GetRoute(stopId, endId);
                foreach (Feature item in secondRoutingResult.Features)
                {
                    routingResult.Features.Add(item);
                }
            }
            else
            {
                routingResult = routingEngine.GetRoute("4716", "9638");
            }
            //winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            //try
            //{
            InMemoryFeatureLayer inmemoryLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            inmemoryLayer.InternalFeatures.Clear();

            foreach (Feature feature in routingResult.Features)
            {
                inmemoryLayer.InternalFeatures.Add(feature);
            }
            //}
            //finally
            //{
            //    winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            //}
            winformsMap1.Overlays["RoutingOverlay"].Lock.IsDirty = true;
            winformsMap1.Refresh();
        }
Exemple #18
0
        private void UserControl_Load(object sender, EventArgs e)
        {
            featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            allowArea     = new PolygonShape(txtAvoidWkt.Text);
            featureSource.Open();
            Collection <Feature> features = featureSource.SpatialQuery(allowArea, QueryType.Within, ReturningColumnsType.NoColumns);

            featureSource.Close();
            allowFeatureIds = new Collection <string>();
            foreach (Feature item in features)
            {
                allowFeatureIds.Add(item.Id);
            }
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));

            routingEngine = new RoutingEngine(routingSource, new AStarRoutingAlgorithm(), featureSource);

            RenderMap();
        }
Exemple #19
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\AustinStreetFromOleDb.rtg");
            RoutingEngine routingEngine = new RoutingEngine(routingSource, new DijkstraRoutingAlgorithm(), featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            try
            {
                routingLayer.Routes.Clear();
                routingLayer.Routes.Add(routingResult.Route);
            }
            finally
            {
                winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            }

            winformsMap1.Refresh();
        }
Exemple #20
0
        private void btnGetInformation_Click(object sender, EventArgs e)
        {
            ShapeFileFeatureLayer dallasStreetsLayer = new ShapeFileFeatureLayer(Path.Combine(rootPath, "DallasCounty-4326.shp"));

            dallasStreetsLayer.Open();

            RtgRoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.rtg"));

            routingSource.ReadEndPoints = true;
            routingSource.Open();
            RouteSegment road = routingSource.GetRouteSegmentByFeatureId(txtRoadId.Text);

            // render routeSegment information
            RenderRoadInformation(dallasStreetsLayer, road);
            // render adjacent routeSegments information
            RenderAdjacentRoadsInformation(dallasStreetsLayer, road);

            dallasStreetsLayer.Close();
            routingSource.Close();
            winformsMap1.Refresh(new Overlay[] { winformsMap1.Overlays["currentRoadOverlay"], winformsMap1.Overlays["adjacentRoadsOverlay"] });
        }
Exemple #21
0
        private void Route()
        {
            RtgRoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            FeatureSource    featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingEngine    routingEngine = new RoutingEngine(routingSource, featureSource);

            float                averageSpeed   = float.Parse(txtAverageSpeed.Text);
            int                  drivingMinutes = int.Parse(txtDrivingMinutes.Text);
            SpeedUnit            speedUnit      = GetSpeedUnit();
            PolygonShape         polygonShape   = routingEngine.GenerateServiceArea(txtStartId.Text, new TimeSpan(0, drivingMinutes, 0), averageSpeed, speedUnit);
            InMemoryFeatureLayer routingLayer   = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.InternalFeatures.Remove("ServiceArea");
            if (polygonShape.Validate(ShapeValidationMode.Simple).IsValid)
            {
                routingLayer.InternalFeatures.Add("ServiceArea", new Feature(polygonShape));
                routingLayer.Open();
                winformsMap1.CurrentExtent = routingLayer.GetBoundingBox();
                routingLayer.Close();
            }

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Exemple #22
0
        private void AddOverlays(Map map)
        {
            // Background Overlay
            WorldStreetsAndImageryOverlay worldMapKitRoadOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Road");

            worldMapKitRoadOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator;
            worldMapKitRoadOverlay.MapType    = WorldStreetsAndImageryMapType.Road;
            map.CustomOverlays.Add(worldMapKitRoadOverlay);

            WorldStreetsAndImageryOverlay worldMapKitAerialOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Aerial");

            worldMapKitAerialOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator;
            worldMapKitAerialOverlay.MapType    = WorldStreetsAndImageryMapType.Aerial;
            map.CustomOverlays.Add(worldMapKitAerialOverlay);

            WorldStreetsAndImageryOverlay worldMapKitAerialWithLabelsOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Aerial With Labels");

            worldMapKitAerialWithLabelsOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator;
            worldMapKitAerialWithLabelsOverlay.MapType    = WorldStreetsAndImageryMapType.AerialWithLabels;
            map.CustomOverlays.Add(worldMapKitAerialWithLabelsOverlay);

            OpenStreetMapOverlay openStreetMapOverlay = new OpenStreetMapOverlay("Open Street Map");

            map.CustomOverlays.Add(openStreetMapOverlay);

            LayerOverlay poisOverlay = new LayerOverlay("PoisOverlay");

            poisOverlay.IsBaseOverlay = false;
            poisOverlay.IsVisibleInOverlaySwitcher = false;
            map.CustomOverlays.Add(poisOverlay);

            // POI Overlay
            Proj4Projection proj4 = new Proj4Projection();

            proj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
            proj4.ExternalProjectionParametersString = Proj4Projection.GetSphericalMercatorParametersString();
            proj4.Open();

            ShapeFileFeatureLayer hotelsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["HotelsShapeFilePathName"]), GeoFileReadWriteMode.Read);

            hotelsLayer.Name         = Resource.Hotels;
            hotelsLayer.Transparency = 120f;
            hotelsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle   = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/Hotel.png")));
            hotelsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            hotelsLayer.FeatureSource.Projection = proj4;
            poisOverlay.Layers.Add(hotelsLayer.Name, hotelsLayer);

            ShapeFileFeatureLayer medicalFacilitesLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["MedicalFacilitiesShapeFilePathName"]), GeoFileReadWriteMode.Read);

            medicalFacilitesLayer.Name         = Resource.MedicalFacilites;
            medicalFacilitesLayer.Transparency = 120f;
            medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle   = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/DrugStore.png")));
            medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            medicalFacilitesLayer.FeatureSource.Projection = proj4;
            poisOverlay.Layers.Add(medicalFacilitesLayer.Name, medicalFacilitesLayer);

            ShapeFileFeatureLayer publicFacilitesLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["PublicFacilitiesShapeFilePathName"]), GeoFileReadWriteMode.Read);

            publicFacilitesLayer.Name         = Resource.PublicFacilites;
            publicFacilitesLayer.Transparency = 120f;
            publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle   = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/public_facility.png")));
            publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            publicFacilitesLayer.FeatureSource.Projection = proj4;
            poisOverlay.Layers.Add(publicFacilitesLayer.Name, publicFacilitesLayer);

            ShapeFileFeatureLayer restaurantsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["RestaurantsShapeFilePathName"]), GeoFileReadWriteMode.Read);

            restaurantsLayer.Name         = Resource.Restaurants;
            restaurantsLayer.Transparency = 120f;
            restaurantsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle   = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/restaurant.png")));
            restaurantsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            restaurantsLayer.FeatureSource.Projection = proj4;
            poisOverlay.Layers.Add(restaurantsLayer.Name, restaurantsLayer);

            ShapeFileFeatureLayer schoolsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["SchoolsShapeFilePathName"]), GeoFileReadWriteMode.Read);

            schoolsLayer.Name         = Resource.Schools;
            schoolsLayer.Transparency = 120f;
            schoolsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle   = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/school.png")));
            schoolsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            schoolsLayer.FeatureSource.Projection = proj4;
            poisOverlay.Layers.Add(schoolsLayer.Name, schoolsLayer);

            // Restrict area Overlay
            ShapeFileFeatureLayer restrictedLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["RestrictedShapeFilePathName"]), GeoFileReadWriteMode.Read);
            AreaStyle             extentStyle     = new AreaStyle();

            extentStyle.CustomAreaStyles.Add(new AreaStyle(new GeoSolidBrush(GeoColor.SimpleColors.Transparent))
            {
                OutlinePen = new GeoPen(GeoColor.SimpleColors.White, 5.5f)
            });
            extentStyle.CustomAreaStyles.Add(new AreaStyle(new GeoSolidBrush(GeoColor.SimpleColors.Transparent))
            {
                OutlinePen = new GeoPen(GeoColor.SimpleColors.Red, 1.5f)
                {
                    DashStyle = LineDashStyle.Dash
                }
            });
            restrictedLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = extentStyle;
            restrictedLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            restrictedLayer.FeatureSource.Projection = proj4;

            LayerOverlay restrictOverlay = new LayerOverlay("RestrictOverlay");

            restrictOverlay.IsBaseOverlay = false;
            restrictOverlay.IsVisibleInOverlaySwitcher = false;
            restrictOverlay.Layers.Add("RestrictLayer", restrictedLayer);
            map.CustomOverlays.Add(restrictOverlay);

            // Queried Service Overlay
            InMemoryFeatureLayer serviceAreaLayer    = new InMemoryFeatureLayer();
            GeoColor             serviceAreaGeoColor = new GeoColor(120, GeoColor.FromHtml("#1749c9"));

            serviceAreaLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyles.CreateSimpleAreaStyle(serviceAreaGeoColor, GeoColor.FromHtml("#fefec1"), 2, LineDashStyle.Solid);
            serviceAreaLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            InMemoryFeatureLayer highlightFeatureLayer = new InMemoryFeatureLayer();

            highlightFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            LayerOverlay queriedOverlay = new LayerOverlay("QueriedOverlay");

            queriedOverlay.IsBaseOverlay = false;
            queriedOverlay.IsVisibleInOverlaySwitcher = false;
            queriedOverlay.TileType = TileType.SingleTile;
            queriedOverlay.Layers.Add("highlightFeatureLayer", highlightFeatureLayer);
            queriedOverlay.Layers.Add("serviceArea", serviceAreaLayer);
            map.CustomOverlays.Add(queriedOverlay);

            // Marker Overlay
            map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("/Content/Images/selectedHalo.png")
            {
                ImageOffsetX = -16, ImageOffsetY = -16
            };
            map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderWidth = 1;
            map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderColor = GeoColor.StandardColors.Gray;
            map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.AutoSize    = true;
            map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            map.MarkerOverlay.IsVisibleInOverlaySwitcher = false;

            // Drawn Point
            InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("DrawnPointOverlay");

            markerOverlay.FeatureSource.InternalFeatures.Add(new Feature(new PointShape(-10776838.0796536, 3912346.50475619)));     // Add a initial point for query
            markerOverlay.IsVisibleInOverlaySwitcher = false;
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("/Content/Images/drawPoint.png")
            {
                ImageOffsetX = -16, ImageOffsetY = -32
            };
            markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            map.CustomOverlays.Add(markerOverlay);

            // Legend Layer
            LegendAdornmentLayer legendlayer = new LegendAdornmentLayer {
                Height = 135, Location = AdornmentLocation.LowerRight
            };

            map.AdornmentOverlay.Layers.Add(legendlayer);

            LegendItem hotelsLayeritem = new LegendItem();

            hotelsLayeritem.ImageStyle = hotelsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle;
            hotelsLayeritem.TextStyle  = WorldStreetsTextStyles.GeneralPurpose(Resource.Hotels, 10);
            legendlayer.LegendItems.Add("hotels", hotelsLayeritem);

            LegendItem medicalFacilitesLayeritem = new LegendItem();

            medicalFacilitesLayeritem.ImageStyle = medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle;
            hotelsLayeritem.TextStyle            = WorldStreetsTextStyles.GeneralPurpose(Resource.MedicalFacilites, 10);

            legendlayer.LegendItems.Add("medicalFacilites", medicalFacilitesLayeritem);

            LegendItem publicFacilitesLayeritem = new LegendItem();

            publicFacilitesLayeritem.ImageStyle = publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle;
            hotelsLayeritem.TextStyle           = WorldStreetsTextStyles.GeneralPurpose(Resource.PublicFacilites, 10);

            legendlayer.LegendItems.Add("publicFacilites", publicFacilitesLayeritem);

            LegendItem restaurantsLayeritem = new LegendItem();

            restaurantsLayeritem.ImageStyle = restaurantsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle;
            hotelsLayeritem.TextStyle       = WorldStreetsTextStyles.GeneralPurpose(Resource.Restaurants, 10);

            legendlayer.LegendItems.Add("restaurants", restaurantsLayeritem);

            LegendItem schoolsLayeritem = new LegendItem();

            schoolsLayeritem.ImageStyle = schoolsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle;
            hotelsLayeritem.TextStyle   = WorldStreetsTextStyles.GeneralPurpose(Resource.Schools, 10);

            legendlayer.LegendItems.Add("schools", schoolsLayeritem);

            // Scale bar layer
            ScaleBarAdornmentLayer scaleBarAdormentLayer = new ScaleBarAdornmentLayer();

            scaleBarAdormentLayer.Location       = AdornmentLocation.LowerLeft;
            scaleBarAdormentLayer.XOffsetInPixel = 10;
            map.AdornmentOverlay.Layers.Add("ScaleBar", scaleBarAdormentLayer);
            map.AdornmentOverlay.IsVisibleInOverlaySwitcher = false;

            // Create the Routine Engine.
            string streetShapeFilePathName = Server.MapPath(ConfigurationManager.AppSettings["StreetShapeFilePathName"]);
            string streetRtgFilePathName   = Path.ChangeExtension(streetShapeFilePathName, ".rtg");

            RtgRoutingSource routingSource = new RtgRoutingSource(streetRtgFilePathName);
            FeatureSource    featureSource = new ShapeFileFeatureSource(streetShapeFilePathName);

            featureSource.Projection    = proj4;
            routingEngine               = new RoutingEngine(routingSource, featureSource);
            routingEngine.GeographyUnit = GeographyUnit.Meter;
        }