2016-05-11 12 views
1

Ich habe den folgenden Code festgelegt, um bestimmen einen Shape-Datei Satz (DBF, .prj, SHP, .shx) mit den NetTopologySuite.IO.ShapefileDataReader zu lesen:Wie das Koordinatensystem einer Shape-Datei mit ShapefileDataReader

public FeatureCollection ReadShapeFile(string localShapeFile) 
{ 
    var collection = new FeatureCollection(); 
    var factory = new GeometryFactory(); 
    using (var reader = new ShapefileDataReader(localShapeFile, factory)) 
    { 
     var header = reader.DbaseHeader; 
     while (reader.Read()) 
     { 
      var f = new Feature {Geometry = reader.Geometry}; 

      var attrs = new AttributesTable(); 
      for (var i = 0; i < header.NumFields; i++) 
      { 
       attrs.AddAttribute(header.Fields[i].Name, reader.GetValue(i)); 
      } 

      f.Attributes = attrs; 

      collection.Add(f); 
     } 
    } 
    return collection; 
} 

Dies funktioniert , aber die Geometrieobjekte haben keine Eigenschaft, um festzustellen, in welchem ​​Bezugssystem sich die Koordinaten befinden.

Wie kann ich herausfinden, in welchem ​​Koordinatensystem/Bezugssystem sich die Formdatei oder einzelne Formen befinden?

Antwort

0

Der Vorsprung ist in der SHP-Datei nicht verfügbar, aber in der PRJ-Datei und kann separat geladen werden:

var projectionFile = Path.Combine(Path.GetDirectoryName(localShapeFile), Path.GetFileNameWithoutExtension(localShapeFile) + ".prj"); 
var projectionInfo = ProjectionInfo.Open(projectionFile);