Beispiel #1
0
 private void InitializeColumns(InMemoryFeatureLayer featureLayer, bool trackMeasureResult = true)
 {
     featureLayer.SafeProcess(() =>
     {
         if (trackMeasureResult)
         {
             featureLayer.Columns.Add(new FeatureSourceColumn(measureResultColumnName, DbfColumnType.Float.ToString(), 0));
         }
         featureLayer.Columns.Add(new FeatureSourceColumn(memoColumnName));
         featureLayer.Columns.Add(new FeatureSourceColumn(valueStyleColumnName));
         featureLayer.Columns.Add(new FeatureSourceColumn(AreaColumnName));
         featureLayer.Columns.Add(new FeatureSourceColumn(DistanceColumnName));
         featureLayer.Columns.Add(new FeatureSourceColumn(UnitColumnName));
     });
 }
        private static void AddFeaturesToInMemoryFeatureLayer(InMemoryFeatureLayer inMemoryFeatureLayer, Collection <Feature> features)
        {
            inMemoryFeatureLayer.SafeProcess(() =>
            {
                List <string> columnNames = inMemoryFeatureLayer.GetDistinctColumnNames().ToList();
                foreach (var columnName in features[0].ColumnValues.Keys)
                {
                    if (!columnNames.Contains(columnName))
                    {
                        inMemoryFeatureLayer.Columns.Add(new FeatureSourceColumn(columnName, DbfColumnType.Character.ToString(), 100));
                    }
                }

                foreach (Feature feature in features)
                {
                    inMemoryFeatureLayer.EditTools.BeginTransaction();
                    inMemoryFeatureLayer.EditTools.Add(feature);
                    inMemoryFeatureLayer.EditTools.CommitTransaction();
                }
            });
        }
        public static void OpenWithGoogleMenuitemClick(object sender, RoutedEventArgs e)
        {
            Collection <InMemoryFeatureLayer> addedlayers = new Collection <InMemoryFeatureLayer>();

            var selectionOverlay = GisEditor.SelectionManager.GetSelectionOverlay();

            if (selectionOverlay.HighlightFeatureLayer.InternalFeatures.All(i => !GisEditor.ActiveMap.CurrentExtent.Intersects(i)))
            {
                ShowOptionsIfNoSelectedFeatureInCurrentExtent(selectionOverlay.HighlightFeatureLayer.InternalFeatures);
                return;
            }

            Dictionary <FeatureLayer, GeoCollection <Feature> > selectedFeaturesGroup = selectionOverlay.GetSelectedFeaturesGroup();

            foreach (var item in selectedFeaturesGroup)
            {
                if (item.Value.Count > 0)
                {
                    InMemoryFeatureLayer layer = new InMemoryFeatureLayer();
                    if (item.Key.FeatureSource.Projection != null)
                    {
                        bool isClosed = false;
                        if (item.Key.FeatureSource.Projection.IsOpen)
                        {
                            item.Key.FeatureSource.Projection.Close();
                            isClosed = true;
                        }
                        layer.FeatureSource.Projection = item.Key.FeatureSource.Projection.CloneDeep();
                        if (isClosed)
                        {
                            item.Key.FeatureSource.Projection.Open();
                        }
                    }
                    else
                    {
                        Proj4Projection proj4 = new Proj4Projection();
                        proj4.ExternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
                        proj4.ExternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
                        layer.FeatureSource.Projection           = proj4;
                    }
                    foreach (var zoomLevel in item.Key.ZoomLevelSet.CustomZoomLevels)
                    {
                        layer.ZoomLevelSet.CustomZoomLevels.Add(zoomLevel);
                    }
                    layer.SafeProcess(() =>
                    {
                        layer.EditTools.BeginTransaction();
                        foreach (Feature feature in item.Value)
                        {
                            layer.EditTools.Add(feature);
                        }
                        layer.EditTools.CommitTransaction();
                    });

                    addedlayers.Add(layer);
                }
            }

            string installedPath = ((MenuItem)sender).Tag.Equals("GoogleEarth") ? GetGoogleEarthInstalledPath() : GetGoogleEarthProInstalledPath();

            GisEditor.ActiveMap.OpenInGoogleEarth(installedPath, addedlayers.ToArray());
        }