protected override void BuildIndexCore(FeatureLayer featureLayer)
        {
            lock (layersInBuildingIndex)
            {
                if (!layersInBuildingIndex.Contains(featureLayer))
                {
                    layersInBuildingIndex.Add(featureLayer);
                }
            }

            if (layersInBuildingIndex.Count > 0)
            {
                ShapeFileFeatureSource.BuildingIndex -= ShapeFileFeatureSource_BuildingIndex;
                ShapeFileFeatureSource.BuildingIndex += ShapeFileFeatureSource_BuildingIndex;
            }
            var uri = LayerPlugin.GetUri(featureLayer);

            if (uri != null)
            {
                ShapeFileFeatureLayer.BuildIndexFile(uri.LocalPath, BuildIndexMode.DoNotRebuild);

                lock (layersInBuildingIndex)
                {
                    if (layersInBuildingIndex.Contains(featureLayer))
                    {
                        layersInBuildingIndex.Remove(featureLayer);
                    }

                    if (layersInBuildingIndex.Count == 0)
                    {
                        ShapeFileFeatureSource.BuildingIndex -= new EventHandler <BuildingIndexShapeFileFeatureSourceEventArgs>(ShapeFileFeatureSource_BuildingIndex);
                    }
                }
            }
        }
        protected override void DrawCore(WinformsMap winformsMap)
        {
            LayerOverlay layerOverlay = null;

            if (!LoadingFromShapeFile)
            {
                layerOverlay = new LayerOverlay();

                foreach (Layer layer in Layers)
                {
                    layerOverlay.Layers.Add(layer);
                }
            }
            else
            {
                ShapeFileFeatureLayer.BuildIndexFile(ShapePathFileName, BuildIndexMode.DoNotRebuild);
                ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer(ShapePathFileName);
                shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(102, 0, 0, 255), GeoColor.FromArgb(255, 0, 0, 255), 2);
                shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle    = LineStyles.CreateSimpleLineStyle(GeoColor.FromArgb(102, 0, 0, 255), 2, true);
                shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle   = PointStyles.CreateSimpleCircleStyle(GeoColor.FromArgb(102, 0, 0, 255), 12);
                shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

                layerOverlay = new LayerOverlay();
                layerOverlay.Layers.Add(shapeFileFeatureLayer);
                layerOverlay.Layers.Add(OutputFeatureLayer);
                winformsMap.CurrentExtent = GetBoundingBox();
            }

            winformsMap.Overlays.Clear();
            winformsMap.Overlays.Add(layerOverlay);
            winformsMap.Refresh();
        }
Пример #3
0
        public static void BuildIndex(ShapeFileFeatureLayer layer)
        {
            string sourceIdsPath = Path.ChangeExtension(layer.IndexPathFilename, ".ids");

            if (layer.RequireIndex && File.Exists(layer.IndexPathFilename) && File.Exists(sourceIdsPath))
            {
                lock (layer)
                {
                    layer.Close();
                    layer.RequireIndex = false;
                    layer.Open();
                }
            }

            StatusBar.GetInstance().Cancelled += new EventHandler <CancelEventArgs>(BuildIndexFileDialog_Cancelled);
            ShapeFileFeatureSource.BuildingIndex += new EventHandler <BuildingIndexShapeFileFeatureSourceEventArgs>(ShapeFileFeatureSource_BuildingIndex);

            try
            {
                if (GisEditor.ActiveMap != null)
                {
                    var closingOverlays = GisEditor.ActiveMap.Overlays.OfType <LayerOverlay>()
                                          .Where(tmpOverlay => tmpOverlay.Layers.OfType <ShapeFileFeatureLayer>()
                                                 .Select(tmpLayer => tmpLayer.ShapePathFilename)
                                                 .Contains(layer.ShapePathFilename));

                    Action action = new Action(() =>
                    {
                        foreach (var closingOverlay in closingOverlays)
                        {
                            closingOverlay.Close();
                        }
                    });

                    if (Application.Current == null)
                    {
                        action();
                    }
                    else
                    {
                        Application.Current.Dispatcher.BeginInvoke(action);
                    }
                }

                ShapeFileFeatureLayer.BuildIndexFile(layer.ShapePathFilename, BuildIndexMode.Rebuild);
            }
            finally
            {
                StatusBar.GetInstance().Cancelled -= new EventHandler <CancelEventArgs>(BuildIndexFileDialog_Cancelled);
                ShapeFileFeatureSource.BuildingIndex -= new EventHandler <BuildingIndexShapeFileFeatureSourceEventArgs>(ShapeFileFeatureSource_BuildingIndex);

                lock (layer)
                {
                    layer.Close();
                    layer.RequireIndex = true;
                    layer.Open();
                }
            }
        }
