public bool AddSHPLayer() { string filename = @"c:\users\suter\documents\test.shp"; Shapefile sf = new Shapefile(); if (sf.Open(filename)) { int m_layerHandle = AxMap.AddLayer(sf, true); sf = AxMap.get_Shapefile(m_layerHandle); // in case a copy of shapefile was created by GlobalSettings.ReprojectLayersOnAdding ShpLayer sl = new ShpLayer(); sl.LayerType = LayerType.CustomLayerSHP; sl.Name = "Gefahrenkarte"; sl.Shapefile = sf; sl.Handle = m_layerHandle; MapControlTools.Layers.Add(sl); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = sl }; On_LayerChange(layerchange); return(true); } else { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddShpLayer", AxMapError = sf.ErrorMsg[sf.LastErrorCode] }; On_Error(error); return(false); } }
private void Callback_MapControl_RasterReprojected(object sender, Events.MapControl_RasterReprojected e) { Console.WriteLine("Finished"); Image img = new Image(); if (img.Open(e.rasterLayer.FileName)) { string proj = img.GetProjection(); int layerHandle = AxMap.AddLayer(img, true); if (layerHandle == -1) { Events.MapControl_Error imghandle_error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddRasterLayer", AxMapError = new GlobalSettings().GdalLastErrorMsg }; On_Error(imghandle_error); } e.rasterLayer.Handle = layerHandle; MapControlTools.Layers.Add(e.rasterLayer); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = e.rasterLayer }; On_LayerChange(layerchange); } }
public bool StopEditingLayer(bool saveEdits = false) { if (CurrentEditingLayer == null) { // there is nothing to save... return(false); } saveAndCloseWhenFinish = false; AxMap.ShapeEditor.SaveChanges(); if (saveEdits) { if (!SaveEdits()) { //return false; } } var sf = AxMap.get_Shapefile(CurrentEditingLayer.Handle); var ogrLayer = AxMap.get_OgrLayer(CurrentEditingLayer.Handle); if (ogrLayer != null) { ogrLayer.ReloadFromSource(); // show the editing layer (with all Polygons) sf = AxMap.get_Shapefile(((ResTBPostGISLayer)CurrentEditingLayer).EditingLayerHandle); AxMap.RemoveLayer(((ResTBPostGISLayer)CurrentEditingLayer).EditingLayerHandle); AxMap.set_LayerVisible(CurrentEditingLayer.Handle, true); } bool returnBool = sf.StopEditingShapes(); AxMap.ChooseLayer -= AxMap_ChooseLayer; AxMap.AfterShapeEdit -= _map_AfterShapeEdit; AxMap.BeforeDeleteShape -= _map_BeforeDeleteShape; AxMap.BeforeShapeEdit -= _map_BeforeShapeEdit; AxMap.ShapeValidationFailed -= _map_ShapeValidationFailed; AxMap.ValidateShape -= _map_ValidateShape; MapControlTools.Redraw(true); Events.MapControl_LayerChange layerChange = new Events.MapControl_LayerChange() { Layer = this.CurrentEditingLayer, LayerChangeReason = Events.LayerChangeReason.EditedLayer }; On_LayerChange(layerChange); Events.MapControl_EditingStateChange editingStateChange = new Events.MapControl_EditingStateChange() { EditingState = Events.EditingState.StopEditing, EditingLayer = CurrentEditingLayer }; On_EditingStateChange(editingStateChange); _currentEditingLayer = null; AxMap.CursorMode = tkCursorMode.cmPan; return(returnBool); }
public bool AddProjectLayer(ResTBPostGISLayer resTBPostGISLayer, bool visible = true) { if (!MapControlTools.Layers.Where(m => m.Name == resTBPostGISLayer.Name).Any()) { Type t = resTBPostGISLayer.GetType(); // Handle the damage potential differently if (resTBPostGISLayer.GetType() == typeof(ResTBDamagePotentialLayer)) { return(AddProjectLayer((ResTBDamagePotentialLayer)resTBPostGISLayer, visible)); } if (resTBPostGISLayer.GetType() == typeof(ResTBRiskMapLayer)) { return(AddProjectLayer((ResTBRiskMapLayer)resTBPostGISLayer, visible)); } var layer = ds.RunQuery(resTBPostGISLayer.SQL); if (layer == null) { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.FailedToRunSQLQuery, InMethod = "AddPostGISLayer", AxMapError = ds.GdalLastErrorMsg }; On_Error(error); return(false); } else { int handle = AxMap.AddLayer(layer, visible); if (handle == -1) { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddPostGISLayer", AxMapError = AxMap.FileManager.get_ErrorMsg(AxMap.FileManager.LastErrorCode) }; On_Error(error); return(false); } else { resTBPostGISLayer.Handle = handle; resTBPostGISLayer.ApplyStyle(AxMap); MapControlTools.Layers.Add(resTBPostGISLayer); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = resTBPostGISLayer }; On_LayerChange(layerchange); } return(true); } } return(false); }
public bool AddWMSLayer(string baseUrl, string layers, string name, Extents extents, int Epsg, string Format) { WmsLayer wmsLayer = new WmsLayer(); wmsLayer.BaseUrl = baseUrl; wmsLayer.BoundingBox = extents; wmsLayer.DoCaching = false; wmsLayer.Epsg = Epsg; wmsLayer.Format = Format; wmsLayer.Layers = layers; wmsLayer.Name = name; wmsLayer.UseCache = false; wmsLayer.Id = 1; wmsLayer.Key = "1"; wmsLayer.Version = tkWmsVersion.wv111; WmsLayerLayer layer = new WmsLayerLayer(); layer.WmsLayerObj = wmsLayer; layer.Name = name; layer.Handle = AxMap.AddLayer(wmsLayer, true); layer.LayerType = LayerType.CustomLayerWMS; MapControlTools.Layers.Add(layer); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = layer }; On_LayerChange(layerchange); return(true); }
public bool SetLayerVisible(string name, bool visible) { ILayer layer = MapControlTools.Layers.Where(m => m.Name == name).FirstOrDefault(); if (layer == null) { return(false); } if (layer.GetType() == typeof(ResTBDamagePotentialLayer)) { MapControlTools.AxMap.set_LayerVisible(((ResTBDamagePotentialLayer)layer).PointHandle, visible); MapControlTools.AxMap.set_LayerVisible(((ResTBDamagePotentialLayer)layer).PolygonHandle, visible); MapControlTools.AxMap.set_LayerVisible(((ResTBDamagePotentialLayer)layer).LineHandle, visible); } else if (layer.GetType() == typeof(ResTBRiskMapLayer)) { MapControlTools.AxMap.set_LayerVisible(((ResTBRiskMapLayer)layer).PointHandle, visible); MapControlTools.AxMap.set_LayerVisible(((ResTBRiskMapLayer)layer).PolygonHandle, visible); MapControlTools.AxMap.set_LayerVisible(((ResTBRiskMapLayer)layer).LineHandle, visible); } else { MapControlTools.AxMap.set_LayerVisible(layer.Handle, visible); } Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.ChangeVisibility, Layer = layer }; On_LayerChange(layerchange); return(true); }
public bool SetLayerPosition(string name, LayerMoveType layerMoveType) { ILayer layer = MapControlTools.Layers.Where(m => m.Name == name).FirstOrDefault(); if (layer == null) { return(false); } // TODO: Handle Damage Potential Layer //if (layer.GetType() == typeof(ResTBDamagePotentialLayer)) //{ // int currentPosition = MapControlTools.AxMap.get_LayerPosition(((ResTBDamagePotentialLayer)layer).PointHandle); //} int currentPosition = MapControlTools.AxMap.get_LayerPosition(layer.Handle); bool rc = false; switch (layerMoveType) { case LayerMoveType.TOP: rc = MapControlTools.AxMap.MoveLayerTop(currentPosition); break; case LayerMoveType.BOTTOM: rc = MapControlTools.AxMap.MoveLayerBottom(currentPosition); break; case LayerMoveType.UP: rc = MapControlTools.AxMap.MoveLayerUp(currentPosition); break; case LayerMoveType.DOWN: rc = MapControlTools.AxMap.MoveLayerDown(currentPosition); break; default: break; } if (rc) { Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.ChangeOrder, Layer = layer }; On_LayerChange(layerchange); return(true); } else { return(false); } }
public bool RemoveAllLayers() { AxMap.RemoveAllLayers(); MapControlTools.Layers.Clear(); //MapControlTools.EditingTool.CurrentEditingLayer = null; Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.RemoveLayer, Layer = null }; On_LayerChange(layerchange); return(true); }
private bool AddProjectLayer(ResTBRiskMapLayer resTBRiskMapLayer, bool visible = true) { if (!MapControlTools.Layers.Where(m => m.Name == resTBRiskMapLayer.Name).Any()) { var pointlayer = ds.RunQuery(resTBRiskMapLayer.SQL_Point); var linelayer = ds.RunQuery(resTBRiskMapLayer.SQL_Line); var polygonlayer = ds.RunQuery(resTBRiskMapLayer.SQL_Polygon); if ((pointlayer == null) || (linelayer == null) || (polygonlayer == null)) { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.FailedToRunSQLQuery, InMethod = "AddPostGISLayer", AxMapError = ds.GdalLastErrorMsg }; On_Error(error); return(false); } else { int pointhandle = AxMap.AddLayer(pointlayer, visible); int linehandle = AxMap.AddLayer(linelayer, visible); int polygonhandle = AxMap.AddLayer(polygonlayer, visible); if ((pointhandle == -1) || (linehandle == -1) || (polygonhandle == -1)) { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddPostGISLayer", AxMapError = AxMap.FileManager.get_ErrorMsg(AxMap.FileManager.LastErrorCode) }; On_Error(error); return(false); } else { resTBRiskMapLayer.PointHandle = pointhandle; resTBRiskMapLayer.LineHandle = linehandle; resTBRiskMapLayer.PolygonHandle = polygonhandle; resTBRiskMapLayer.ApplyStyle(AxMap); MapControlTools.Layers.Add(resTBRiskMapLayer); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = resTBRiskMapLayer }; On_LayerChange(layerchange); } return(true); } } return(false); }
public bool RemoveLayer(string name) { ILayer removeLayer = MapControlTools.Layers.Where(m => m.Name == name).FirstOrDefault(); if (removeLayer == null) { return(false); } if (removeLayer.GetType() == typeof(ResTBDamagePotentialLayer)) { AxMap.RemoveLayer(((ResTBDamagePotentialLayer)removeLayer).PointHandle); AxMap.RemoveLayer(((ResTBDamagePotentialLayer)removeLayer).LineHandle); AxMap.RemoveLayer(((ResTBDamagePotentialLayer)removeLayer).PolygonHandle); } else if (removeLayer.GetType() == typeof(ResTBRiskMapLayer)) { AxMap.RemoveLayer(((ResTBRiskMapLayer)removeLayer).PointHandle); AxMap.RemoveLayer(((ResTBRiskMapLayer)removeLayer).LineHandle); AxMap.RemoveLayer(((ResTBRiskMapLayer)removeLayer).PolygonHandle); } else { AxMap.RemoveLayer(removeLayer.Handle); } if (MapControlTools.EditingTool.CurrentEditingLayer?.GetType() == typeof(ResTBPostGISLayer)) { AxMap.RemoveLayer(((ResTBPostGISLayer)MapControlTools.EditingTool.CurrentEditingLayer).EditingLayerHandle); } MapControlTools.Layers.Remove(removeLayer); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.RemoveLayer, Layer = removeLayer }; On_LayerChange(layerchange); return(true); }
public bool AddRasterLayer(string fileLocation, string layerName, bool autoReproject = true, bool overwriteExistingReprojectedFiles = false) { Image img = new Image(); if (autoReproject) { if (!img.Open(fileLocation)) { Events.MapControl_Error errorFileNotOpen = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddRasterLayer", AxMapError = img.ErrorMsg[img.LastErrorCode] }; On_Error(errorFileNotOpen); } if (!IsRasterGoogleMercator(img)) { // Image is not WGS84, so use GdalWrap for reprojection string localData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); if (!System.IO.Directory.Exists(localData + "\\ResTBDesktop")) { System.IO.Directory.CreateDirectory(localData + "\\ResTBDesktop"); } string filename = Path.GetFileName(fileLocation); if (!Directory.Exists(localData + "\\ResTBDesktop\\temp")) { Directory.CreateDirectory(localData + "\\ResTBDesktop\\temp"); } // check if file already transformed if ((File.Exists(localData + "\\ResTBDesktop\\temp\\" + filename)) && (!overwriteExistingReprojectedFiles)) { } else { string fileLocationThreadSave = (string)fileLocation.Clone(); fileLocation = localData + "\\ResTBDesktop\\temp\\" + filename; RasterLayer r = new RasterLayer() { FileName = fileLocation, LayerType = LayerType.CustomLayerRaster, Name = layerName }; RasterProjectionWorker rpw = new RasterProjectionWorker(); rpw.MapControlTools = MapControlTools; rpw.MapControl_RasterReprojected += Callback_MapControl_RasterReprojected; reprojectThread = new Thread(() => rpw.Run(filename, fileLocationThreadSave, r)); Events.MapControl_BusyStateChange bc = new Events.MapControl_BusyStateChange(); bc.BusyState = Events.BusyState.BackgroundBusy; bc.KeyOfSender = Resources.MapControl_Busy_RasterReprojection; bc.Percent = 0; bc.Message = Resources.MapControl_Busy_StartRasterReprojection;; MapControlTools.On_BusyStateChange(bc); reprojectThread.Start(); return(false); } fileLocation = localData + "\\ResTBDesktop\\temp\\" + filename; } } if (img.Open(fileLocation)) { string proj = img.GetProjection(); int layerHandle = AxMap.AddLayer(img, true); if (layerHandle == -1) { Events.MapControl_Error imghandle_error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddRasterLayer", AxMapError = new GlobalSettings().GdalLastErrorMsg }; On_Error(imghandle_error); return(false); } RasterLayer r = new RasterLayer() { FileName = fileLocation, Handle = layerHandle, LayerType = LayerType.CustomLayerRaster, Name = layerName }; MapControlTools.Layers.Add(r); MapControlTools.LayerHandlingTool.SetLayerPosition(r.Name, LayerMoveType.BOTTOM); Events.MapControl_LayerChange layerchange = new Events.MapControl_LayerChange() { LayerChangeReason = Events.LayerChangeReason.AddLayer, Layer = r }; On_LayerChange(layerchange); return(true); } Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.CouldNotLoadLayer, InMethod = "AddRasterLayer", AxMapError = img.ErrorMsg[img.LastErrorCode] }; On_Error(error); return(false); }
public bool SaveEdits() { if (CurrentEditingLayer == null) { Events.MapControl_Error error = new Events.MapControl_Error() { ErrorCode = Events.ErrorCodes.UseStartEditing, InMethod = "StopEditingLayer", AxMapError = "" }; On_Error(error); return(false); } Events.MapControl_EditingStateChange editingStateChange = new Events.MapControl_EditingStateChange() { EditingState = Events.EditingState.SaveEditing, EditingLayer = CurrentEditingLayer }; On_EditingStateChange(editingStateChange); var sf = AxMap.get_Shapefile(CurrentEditingLayer.Handle); var ogrLayer = AxMap.get_OgrLayer(CurrentEditingLayer.Handle); bool success = false; if (ogrLayer != null) { ogrLayer = ((ResTBPostGISLayer)CurrentEditingLayer).EditingLayer; ((ResTBPostGISLayer)CurrentEditingLayer).SaveAttributes(AxMap); int savedCount; tkOgrSaveResult saveResult = ogrLayer.SaveChanges(out savedCount); success = saveResult == tkOgrSaveResult.osrAllSaved || saveResult == tkOgrSaveResult.osrNoChanges; // if hazard map before --> copy to hazardmap after if ((success) && (((ResTBPostGISLayer)CurrentEditingLayer).ResTBPostGISType == ResTBPostGISType.HazardMapBefore) && (isAdding)) { string newName = ((ResTBHazardMapLayer)CurrentEditingLayer).CopyToAfter(MapControlTools); ILayer HMAfter = MapControlTools.Layers.Where(m => m.Name == newName).FirstOrDefault(); if (HMAfter != null) { ogrLayer = AxMap.get_OgrLayer(HMAfter.Handle); ogrLayer.ReloadFromSource(); } } ogrLayer = AxMap.get_OgrLayer(CurrentEditingLayer.Handle); ogrLayer.ReloadFromSource(); } if (success) { sf.InteractiveEditing = false; AxMap.ShapeEditor.Clear(); AxMap.UndoList.ClearForLayer(CurrentEditingLayer.Handle); Events.MapControl_EditingStateChange editingStateChangeStop = new Events.MapControl_EditingStateChange() { EditingState = Events.EditingState.StopEditing, EditingLayer = CurrentEditingLayer }; On_EditingStateChange(editingStateChangeStop); Events.MapControl_LayerChange layerChange = new Events.MapControl_LayerChange() { Layer = this.CurrentEditingLayer, LayerChangeReason = Events.LayerChangeReason.EditedLayer }; On_LayerChange(layerChange); return(true); } AxMap.Redraw(); return(false); }
/// <summary> /// On_LayerChange when a Layer is added, removed oder changed /// </summary> public void On_LayerChange(Events.MapControl_LayerChange e) { MapControlTools.On_LayerChange(e); }