示例#1
0
        internal void ExportToLayer(IEnumerable <IPoint> points)
        {
            _log.DebugEx("> ExportToLayer START.");

            var fClassName = $"GCP_{DateTime.Now.ToString("yyyyMMddHHmmss")}_P";

            var featureClass = GdbAccess.Instance.AddCalcPointsFeature(points, fClassName, EsriTools.Wgs84Spatialreference);

            ArcMapHelper.AddFeatureClassToMap(featureClass);

            _log.DebugEx("> ExportToLayer END.");
        }
示例#2
0
        private void InitializeLayersList()
        {
            lbLayers.Items.Clear();

            var layers = ArcMapHelper.GetFeatureLayers();

            foreach (var layer in layers)
            {
                lbLayers.Items.Add(layer);
            }

            lbLayers.SetSelected(0, true);
        }
示例#3
0
        internal void ImportFromLayer(string layerName)
        {
            _log.DebugEx("> ImportFromLayer START.");

            var spatialReference = ArcMap.Document.ActiveView.FocusMap.SpatialReference;
            var layer            = ArcMapHelper.GetLayer(layerName);

            if (layer == null)
            {
                _log.ErrorEx($"Cannot find a layer {layerName}.");
                return;
            }

            var points = new List <IPoint>();

            if (layer is IFeatureLayer seatureLayer)
            {
                var featureClass = seatureLayer.FeatureClass;

                IQueryFilter queryFilter = new QueryFilter();
                queryFilter.WhereClause = $"{featureClass.OIDFieldName} >= 0";

                IFeatureCursor featureCursor = featureClass.Search(queryFilter, true);
                IFeature       feature       = featureCursor.NextFeature();

                try
                {
                    while (feature != null)
                    {
                        var shape = feature.ShapeCopy;

                        if (featureClass.ShapeType == esriGeometryType.esriGeometryPoint)
                        {
                            var point = shape as IPoint;
                            points.Add(point);
                        }
                        else
                        {
                            var path = shape as IPointCollection;

                            for (int i = 0; i < path.PointCount; i++)
                            {
                                points.Add(path.Point[i]);
                            }
                        }

                        feature = featureCursor.NextFeature();
                    }
                }
                catch (Exception ex)
                {
                    _log.ErrorEx($"> ImportFromLayer Exception. ex.Message:{ex.Message}");
                }
                finally
                {
                    Marshal.ReleaseComObject(featureCursor);
                }
            }

            if (points.Count > 500)
            {
                var dialogResult = MessageBox.Show(String.Format(_context.FindLocalizedElement("BigFeatureClassMessage", "Отримано {0} точок. Імпорт такого об'єму може зайняти багато часу.\nВи бажаєте продовжити?"), points.Count),
                                                   _context.WarningString, MessageBoxButtons.OKCancel);

                if (dialogResult != DialogResult.OK)
                {
                    _log.DebugEx("> ImportFromLayer CANCELED.");
                    return;
                }
            }

            View.AddPointsToGrid(points);

            _log.DebugEx("> ImportFromLayer END.");
        }