Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.Problems.BioBoost/HeuristicLab.Problems.BioBoost/3.3/Persistence/ShapeFileLoader.cs @ 17777

Last change on this file since 17777 was 13071, checked in by gkronber, 8 years ago

#2499: added license headers and removed unused usings

File size: 1.9 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using SharpMap.Data;
23using SharpMap.Data.Providers;
24using System.Data;
25using System.IO;
26using System.Linq;
27
28namespace HeuristicLab.BioBoost.Persistence {
29
30  public static class ShapeFileLoader {
31    public static GeometryFeatureProvider LoadShapeFile(string filename) {
32      var shapefile = new ShapeFile(filename, true, true);
33      shapefile.Open();
34      var table = new FeatureDataTable {TableName = Path.GetFileNameWithoutExtension(shapefile.Filename)};
35      bool addColumns = true;
36      foreach (var row in shapefile.GetObjectIDsInView(shapefile.GetExtents()).Select(shapefile.GetFeature)) {
37        if (addColumns && row.Table != null) {
38          foreach (DataColumn col in row.Table.Columns)
39            table.Columns.Add(col.ColumnName, col.DataType);
40          addColumns = false;
41        }
42        var newRow = (FeatureDataRow) table.LoadDataRow(row.ItemArray, LoadOption.OverwriteChanges);
43        newRow.Geometry = row.Geometry;
44      }
45      return new GeometryFeatureProvider(table);
46    }
47  }
48}
Note: See TracBrowser for help on using the repository browser.