C#中调用GDAL库ogr数据模型求交

C#中调用GDAL读取两个shpfile(每个shp中只有一个面层),使用相交Intersection或者裁切Clip返回的为空;

代码: OSGeo.OGR.Ogr.RegisterAll();
OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING", "CP936");

        OSGeo.OGR.Driver ZJShDriver = OSGeo.OGR.Ogr.GetDriverByName("ESRI Shapefile");
        OSGeo.OGR.DataSource ZJShpDataSource = Ogr.Open(ZJShpPath, 0);
        int ZJShplayercount = ZJShpDataSource.GetLayerCount();
        Layer ZJShpLayer = ZJShpDataSource.GetLayerByIndex(0);
        OSGeo.OGR.Feature ZJShpFeature = ZJShpLayer.GetFeature(1);
        OSGeo.OGR.Geometry ZJShpGeometry = ZJShpFeature.GetGeometryRef();


        OSGeo.OGR.Driver TKDataDriver = OSGeo.OGR.Ogr.GetDriverByName("ESRI Shapefile");
        OSGeo.OGR.DataSource TKDataDataSource = Ogr.Open(TKDataPath, 0);
        int TKDatalayercount = TKDataDataSource.GetLayerCount();
        Layer TKDataLayer = TKDataDataSource.GetLayerByIndex(0); ;
        OSGeo.OGR.Feature TKDataFeature = TKDataLayer.GetFeature(1);
        OSGeo.OGR.Geometry TKDataGeometry = TKDataFeature.GetGeometryRef();


        OSGeo.OGR.Driver DFShDriver = OSGeo.OGR.Ogr.GetDriverByName("ESRI Shapefile");
        OSGeo.OGR.DataSource DFShpDataSource = DFShDriver.CreateDataSource(DFShpPath, null);

        OSGeo.OSR.SpatialReference Prj = new OSGeo.OSR.SpatialReference("");
        Prj.SetWellKnownGeogCS("EPSG:4490");

        Layer DFShpLayer = DFShpDataSource.CreateLayer("DFShpJH", Prj, wkbGeometryType.wkbPolygon, null);
        FieldDefn oFieldTH = new FieldDefn("TH", FieldType.OFTString);
        oFieldTH.SetWidth(15);
        DFShpLayer.CreateField(oFieldTH, 1);
        FieldDefn oFieldJH = new FieldDefn("JH", FieldType.OFTString);
        oFieldJH.SetWidth(100);
        DFShpLayer.CreateField(oFieldJH, 1);
        FeatureDefn oDefn = DFShpLayer.GetLayerDefn();
        Feature oFeatureRectangle = new Feature(oDefn);
        oFeatureRectangle.SetField(0, 0);
        oFeatureRectangle.SetField("TH", strTH);

       int aa= ZJShpLayer.Intersection(TKDataLayer, DFShpLayer,null,null,null);
       int bb = ZJShpLayer.Clip(TKDataLayer, DFShpLayer, null, null, null);

可以试试