package com.se.simu.helper;
|
|
import cn.hutool.core.io.FileUtil;
|
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 filePath, SeLayer seLayer) {
|
Driver driver = null;
|
DataSource dataSource = null;
|
Layer layer = null;
|
try {
|
driver = ogr.GetDriverByName("ESRI shapefile");
|
if (null == driver) return false;
|
|
dataSource = driver.CreateDataSource(filePath, null);
|
if (null == dataSource) return false;
|
|
int geoType = getGeometryType(seLayer.getQueryType());
|
layer = dataSource.CreateLayer(FileUtil.getName(filePath), null, geoType);
|
if (null == layer) return false;
|
//
|
// 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);
|
}
|
}
|
|
public static void ss(){
|
|
|
}
|
|
/**
|
* 获取图形类型
|
*/
|
private static int getGeometryType(String type) {
|
switch (type) {
|
case "point":
|
return ogr.wkbPoint;
|
case "polyline":
|
return ogr.wkbLineString;
|
case "polygon":
|
// return ogr.wkbPolygon
|
return ogr.wkbMultiPolygon;
|
default:
|
return ogr.wkbUnknown;
|
}
|
}
|
}
|