Как определить систему координат набора шейп-файлов с помощью ShapefileDataReader
У меня есть следующий код для чтения набора шейп-файлов (.dbf, .prj, .shp, .shx) с NetTopologySuite.IO.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;
}
Это работает, но объекты геометрии не имеют свойства, чтобы сказать, в какой системе отсчета находятся координаты.
Как узнать, в какой системе координат / системе отсчета находится файл формы или отдельные фигуры?
1 ответ
Проекция доступна не в файле.shp, а в файле.prj и может быть загружена отдельно:
var projectionFile = Path.Combine(Path.GetDirectoryName(localShapeFile), Path.GetFileNameWithoutExtension(localShapeFile) + ".prj");
var projectionInfo = ProjectionInfo.Open(projectionFile);