为了账号安全,请及时绑定邮箱和手机立即绑定

在 GDAL (C#) 中将点几何添加到 shapefile

在 GDAL (C#) 中将点几何添加到 shapefile

C#
BIG阳 2021-07-06 13:07:39
我正在尝试使用 GDAL 制作点几何形状的 shapefile。我正在按照此处给出的示例进行操作。我使用的是 Microsoft Visual Studio,编程语言是 C#。现在,我只是在原点做一点,我正在 QGIS 中查看生成的 shapefile。出于某种原因,我无法看到我提出的观点。我也尝试制作多边形,但我面临同样的问题。下面是我写的代码:        public void testSF(Dataset ds)        {        Console.WriteLine("Writing ERSI shapefile");        // Registering drivers        OSGeo.OGR.Ogr.RegisterAll();        OSGeo.OGR.Driver driverSH = OSGeo.OGR.Ogr.GetDriverByName("ESRI Shapefile");        if (driverSH == null)        {            Console.WriteLine("Cannot get drivers. Exiting");            System.Environment.Exit(-1);        }        Console.WriteLine("Drivers fetched");        // Creating a shapefile        OSGeo.OGR.DataSource dataSourceSH = driverSH.CreateDataSource("ERSI_TEST_ShapeFile.shp", new string[] { });        if (dataSourceSH == null)        {            Console.WriteLine("Cannot create datasource");            System.Environment.Exit(-1);        }        Console.WriteLine("Shapefile created");        // Creating a point layer        OSGeo.OGR.Layer layerSH;        layerSH = dataSourceSH.CreateLayer("PolygonLayer", null, OSGeo.OGR.wkbGeometryType.wkbPoint, new string[] { });        if (layerSH == null)        {            Console.WriteLine("Layer creation failed, exiting...");            System.Environment.Exit(-1);        }        Console.WriteLine("Polygon Layer created");        // Creating and adding attribute fields to layer        OSGeo.OGR.FieldDefn fdefnName = new OSGeo.OGR.FieldDefn("Name", OSGeo.OGR.FieldType.OFTString);        fdefnName.SetWidth(32);        OSGeo.OGR.FieldDefn fdefnGPS = new OSGeo.OGR.FieldDefn("GPS", OSGeo.OGR.FieldType.OFTString);        fdefnGPS.SetWidth(32);        if (layerSH.CreateField(fdefnName, 1) != 0)        {            Console.WriteLine("Creating Name field failed");            System.Environment.Exit(-1);        }}此代码在 0.0 和 0.0 处向多边形图层添加一个点。但是,当我在 QGIS 中打开生成的图层时,我无法看到/定位该点。任何帮助,将不胜感激。
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

我已经使用最新的 GDAL 版本测试了您的代码,并且可以正常工作。

您必须关闭数据源(调用 Dispose 方法)以使用创建的几何更新文件,否则您只会查看一个空文件。


查看完整回答
反对 回复 2021-07-11
?
慕沐林林

TA贡献2016条经验 获得超9个赞

我认为您缺少定义空间参考


查看完整回答
反对 回复 2021-07-11
  • 2 回答
  • 0 关注
  • 323 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信