/// <summary> /// Saves the 3 basic files: .shp, .dbf and .idx /// </summary> /// <param name="shapefileInfo"></param> /// <param name="region"></param> /// <param name="shapefileERMTType"></param> private String SaveShapefiles(FileInfo shapefileInfo, Region region, ShapeFileERMTType shapefileERMTType = ShapeFileERMTType.Map) { try { //check if we need to create the index file for the .shp MapHelper.CheckIndexFile(shapefileInfo); FileInfo indexFileInfo = new FileInfo(shapefileInfo.FullName.Replace(".shp", ".idx")); FileInfo dbfFileInfo = new FileInfo(shapefileInfo.FullName.Replace(".shp", ".dbf")); FileInfo shxFileInfo = new FileInfo(shapefileInfo.FullName.Replace(".shp", ".shx")); //now, copy files to the server. string shapefileName = DocumentHelper.SaveShapefile(shapefileInfo, region, shapefileERMTType); DocumentHelper.SaveShapefile(dbfFileInfo, region, shapefileERMTType); //DocumentHelper.SaveShapefile(indexFileInfo, newRegion); DocumentHelper.SaveShapefile(shxFileInfo, region, shapefileERMTType); return(region.RegionLevel + "\\" + shapefileName); } catch (Exception ex) { LogHelper.LogError(ex); throw; } }
public static String SaveShapefile(FileInfo doc, Region region, ShapeFileERMTType shapeFileERMTType) { byte[] fileContent = File.ReadAllBytes(doc.FullName); Document document = new Document { Content = Convert.ToBase64String(fileContent), Filename = doc.Name, DocumentType = ERMTDocumentType.Shapefile }; String fileName = GetService().SaveShapeFileToServer(document, region, shapeFileERMTType); string shapefileDirectory = DirectoryAndFileHelper.ClientShapefilesFolder + "\\" + region.RegionLevel + "\\"; if (!Directory.Exists(shapefileDirectory)) { Directory.CreateDirectory(shapefileDirectory); } File.Copy(doc.FullName, shapefileDirectory + fileName, true); return(fileName); }
private void tsmiEditRegionAddRoadsAndPOI_Click(object sender, EventArgs e) { ShapeFileERMTType shapeFileERMTType = ((ToolStripMenuItem)sender).Name == "tsmiEditRegionAddRoads" ? ShapeFileERMTType.Path : ShapeFileERMTType.POI; OpenFileDialog openFileDialog = new OpenFileDialog { Filter = "Shape Files (*.shp)|*.shp" }; DialogResult result = openFileDialog.ShowDialog(); if (result == DialogResult.OK) { FileInfo shapeFileInfo = new FileInfo(openFileDialog.FileName); try { if (!File.Exists(shapeFileInfo.ToString().Replace(".shp", ".dbf")) || !File.Exists(shapeFileInfo.ToString().Replace(".shp", ".shx"))) { //if there's no DBF / SHX file, can't use this .shp. //http://thinkgeo.com/forums/MapSuite/tabid/143/aft/2947/Default.aspx //1) In real life, how those files (.shp .shx .dbf) are generated ? //1. These files are automatically created upon creation of a shapefile, using the CreateShapeFile method of Map Suite or another shapefile creation application. These three files are required for a shapefile to function as dictated by ESRI shapefile standard. CustomMessageBox.ShowMessage(ResourceHelper.GetResourceText("EditRegionShapeFileMissingFiles")); return; } else { Region selectedRegion = (Region)_selectedNode.Tag; if (selectedRegion != null) { String newRegionFileName = SaveShapefiles(shapeFileInfo, selectedRegion, shapeFileERMTType); switch (shapeFileERMTType) { case ShapeFileERMTType.Path: { selectedRegion.PathFileName = newRegionFileName; break; } case ShapeFileERMTType.POI: { selectedRegion.POIFileName = newRegionFileName; break; } } RegionHelper.Save(selectedRegion); CustomMessageBox.ShowMessage(shapeFileERMTType == ShapeFileERMTType.Path ? ResourceHelper.GetResourceText("PathSuccessfullySaved") : ResourceHelper.GetResourceText("POISuccessfullySaved")); } } } catch (Exception ex) { //Shape was not valid } finally { } } }