Пример #4
0
 private void BuildIndex()
 {
     if (files != null)
     {
         for (int i = 0; i < files.Count; i++)
         {
             ShapeFileFeatureLayer.BuildIndexFile(files[i], BuildIndexMode.Rebuild);
             progressBar1.PerformStep();
         }
     }
 }
Пример #5
0
        private void LoadStreetData()
        {
            winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromArgb(255, 233, 232, 214));

            ShapeFileFeatureLayer ParksShapeLayer = new ShapeFileFeatureLayer(@"..\..\Data\parks.shp");

            ShapeFileFeatureLayer.BuildIndexFile(@"..\..\Data\parks.shp", BuildIndexMode.DoNotRebuild);

            ParksShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            ParksShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyles.Park1;

            ShapeFileFeatureLayer ParksLabelLayer = new ShapeFileFeatureLayer(@"..\..\Data\parks.shp");

            ParksLabelLayer.RequireIndex = false;
            ParksLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle    = TextStyles.CreateSimpleTextStyle("Name", "Arial", 10, DrawingFontStyles.Bold, GeoColor.StandardColors.SeaGreen, GeoColor.StandardColors.White, 2);
            ParksLabelLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            ShapeFileFeatureLayer StreetsShapeLayer = new ShapeFileFeatureLayer(@"..\..\Data\streets.shp");

            ShapeFileFeatureLayer.BuildIndexFile(@"..\..\Data\streets.shp", BuildIndexMode.DoNotRebuild);

            StreetsShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            ValueStyle valueStyle = new ValueStyle();

            valueStyle.ColumnName = "Type";
            valueStyle.ValueItems.Add(new ValueItem("A", LineStyles.LocalRoad2));
            valueStyle.ValueItems.Add(new ValueItem("M", LineStyles.MajorRoad1));
            StreetsShapeLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);

            ShapeFileFeatureLayer StreetsLabelLayer = new ShapeFileFeatureLayer(@"..\..\Data\streets.shp");

            StreetsLabelLayer.RequireIndex = false;
            TextStyle textStyle = new TextStyle();

            textStyle.TextColumnName       = "St_name";
            textStyle.TextSolidBrush       = new GeoSolidBrush(GeoColor.StandardColors.Black);
            textStyle.Font                 = new GeoFont("Arial", 7);
            textStyle.TextLineSegmentRatio = 10;
            textStyle.GridSize             = 100;
            textStyle.SplineType           = SplineType.StandardSplining;
            textStyle.DuplicateRule        = LabelDuplicateRule.OneDuplicateLabelPerQuadrant;
            StreetsLabelLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle);
            StreetsLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.GridSize = 5;
            StreetsLabelLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel       = ApplyUntilZoomLevel.Level20;

            LayerOverlay staticOverlay = new LayerOverlay();

            staticOverlay.Layers.Add("Parks", ParksShapeLayer);
            staticOverlay.Layers.Add("Streets", StreetsShapeLayer);
            staticOverlay.Layers.Add("Parks Labels", ParksLabelLayer);
            staticOverlay.Layers.Add("Streets Labels", StreetsLabelLayer);

            winformsMap1.Overlays.Add("Street Overlay", staticOverlay);
        }
