有没有办法直接将dbgeometry或sqlgeometry转换为shape文件?

时间:2013-12-22 07:09:05

标签: c# gis shapefile sqlgeometry

我有一个包含SqlGeometry数据字段的表,我希望将该表导出到asp.net应用程序上的shapefile。有没有办法将表直接转换为shapefile?

如果没有,是否有用于编写形状文件的免费SDK或工具?

请注意,该表包含字符串,int和Boolean字段。

1 个答案:

答案 0 :(得分:0)

你可以试试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会有所帮助......)

尝试一下,让我知道。