示例#1
0
        private static void SetFromMapRendererToRasterLayer(IRasterLayer rasterLayer,
                                                            IObjectFactory objFactory,
                                                            string mapLayerName)
        {
            MapLayersManager layersManager = new MapLayersManager(_map);
            var fromMapRasterLayer         = EsriTools.GetLayer(mapLayerName, _map.FocusMap) as IRasterLayer;

            if (fromMapRasterLayer == null)
            {
                _layersWithDefaultRenderer.Add(rasterLayer.Name);
                return;
            }

            try
            {
                Type   renderType   = typeof(SimpleRendererClass);
                string typeRenderID = renderType.GUID.ToString("B");

                var symbol  = (ISimpleRenderer)objFactory.Create(typeRenderID);
                var objCopy = (IObjectCopy)objFactory.Create("esriSystem.ObjectCopy");

                var copyS = objCopy.Copy(fromMapRasterLayer.Renderer) as IRasterRenderer;
                rasterLayer.Renderer = copyS;
            }
            catch (Exception ex)
            {
                _layersWithDefaultRenderer.Add(rasterLayer.Name);
                logger.WarnEx($"Cannot set rendrer from map for {rasterLayer.Name} layer. Exception: {ex.Message}");
            }
        }
示例#2
0
        private static void SetFromMapRendererToFeatureLayer(IFeatureLayer featureLayer,
                                                             IObjectFactory objFactory,
                                                             string featureClassName)
        {
            MapLayersManager mapLayersManager = new MapLayersManager(_map);
            var layerName = mapLayersManager.GetLayerAliasByFeatureClass(featureClassName);

            if (!String.IsNullOrEmpty(layerName))
            {
                var fromMapGeoFeatureLayer = EsriTools.GetLayer(layerName, _map.FocusMap) as IGeoFeatureLayer;

                if (fromMapGeoFeatureLayer == null)
                {
                    _layersWithDefaultRenderer.Add(featureLayer.Name);
                    return;
                }

                var geoFeatureLayer = featureLayer as IGeoFeatureLayer;

                try
                {
                    Type   renderType   = typeof(SimpleRendererClass);
                    string typeRenderID = renderType.GUID.ToString("B");

                    var objCopy     = (IObjectCopy)objFactory.Create("esriSystem.ObjectCopy");
                    var rendereCopy = objCopy.Copy(fromMapGeoFeatureLayer.Renderer) as IFeatureRenderer;
                    geoFeatureLayer.Renderer = rendereCopy;
                }
                catch (Exception ex)
                {
                    _layersWithDefaultRenderer.Add(featureLayer.Name);
                    logger.WarnEx($"Cannot set rendrer from map for {featureLayer.Name} layer. Exception: {ex.Message}");
                }
            }
        }
示例#3
0
        internal static void OpenProfilesSetIn3D(ArcSceneArguments layers, IActiveView map)
        {
            OpenArcScene();

            try
            {
                UpdateTemporaryDataStorage();

                IObjectFactory objFactory = m_application as IObjectFactory;
                var            document   = (IBasicDocument)m_application.Document;

                _zFactor = layers.ZFactor;
                _map     = map;

                var baseSurface = AddBaseLayers(layers, objFactory, document);
                AddVisibilityLayers(layers.VisibilityResultsInfo, objFactory, document, baseSurface);
                AddExtraLayers(layers.AdditionalLayers, objFactory, document, baseSurface);

                if (!String.IsNullOrEmpty(layers.DraperyLayer))
                {
                    AddDraperyLayer(layers.DraperyLayer, objFactory, baseSurface, document);
                }

                var surfaceLayer = EsriTools.GetLayer(_demLayerName, document.ActiveView.FocusMap);

                if (surfaceLayer != null)
                {
                    SetSceneView(document, surfaceLayer as IRasterLayer);
                }
            }
            catch (Exception ex)
            {
                logger.ErrorEx(ex.Message);
            }
        }
示例#4
0
        internal bool IsResultsLayerExist(string resultsId, IActiveView activeView)
        {
            try
            {
                var selectedResults = _visibilityResults.First(res => res.Id == resultsId).Name;
                var layer           = EsriTools.GetLayer(selectedResults, activeView.FocusMap);

                return(layer != null);
            }
            catch { return(false); }
        }