Пример #6
0
        /// <summary>
        /// Setup the map with the ThinkGeo Cloud Maps overlay. Also, add the cityLimits and scaledLayer layers
        /// into a grouped LayerOverlay and display them on the map.
        /// </summary>
        protected override void OnAppearing()
        {
            base.OnAppearing();
            // Set the map's unit of measurement to meters(Spherical Mercator)
            mapView.MapUnit = GeographyUnit.Meter;

            ShapeFileFeatureLayer.BuildIndexFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Data/Shapefile/FriscoCityLimits.shp"));

            // Add Cloud Maps as a background overlay
            var thinkGeoCloudVectorMapsOverlay = new ThinkGeoCloudVectorMapsOverlay("9ap16imkD_V7fsvDW9I8r8ULxgAB50BX_BnafMEBcKg~", "vtVao9zAcOj00UlGcK7U-efLANfeJKzlPuDB9nw7Bp4K4UxU_PdRDg~~", ThinkGeoCloudVectorMapsMapType.Light);

            thinkGeoCloudVectorMapsOverlay.VectorTileCache = new FileVectorTileCache(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "cache"), "CloudMapsVector");
            mapView.Overlays.Add(thinkGeoCloudVectorMapsOverlay);

            ShapeFileFeatureLayer cityLimits   = new ShapeFileFeatureLayer(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Data/Shapefile/FriscoCityLimits.shp"));
            InMemoryFeatureLayer  scaledLayer  = new InMemoryFeatureLayer();
            LayerOverlay          layerOverlay = new LayerOverlay();

            // Project cityLimits layer to Spherical Mercator to match the map projection
            cityLimits.FeatureSource.ProjectionConverter = new ProjectionConverter(2276, 3857);

            // Style cityLimits layer
            cityLimits.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyle.CreateSimpleAreaStyle(new GeoColor(32, GeoColors.Orange), GeoColors.DimGray);
            cityLimits.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            // Style scaledLayer
            scaledLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyle.CreateSimpleAreaStyle(new GeoColor(32, GeoColors.Green), GeoColors.DimGray);
            scaledLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            // Add cityLimits layer to a LayerOverlay
            layerOverlay.Layers.Add("cityLimits", cityLimits);

            // Add scaledLayer to the layerOverlay
            layerOverlay.Layers.Add("scaledLayer", scaledLayer);

            // Set the map extent to the cityLimits layer bounding box
            cityLimits.Open();
            mapView.CurrentExtent = cityLimits.GetBoundingBox();
            cityLimits.Close();

            // Add LayerOverlay to Map
            mapView.Overlays.Add("layerOverlay", layerOverlay);

            mapView.Refresh();
        }
        public void BuildIndex()
        {
            ShapeFileFeatureSource.BuildingIndex += ShapeFileFeatureSource_BuildingIndex;
            ShapeFileFeatureLayer.BuildIndexFile(FilePath, BuildIndexMode.Rebuild);
            ShapeFileFeatureSource.BuildingIndex -= ShapeFileFeatureSource_BuildingIndex;

            string tempTargetIdxPath = Path.ChangeExtension(FilePath, "_tmp.idx");
            string tempTargetIdsPath = Path.ChangeExtension(FilePath, "_tmp.ids");

            if (File.Exists(tempTargetIdxPath))
            {
                File.Delete(tempTargetIdxPath);
            }
            if (File.Exists(tempTargetIdsPath))
            {
                File.Delete(tempTargetIdsPath);
            }
        }
Пример #8
0
        private void Form_Load(object sender, EventArgs e)
        {
            // Set the map's unit of measurement to meters(Spherical Mercator)
            mapView.MapUnit = GeographyUnit.Meter;
            ShapeFileFeatureLayer.BuildIndexFile(@"../../../Data/Shapefile/FriscoCityLimits.shp");

            // Add Cloud Maps as a background overlay
            var thinkGeoCloudVectorMapsOverlay = new ThinkGeoCloudVectorMapsOverlay("itZGOI8oafZwmtxP-XGiMvfWJPPc-dX35DmESmLlQIU~", "bcaCzPpmOG6le2pUz5EAaEKYI-KSMny_WxEAe7gMNQgGeN9sqL12OA~~", ThinkGeoCloudVectorMapsMapType.Light);

            mapView.Overlays.Add(thinkGeoCloudVectorMapsOverlay);

            ShapeFileFeatureLayer cityLimits   = new ShapeFileFeatureLayer(@"../../../Data/Shapefile/FriscoCityLimits.shp");
            InMemoryFeatureLayer  scaledLayer  = new InMemoryFeatureLayer();
            LayerOverlay          layerOverlay = new LayerOverlay();

            // Project cityLimits layer to Spherical Mercator to match the map projection
            cityLimits.FeatureSource.ProjectionConverter = new ProjectionConverter(2276, 3857);

            // Style cityLimits layer
            cityLimits.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyle.CreateSimpleAreaStyle(new GeoColor(32, GeoColors.Orange), GeoColors.DimGray);
            cityLimits.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            // Style scaledLayer
            scaledLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyle.CreateSimpleAreaStyle(new GeoColor(32, GeoColors.Green), GeoColors.DimGray);
            scaledLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            // Add cityLimits layer to a LayerOverlay
            layerOverlay.Layers.Add("cityLimits", cityLimits);

            // Add scaledLayer to the layerOverlay
            layerOverlay.Layers.Add("scaledLayer", scaledLayer);

            // Set the map extent to the cityLimits layer bounding box
            cityLimits.Open();
            mapView.CurrentExtent = cityLimits.GetBoundingBox();
            cityLimits.Close();

            // Add LayerOverlay to Map
            mapView.Overlays.Add("layerOverlay", layerOverlay);
        }
