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}"); } }
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}"); } } }
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); } }
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); } }
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); }