示例#5
0
        private void GenerateButton_Click(object sender, EventArgs e)
        {
            try
            {
                var profilesSets = new List <ProfileSession>();

                foreach (var profileSetModel in profilesModels)
                {
                    var profilesSet = profileSetModel.NodeProfileSession;
                    profilesSet.ConvertLinesToEsriPolypile(ArcMap.Document.FocusMap.SpatialReference);

                    profilesSets.Add(profilesSet);
                }

                if (SurfaceComboBox.SelectedItem != null && (profilesSets.Count > 0 || visibilitySessionsModel.Count > 0))
                {
                    var arcSceneArguments = Feature3DManager.Get3DFeatures(SurfaceComboBox.SelectedItem.ToString(), profilesSets);

                    if (!String.IsNullOrEmpty(tbZFactor.Text))
                    {
                        arcSceneArguments.ZFactor = Convert.ToDouble(tbZFactor.Text);
                    }

                    if (DraperyLayerComboBox.SelectedItem != null)
                    {
                        var draperyLayer = EsriTools.GetLayer(DraperyLayerComboBox.SelectedItem.ToString(),
                                                              ArcMap.Document.FocusMap) as IRasterLayer;

                        arcSceneArguments.DraperyLayer = draperyLayer.FilePath;
                    }

                    arcSceneArguments.AdditionalLayers      = GetAdditionalLayers();
                    arcSceneArguments.VisibilityResultsInfo = GetVisibilityResultsInfo();

                    Visualization3DHandler.OpenProfilesSetIn3D(arcSceneArguments, ArcMap.Document.ActiveView);
                }
                else
                {
                    MessageBox.Show(context.LackOfParametersMessage, context.MessageBoxTitle);
                }
            }
            catch (Exception ex)
            {
                log.ErrorEx($"> GenerateButton_Click. Exception: {ex.Message}");
            }
        }
        private void CalcIntesectionsWithLayers(ProfileLine selectedLine, ProfileSession profileSession)
        {
            var allIntersectionLines = new List <IntersectionsInLayer>();
            var layers           = View.GetLayers();
            var spatialReference = ArcMap.Document.FocusMap.SpatialReference;

            List <IPolyline>    polylines;
            List <ProfilePoint> pointsFrom;

            profileSession.Layers = new List <string>();

            if (selectedLine == null)
            {
                return;
            }

            if (selectedLine.Line.SpatialReference != spatialReference)
            {
                selectedLine.Line.Project(spatialReference);
            }

            var lineSurface    = profileSession.ProfileSurfaces.First(surface => surface.LineId == selectedLine.Id);
            var profileSegment = profileSession.Segments.First(segment => segment.LineId == selectedLine.Id);
            var distance       = 0.0;

            if (profileSegment.IsPrimitive)
            {
                polylines  = ProfileLinesConverter.ConvertLineToPrimitivePolylines(lineSurface, selectedLine.Line.SpatialReference);
                pointsFrom = profileSegment.Vertices;
            }
            else
            {
                polylines = new List <IPolyline> {
                    selectedLine.Line
                };
                pointsFrom = new List <ProfilePoint> {
                    selectedLine.PointFrom
                };
            }

            int j = 0;

            for (int n = 0; n < polylines.Count; n++)
            {
                var intersectionLines = new List <IntersectionsInLayer>();

                for (int i = 0; i < layers.Count; i++)
                {
                    if (!string.IsNullOrEmpty(layers[i]))
                    {
                        var layer = EsriTools.GetLayer(layers[i], ArcMap.Document.FocusMap);
                        var lines = EsriTools.GetIntersections(polylines[n], layer);

                        var layerFullName = $"Path/{layer.Name}";

                        if (!profileSession.Layers.Exists(sessionLayer => sessionLayer == layerFullName))
                        {
                            profileSession.Layers.Add(layerFullName);
                        }

                        if (lines != null && lines.Count() > 0)
                        {
                            var layerType        = (LayersEnum)Enum.GetValues(typeof(LayersEnum)).GetValue(i);
                            var intersectionLine = new IntersectionsInLayer
                            {
                                Lines = ProfileLinesConverter.ConvertEsriPolylineToIntersectionLines(lines, pointsFrom[j], layerType, distance),
                                Type  = layerType,
                            };

                            intersectionLine.SetDefaultColor();
                            intersectionLines.Add(intersectionLine);
                            SetLayersForPoints(intersectionLine, lineSurface);
                        }
                    }
                }

                allIntersectionLines.AddRange(intersectionLines);

                if (polylines.Count > 1)
                {
                    j++;

                    if (n < polylines.Count - 1)
                    {
                        distance += EsriTools.CreatePolylineFromPoints(polylines[n].FromPoint, polylines[n + 1].FromPoint).Length;
                    }
                }
            }

            graphsController.SetIntersections(allIntersectionLines, selectedLine.Id);
        }