Пример #9
0
        protected override void DrawCore(WinformsMap winformsMap)
        {
            LayerOverlay layerOverlay = new LayerOverlay();

            if (!LoadingFromShapeFile)
            {
                foreach (var item in Layers)
                {
                    layerOverlay.Layers.Add(item);
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(firstShapeFilePathName))
                {
                    ShapeFileFeatureLayer.BuildIndexFile(firstShapeFilePathName, BuildIndexMode.DoNotRebuild);
                    ShapeFileFeatureLayer firstInputShapeFileFeatureLayer = new ShapeFileFeatureLayer(firstShapeFilePathName);
                    firstInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(102, 0, 255, 0), GeoColor.FromArgb(255, 0, 255, 0), 2);
                    firstInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle    = LineStyles.CreateSimpleLineStyle(GeoColor.FromArgb(102, 0, 255, 0), 2, true);
                    firstInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle   = PointStyles.CreateSimpleCircleStyle(GeoColor.FromArgb(102, 0, 255, 0), 12);
                    firstInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                    layerOverlay.Layers.Add(firstInputShapeFileFeatureLayer);
                }

                if (!String.IsNullOrEmpty(secondShapeFilePathName))
                {
                    ShapeFileFeatureLayer.BuildIndexFile(secondShapeFilePathName, BuildIndexMode.DoNotRebuild);
                    ShapeFileFeatureLayer secondInputShapeFileFeatureLayer = new ShapeFileFeatureLayer(secondShapeFilePathName);
                    secondInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle    = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(102, 0, 0, 255), GeoColor.FromArgb(255, 0, 0, 255), 2);
                    secondInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle    = LineStyles.CreateSimpleLineStyle(GeoColor.FromArgb(102, 0, 0, 255), 2, true);
                    secondInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle   = PointStyles.CreateSimpleCircleStyle(GeoColor.FromArgb(102, 0, 0, 255), 12);
                    secondInputShapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                    layerOverlay.Layers.Add(secondInputShapeFileFeatureLayer);
                }
                layerOverlay.Layers.Add(OutputFeatureLayer);
            }
            winformsMap.Overlays.Clear();
            winformsMap.Overlays.Add(layerOverlay);
            winformsMap.Refresh();
        }
 private void buildSpatialIndex_Click(object sender, EventArgs e)
 {
     ShapeFileFeatureLayer.BuildIndexFile(Samples.RootDirectory + @"Data\Countries02.shp", BuildIndexMode.DoNotRebuild);
     MessageBox.Show("Finish building spatial index.", "BuildIndexFile", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
 }
Пример #11
0
 private void buildSpatialIndex_Click(object sender, RoutedEventArgs e)
 {
     ShapeFileFeatureLayer.BuildIndexFile(SampleHelper.Get("Countries02_3857.shp"), BuildIndexMode.DoNotRebuild);
     MessageBox.Show("Finish building spatial index.", "BuildIndexFile", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.None);
 }
Пример #12
0
 public string Spatial(Map map, GeoCollection <object> args)
 {
     ShapeFileFeatureLayer.BuildIndexFile(Server.MapPath("~/App_Data/cntry02.shp"), BuildIndexMode.DoNotRebuild);
     return("Finish building spatial index. <br/>The index file is <b>" + Server.MapPath("~/App_Data/cntry02.idx") + "</b>");
 }