Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

Gdal关于CAD转SHP格式


package cn.atide;

import org.gdal.gdal.gdal;
import org.gdal.ogr.DataSource;
import org.gdal.ogr.Driver;
import org.gdal.ogr.Layer;
import org.gdal.ogr.ogr;
import org.junit.Test;
/**
 * 读取cad数据
 * @author Administrator
 *
 */
public class ReadDxf {
	
	@Test
    public void test() {
        // 注册所有的驱动
        ogr.RegisterAll();
        gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
        gdal.SetConfigOption("SHAPE_ENCODING","");
        String strVectorFile = "E:\\gdalTest\\output\\财信.渝中城项目5#楼竣工.dxf";
        DataSource ds = ogr.Open(strVectorFile,0);
        if (ds == null)
        {
            System.out.println("打开文件失败!" );
            return;
        }
        System.out.println("打开文件成功!" );
        int iLayerCount = ds.GetLayerCount();
        Layer oLayer = ds.GetLayerByIndex(0);
        String name = oLayer.GetName();
        if(oLayer == null){
        	System.out.println("获取失败");
        	return ;
        }
        oLayer.ResetReading();
        long featureCount = oLayer.GetFeatureCount();
        //Driver dv = ogr.GetDriverByName("GeoJSON");
        Driver dv = ogr.GetDriverByName("ESRI Shapefile");
        String extfile = "D:\\rect_field_demo.shp";
        DataSource dataSource = dv.CreateDataSource(extfile);
        dv.CopyDataSource(ds, extfile);
        //dataSource.CreateLayer(name)
        /*if (dv == null)
        {
            System.out.println("打开驱动失败!" );
            return; 
        }
        System.out.println("打开驱动成功!" );
        dv.CopyDataSource(ds, "E:\\gdalTest\\output\\node.json");
        System.out.println("转换成功!" );*/
    }
}


daShapefile = r"C:\Temp\Voting_Centers_and_Ballot_Sites.shp"

driver = ogr.GetDriverByName('ESRI Shapefile')
#需要用到驱动器
dataSource = driver.Open(daShapefile, 0) # 0 表示只读. 1 表示可写.

# 检测文件是否存在
if dataSource is None:
    print 'Could not open %s' % (daShapefile)
else:
    print 'Opened %s' % (daShapefile)
    layer = dataSource.GetLayer()
    featureCount = layer.GetFeatureCount()
    print "Number of features in %s: %d" % (os.path.basename(daShapefile),featureCount)

            
转载自:https://blog.csdn.net/wt346326775/article/details/70841323