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);
                    }
                }
            }
        }
Пример #2
0
        private void FillMatchesByLocalLayers(string searchAddress, Collection <GeocodeMatch> resultMatches, Collection <string> errorMessages, IEnumerable <string> pluginNames)
        {
            try
            {
                List <Layer> layers = GetAvailableLayers(pluginNames).ToList();
                foreach (Layer layer in layers)
                {
                    LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(layer.GetType()).FirstOrDefault();
                    if (layerPlugin != null && layerPlugin.SearchPlaceTool.CanSearchPlace(layer))
                    {
                        List <Feature>             resultFeatures = layerPlugin.SearchPlaceTool.SearchPlaces(searchAddress, layer).Take(SearchPlaceMaxResultCount).ToList();
                        IEnumerable <GeocodeMatch> resultMatchs   = GetMatchedResult(resultFeatures);

                        foreach (GeocodeMatch item in resultMatchs)
                        {
                            resultMatches.Add(item);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex));
                errorMessages.Add(ex.Message);
            }
        }
        public PostgreTableDataRepositoryItem()
        {
            Icon = new BitmapImage(new Uri("/GisEditorPluginCore;component/Images/table.png", UriKind.RelativeOrAbsolute));

            MenuItem propertyItem = new MenuItem();

            propertyItem.Icon    = DataRepositoryHelper.GetMenuIcon("/GisEditorPluginCore;component/Images/properties.png", 16, 16);
            propertyItem.Header  = "Properties";
            propertyItem.Command = new RelayCommand(() =>
            {
                LayerPlugin matchingLayerPlugin = GisEditor.LayerManager.GetActiveLayerPlugins <LayerPlugin>()
                                                  .FirstOrDefault(tmpPlugin => tmpPlugin.Name.Equals("PostgreSql", StringComparison.OrdinalIgnoreCase));

                PostgreSqlFeatureLayer newLayer = GetPostgreSqlFeatureLayers().FirstOrDefault();
                if (newLayer != null)
                {
                    UserControl userControl = matchingLayerPlugin.GetPropertiesUI(newLayer);

                    Window propertiesDockWindow = new Window()
                    {
                        Content       = userControl,
                        Title         = GisEditor.LanguageManager.GetStringResource("MapElementsListPluginProperties"),
                        SizeToContent = SizeToContent.WidthAndHeight,
                        ResizeMode    = System.Windows.ResizeMode.NoResize,
                        Style         = Application.Current.FindResource("WindowStyle") as System.Windows.Style
                    };

                    propertiesDockWindow.ShowDialog();
                }
            });
            ContextMenu.Items.Add(propertyItem);
        }
Пример #4
0
        protected override void BuildIndexCore(FeatureLayer featureLayer)
        {
            lock (layersInBuildingIndex)
            {
                if (!layersInBuildingIndex.Contains(featureLayer))
                {
                    layersInBuildingIndex.Add(featureLayer);
                }
            }

            var uri = LayerPlugin.GetUri(featureLayer);

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

                lock (layersInBuildingIndex)
                {
                    if (layersInBuildingIndex.Contains(featureLayer))
                    {
                        layersInBuildingIndex.Remove(featureLayer);
                    }
                }
            }
        }
Пример #5
0
        protected override void BuildIndexCore(FeatureLayer featureLayer)
        {
            var uri = LayerPlugin.GetUri(featureLayer);

            if (uri != null)
            {
                TabFeatureLayer.BuildIndexFile(uri.LocalPath, BuildIndexMode.DoNotRebuild);
            }
        }
Пример #6
0
        protected override void BuildIndexCore(FeatureLayer featureLayer)
        {
            TobinBasFeatureSource.BuildingIndex += TobinBasFeatureSource_BuildingIndex;
            var uri = LayerPlugin.GetUri(featureLayer);

            if (uri != null)
            {
                TobinBasFeatureSource.BuildIndexFile(uri.LocalPath, Path.ChangeExtension(uri.LocalPath, ".idx"), null, string.Empty, string.Empty, BuildIndexMode.DoNotRebuild);
            }
        }
