创建矢量数据集
完整代码
public static Layer createShp(String driverName, String path, String layerName, SpatialReference spatialReference) {
Layer result = null;
Driver driver = ogr.GetDriverByName(driverName);
if (driver == null) {
System.out.println(driverName + "不可用");
return null;
}
DataSource dataSource = null;
File file = new File(path);
if (file.exists()) {
if (file.isFile()) {
String parentDir = getParentDir(file.getPath());
File dir = new File(parentDir);
deleteFilesLikeName(dir,layerName);
dataSource = driver.CreateDataSource(path, null);
} else if (file.isDirectory()) {
dataSource = driver.Open(path, 1);
for (int i = 0; i < dataSource.GetLayerCount(); i++) {
Layer layer = dataSource.GetLayer(i);
if (layerName.equals(layer.GetName())) {
dataSource.DeleteLayer(i);
dataSource.FlushCache();
}
}
}
} else {
dataSource = driver.CreateDataSource(path, null);
}
if (dataSource == null) {
System.out.println("数据源创建/打开失败");
return null;
}
result = dataSource.CreateLayer(layerName, spatialReference, ogr.wkbPolygon, null);
if (result == null) {
System.out.println("【"+layerName+".shp】"+ "创建失败");
return null;
}
System.out.println("【"+layerName+".shp】" + "创建成功");
return result;
}
public static String getParentDir(String path){
String parentDir = "";
int end = path.lastIndexOf("\\");
parentDir = path.substring(0,end);
return parentDir;
}
public static void deleteFilesLikeName(File file,String likeName){
if(file.exists()){
if(file.isFile()){
String temp = file.getName().substring(0,file.getName().lastIndexOf('.'));
if(temp.indexOf(likeName)!=-1){
file.delete();
}
}
else {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFilesLikeName(files[i],likeName);
}
}
}
}
创建栅格数据集
完整代码(待更新)