Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向GDAL(C#)中的shapefile添加点几何图形_C#_Shapefile_Gdal_Qgis - Fatal编程技术网

向GDAL(C#)中的shapefile添加点几何图形

向GDAL(C#)中的shapefile添加点几何图形,c#,shapefile,gdal,qgis,C#,Shapefile,Gdal,Qgis,我正在尝试使用GDAL制作具有点几何图形的形状文件。我遵循所给的例子。我使用的是Microsoft Visual Studio,编程语言是C#。现在,我只在原点做一个点,并在QGIS中查看生成的形状文件。由于某种原因,我无法看到我提出的观点。我也尝试过制作多边形,但我面临着同样的问题。以下是我编写的代码: public void testSF(Dataset ds) { Console.WriteLine("Writing ERSI shapefi

我正在尝试使用GDAL制作具有点几何图形的形状文件。我遵循所给的例子。我使用的是Microsoft Visual Studio,编程语言是C#。现在,我只在原点做一个点,并在QGIS中查看生成的形状文件。由于某种原因,我无法看到我提出的观点。我也尝试过制作多边形,但我面临着同样的问题。以下是我编写的代码:

        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);
        }

        if (layerSH.CreateField(fdefnGPS, 1) != 0)
        {
            Console.WriteLine("Creating GPS field failed");
            System.Environment.Exit(-1);
        }

        Console.WriteLine("Fields created and added to layer");
        OSGeo.OGR.Feature featureSH = new OSGeo.OGR.Feature(layerSH.GetLayerDefn());
        featureSH.SetField("Name", "This is a NAME");
        featureSH.SetField("GPS", "Test GPS point");

        // Outer Ring 
        // Methodology: Create a linear ring geometry, add it to a polygon geometry. Add polygon geometry to feature. Add feature to layer

        OSGeo.OGR.Feature feature = new OSGeo.OGR.Feature( layerSH.GetLayerDefn() );
        OSGeo.OGR.Geometry geom = OSGeo.OGR.Geometry.CreateFromWkt("POINT(0.0 0.0)");

        feature.SetGeometry(geom);
        layerSH.CreateFeature(feature);
}

此代码在0.0和0.0处向多边形层添加一个点。但是,当我在QGIS中打开生成的图层时,我无法看到/定位该点。任何帮助都将不胜感激。

我已经用上一个GDAL版本测试了您的代码,它运行正常


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

我认为您没有定义空间参照