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