Есть ли способ прямого преобразования 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 поможет...)
Попробуйте и дайте мне знать.