Пример #7
0
        private void InitializeSearchEntries()
        {
            searchEntriesModels = new Collection <SearchEntriesModel>();
            UsingOnlineServiceLayerPlugin geocodeplugin = new UsingOnlineServiceLayerPlugin();
            SearchEntriesModel            searchModel   = new SearchEntriesModel(geocodeplugin.Name, false, geocodeplugin);

            LayerPlugin        shapeFilePlugin      = GisEditor.LayerManager.GetLayerPlugins <ShapeFileFeatureLayer>().FirstOrDefault();
            SearchEntriesModel shapeFilePluginModel = new SearchEntriesModel("On Local Shapefiles", true, shapeFilePlugin);

            searchEntriesModels.Add(searchModel);
            searchEntriesModels.Add(shapeFilePluginModel);
        }
        public FileDataRepositoryItem(string filePath)
        {
            fileInfo           = new FileInfo(filePath);
            Name               = fileInfo.Name;
            CustomData["Size"] = fileInfo.Length;

            matchingLayerPlugin = GisEditor.LayerManager.GetActiveLayerPlugins <LayerPlugin>()
                                  .FirstOrDefault(tmpPlugin => tmpPlugin.ExtensionFilter.ToUpperInvariant().Contains(FileInfo.Extension.ToUpperInvariant()));

            string imageUri = matchingLayerPlugin != null ? ((BitmapImage)matchingLayerPlugin.SmallIcon).UriSource.OriginalString : "/GisEditorPluginCore;component/Images/dr_fileicon_raster.png";

            Icon = new BitmapImage(new Uri(imageUri, UriKind.RelativeOrAbsolute));

            AddMenuItems();
        }
        public static string GetFeatureIdColumn(FeatureLayer featureLayer)
        {
            string featureIdColumn = string.Empty;

            if (featureLayer != null)
            {
                LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault();
                if (layerPlugin != null)
                {
                    Uri uri = null;
                    try
                    {
                        uri = layerPlugin.GetUri(featureLayer);
                    }
                    catch
                    { }

                    if (uri != null && GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(uri.ToString()))
                    {
                        featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[uri.ToString()];
                        GisEditor.LayerManager.FeatureIdColumnNames.Remove(uri.ToString());
                        GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id] = featureIdColumn;
                    }
                    else if (GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(featureLayer.FeatureSource.Id))
                    {
                        featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id];
                    }
                    else if (GisEditor.LayerManager.FeatureIdColumnNames.Count == 0)
                    {
                        if (string.IsNullOrEmpty(featureIdColumn) &&
                            featureLayer.FeatureSource.IsOpen)
                        {
                            var apnColumn = featureLayer.FeatureSource.GetColumns().FirstOrDefault(c => { return(c.ColumnName == "APN"); });
                            if (apnColumn != null)
                            {
                                featureIdColumn = "APN";
                            }
                        }
                    }
                }
            }

            return(featureIdColumn);
        }
Пример #10
0
        public static void CloseInOverlay(this FeatureLayer featureLayer)
        {
            featureLayer.CloseAll();

            LayerPlugin currentFeatureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault();

            if (currentFeatureLayerPlugin != null)
            {
                Uri currentFeatureLayerUri = currentFeatureLayerPlugin.GetUri(featureLayer);
                IEnumerable <LayerOverlay> layerOverlays = GisEditor.GetMaps().
                                                           SelectMany(map => map.Overlays).
                                                           OfType <LayerOverlay>().
                                                           Where(layerOverlay =>
                {
                    FeatureLayer matchingShpLayer = layerOverlay.Layers.OfType <FeatureLayer>().Where(tempLayer =>
                    {
                        LayerPlugin tempFeatureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(tempLayer.GetType()).FirstOrDefault();
                        return(tempFeatureLayerPlugin.GetUri(tempLayer) == currentFeatureLayerUri);
                    }).FirstOrDefault();

                    if (matchingShpLayer != null)
                    {
                        matchingShpLayer.CloseAll();
                        return(true);
                    }
                    return(false);
                });

                foreach (var layerOverlay in layerOverlays)
                {
                    layerOverlay.Close();
                }
            }
            else
            {
                LayerOverlay layerOverlay = GisEditor.ActiveMap.Overlays.OfType <LayerOverlay>().Where(lo => lo.Layers.Contains(featureLayer)).FirstOrDefault();
                if (layerOverlay != null)
                {
                    layerOverlay.Close();
                }
            }
        }
Пример #11
0
        private void FillMatchesByShapefiles(string searchAddress, Collection <GeocodeMatch> resultMatches, Collection <Feature> features, Collection <string> errorMessages)
        {
            List <ShapeFileFeatureLayer> layers = new List <ShapeFileFeatureLayer>();

            int resultLayerCount = 0;

            try
            {
                layers = GisEditor.ActiveMap.GetFeatureLayers().OfType <ShapeFileFeatureLayer>().ToList();
                LayerPlugin layerPlugin = GisEditor.LayerManager.GetLayerPlugins <ShapeFileFeatureLayer>().FirstOrDefault();
                if (layerPlugin != null && layerPlugin.SearchPlaceTool.CanSearchPlace())
                {
                    foreach (ShapeFileFeatureLayer layer in layers)
                    {
                        List <Feature> resultFeatures = layerPlugin.SearchPlaceTool.SearchPlaces(searchAddress, layer).Take(SearchPlaceMaxResultCount).ToList();
                        if (resultFeatures.Count > 0)
                        {
                            resultLayerCount++;
                            foreach (var item in resultFeatures)
                            {
                                features.Add(item);
                            }
                            IEnumerable <GeocodeMatch> resultMatchs = GetMatchedResult(resultFeatures);

                            foreach (GeocodeMatch item in resultMatchs)
                            {
                                resultMatches.Add(item);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex));
                errorMessages.Add(ex.Message);
            }
        }
 public SearchEntriesModel(string name, bool isChecked, LayerPlugin layerPlugin)
 {
     this.name        = name;
     this.isChecked   = isChecked;
     this.layerPlugin = layerPlugin;
 }