Как определить систему координат набора шейп-файлов с помощью 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);
Другие вопросы по тегам