Есть ли способ прямого преобразования dbgeometry или sqlgeometry в файл формы?

У меня есть таблица, которая содержит поле данных SqlGeometry. Я хочу экспортировать эту таблицу в шейп-файл в приложении asp.net. Есть ли способ преобразовать таблицу непосредственно в шейп-файл?

Если нет, есть ли бесплатный SDK или инструмент для записи файла формы?

Обратите внимание, что таблица содержит строки, поля int и Boolean.

1 ответ

Вы можете попробовать NetTopologySuite, у них есть класс ShapeFileWriter, который сделает эту работу без особых усилий.

РЕДАКТИРОВАТЬ: Вот пример кода. Я написал это, используя исходные файлы NetTopologySuite. Но есть пакеты NuGet.

namespace ConsoleApplication1
{
using GeoAPI.Geometries;
using NetTopologySuite.Features;
using NetTopologySuite.Geometries;
using NetTopologySuite.IO;

class Program
{
    static void Main(string[] args)
    {
        FeatureCollection features = new FeatureCollection();

        // Polygon 1
        List<Coordinate> coords = new List<Coordinate>();
        coords.Add(new Coordinate(0,0));
        coords.Add(new Coordinate(0,10));
        coords.Add(new Coordinate(10,10));
        coords.Add(new Coordinate(10,0));
       coords.Add(new Coordinate(0,0));
        LinearRing ring = new LinearRing(coords.ToArray());
        Polygon poly = new Polygon(ring);

        // Polygon1 attributes
        AttributesTable attr = new AttributesTable();
        attr.AddAttribute("Column1", "HELLO");
        attr.AddAttribute("Column2", "WORLD !");

        Feature featureForPolygon = new Feature(poly, attr);

        features.Add(featureForPolygon);

        ShapefileDataWriter writer = new ShapefileDataWriter(@"%userprofile%\documents\outFile");
        writer.Header = new DbaseFileHeader();
        writer.Header.AddColumn("Column1", 'C', 10, 0);
        writer.Header.AddColumn("Column2", 'C', 10, 0);
        writer.Write(features.Features);
    }
}
}

Это не просто, так как вы должны вручную конвертировать каждую SqlGeometry. (Может быть, NTS MsSqlSpatial поможет...)

Попробуйте и дайте мне знать.

Другие вопросы по тегам