package com.se.simu.helper;
|
|
import com.se.simu.domain.SeLayer;
|
import lombok.extern.slf4j.Slf4j;
|
import org.gdal.ogr.*;
|
import org.gdal.osr.SpatialReference;
|
|
import java.io.File;
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* ShapeFile帮助类
|
*
|
* @author WWW
|
* @date 2024-09-13
|
*/
|
@Slf4j
|
@SuppressWarnings("ALL")
|
public class ShpHelper {
|
public static boolean createShp(String path, SeLayer seLayer) {
|
Driver driver = null;
|
DataSource dataSource = null;
|
Layer layer = null;
|
try {
|
// driver = ogr.GetDriverByName("ESRI shapefile");
|
// if (null == driver) {
|
// return null;
|
// }
|
//
|
// String filePath = path + File.separator + type.toLowerCase() + ".shp";
|
// // DataSource ds = driver.Open(filePath, 0)
|
// dataSource = driver.CreateDataSource(filePath, null);
|
// if (null == dataSource) {
|
// return null;
|
// }
|
//
|
// int geoType = getGeometryType(type);
|
// layer = dataSource.CreateLayer(type.toLowerCase(), GeoHelper.sr104903, geoType);
|
// if (null == layer) {
|
// return null;
|
// }
|
//
|
// List<Field> fields = new ArrayList<>();
|
// GdbHelper.getFields(MarkJsonEntity.class, fields, StaticData.MARK_EXCLUDE_FIELDS);
|
// GdbHelper.addLayerField(layer, fields);
|
|
FeatureDefn featureDefn = layer.GetLayerDefn();
|
//for (MarkJsonEntity t : list) {
|
// Feature f = new Feature(featureDefn);
|
// GdbHelper.setFeatureData(f, fields, t);
|
|
// Geometry geo = Geometry.CreateFromWkt(t.getWkt());
|
// f.SetGeometry(geo);
|
//
|
// layer.CreateFeature(f);
|
//}
|
|
return true;
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
return false;
|
} finally {
|
GdalHelper.delete(layer, dataSource, driver);
|
}
|
}
|
|
/**
|
* 获取图形类型
|
*/
|
private static int getGeometryType(String type) {
|
switch (type) {
|
case "POINT":
|
return ogr.wkbPoint;
|
case "LINESTRING":
|
return ogr.wkbLineString;
|
case "POLYGON":
|
return ogr.wkbPolygon;
|
default:
|
return ogr.wkbUnknown;
|
}
|
}
|
}
|