작성자 | SHA1 | 메시지 | 날짜 |
---|---|---|---|
|
a79703bb55 | 导出任务 | 2 일 전 |
|
c139cd7c76 | 导出任务 | 2 일 전 |
@@ -258,6 +258,12 @@ | |||
<version>${geotools.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.geotools</groupId> | |||
<artifactId>gt-epsg-hsql</artifactId> | |||
<version>${geotools.version}</version> | |||
</dependency> | |||
<!-- 定时任务--> | |||
@@ -2,6 +2,7 @@ import cn.hutool.core.io.FileUtil; | |||
import cn.hutool.core.thread.ThreadUtil; | |||
import com.alibaba.fastjson2.JSON; | |||
import com.ruoyi.RuoYiApplication; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.common.geo.GeoParser; | |||
import com.ruoyi.common.geo.GeoWriter; | |||
import com.ruoyi.geo.service.GeoExportHandlerService; | |||
@@ -40,11 +41,14 @@ public final class GeoTest | |||
public static void main(String[] args) | |||
{ | |||
String COORD = "3857"; | |||
COORD = "4326"; | |||
String DIR = "D:/m/胜利村_shp_" + COORD + "/"; | |||
String PATH; | |||
PATH = "D:/m/胜利村_shp_3857/cjqy.shp"; // cjqy | |||
PATH = "D:/m/胜利村_shp_3857/dk.shp"; // dk | |||
PATH = "D:/m/胜利村_shp_3857/zyhycg.shp"; // zyhycg | |||
PATH = "D:/m/胜利村_shp_3857/jtzy.shp"; // jtzy | |||
PATH = DIR + "cjqy.shp"; // cjqy | |||
PATH = DIR + "dk.shp"; // dk | |||
PATH = DIR + "zyhycg.shp"; // zyhycg | |||
PATH = DIR + "jtzy.shp"; // jtzy | |||
String OUT; | |||
OUT = "D:/m/output_胜利村_shp_3857/jtzyxx.shp"; | |||
@@ -56,7 +60,7 @@ public final class GeoTest | |||
parser.Open(PATH, "UTF-8"); | |||
System.out.println(parser.GetTypeNames()); | |||
parser.SetSource(0); | |||
List<Map<String, Object>> cjqies = parser.GetMapList(); | |||
List<Map<String, Object>> cjqies = parser.GetMapList(GeoConverter.EPSG_3857); | |||
//List<GeoCJQY> cjqies = parser.GetList(GeoCJQY.class); | |||
//List<GeoJTZY> cjqies = parser.GetList(GeoJTZY.class); | |||
//List<GeoZYHYCG> cjqies = parser.GetList(GeoZYHYCG.class); | |||
@@ -65,7 +69,7 @@ public final class GeoTest | |||
System.out.println(JSON.toJSONString(cjqies)); | |||
System.out.println("-------------------------"); | |||
try(GeoWriter writer = new GeoWriter()) | |||
/*try(GeoWriter writer = new GeoWriter()) | |||
{ | |||
writer.Open(OUT, "UTF-8"); | |||
Map<String, Class<?>> classes = new LinkedHashMap<>(); | |||
@@ -77,7 +81,7 @@ public final class GeoTest | |||
System.out.println(writer.GetTypeNames()); | |||
writer.SetSource(0, false); | |||
writer.WriteMapList(cjqies); | |||
} | |||
}*/ | |||
} | |||
} | |||
} |
@@ -13,6 +13,7 @@ public final class TaskEnums | |||
private TaskStatus() {} | |||
} | |||
public static final class ImportType | |||
{ | |||
public static final String IT_OVERRIDE = "1"; // 覆盖导入 | |||
@@ -21,5 +22,14 @@ public final class TaskEnums | |||
private ImportType() {} | |||
} | |||
public static final class CoordinateSystem | |||
{ | |||
public static final String CS_3857 = "1"; // 3857 | |||
public static final String CS_4326 = "2"; // 4326 | |||
public static final String CS_DEFAULT = CS_3857; // 3857 | |||
private CoordinateSystem() {} | |||
} | |||
private TaskEnums() {} | |||
} |
@@ -1,7 +1,7 @@ | |||
package com.ruoyi.geo.framework; | |||
import com.ruoyi.business.domain.TGisCjqy; | |||
import com.ruoyi.common.geo.GeoCreator; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.geo.service.GeoMapperService; | |||
import com.ruoyi.geo.structs.GeoCJQY; | |||
import org.locationtech.jts.geom.MultiPolygon; | |||
@@ -55,7 +55,7 @@ public class GeoCjqyExportTask implements GeoDBExportTaskInterface | |||
public Map<String, Class<?>> GetTypes() | |||
{ | |||
Map<String, Class<?>> types = GeoCreator.GetClassTypes(GeoCJQY.class); | |||
Map<String, Class<?>> types = GeoConverter.GetClassTypes(GeoCJQY.class); | |||
types.put("the_geom", MultiPolygon.class); | |||
return types; | |||
} | |||
@@ -30,7 +30,7 @@ public class GeoCjqyImportTask implements GeoDBImportTaskInterface | |||
public int LoadDataList() | |||
{ | |||
list = importTask.parser.GetList(GeoCJQY.class); | |||
list = importTask.parser.GetList(GeoCJQY.class, GeoImportTask.DefaultCS); | |||
importTask.logFile.WriteLine(TYPE_NAME + "shp读取数据条数: " + list.size()); | |||
return list.size(); | |||
@@ -4,9 +4,11 @@ import cn.hutool.core.collection.CollectionUtil; | |||
import cn.hutool.core.date.DateUtil; | |||
import cn.hutool.core.io.FileUtil; | |||
import cn.hutool.core.util.ZipUtil; | |||
import com.ruoyi.business.constants.TaskEnums; | |||
import com.ruoyi.business.domain.TTaskExport; | |||
import com.ruoyi.common.config.RuoYiConfig; | |||
import com.ruoyi.common.core.domain.entity.SysDept; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.common.geo.GeoWriter; | |||
import com.ruoyi.common.utils.ExceptionUtil; | |||
import com.ruoyi.common.utils.StringUtils; | |||
@@ -69,7 +71,7 @@ public class GeoExportTask implements Runnable | |||
public void Shutdown() | |||
{ | |||
//CleanTempFiles(); | |||
CleanTempFiles(); | |||
logFile.WriteLine("任务结束: {} - {}", taskId, DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss.SSS")); | |||
if(null != logFile) | |||
@@ -144,6 +146,18 @@ public class GeoExportTask implements Runnable | |||
taskExport.setFileUrl("/profile" + GeoSysDir.TrimNormalized(zipFile)); | |||
} | |||
private String GetEPSGName() | |||
{ | |||
switch(taskExport.getCoordinateSystem()) | |||
{ | |||
case TaskEnums.CoordinateSystem.CS_4326: | |||
return GeoConverter.EPSG_4326; | |||
case TaskEnums.CoordinateSystem.CS_3857: | |||
default: | |||
return GeoConverter.EPSG_3857; | |||
} | |||
} | |||
private void CreateShp() | |||
{ | |||
writer = new GeoWriter(); | |||
@@ -153,9 +167,12 @@ public class GeoExportTask implements Runnable | |||
logFile.ErrorLine("打开shp文件错误: " + shpFile); | |||
} | |||
String dbCrsName = GetEPSGName(); | |||
logFile.WriteLine("任务的坐标系: " + dbCrsName); | |||
logFile.WriteLine("数据库的坐标系: " + GeoConverter.EPSG_3857); | |||
try | |||
{ | |||
writer.AddSchema(type, typeClasses); | |||
writer.AddSchema(type + ".shp", dbCrsName, typeClasses); | |||
System.out.println(writer.GetTypeNames()); | |||
if(!writer.SetSource(type, false)) | |||
@@ -4,9 +4,11 @@ import cn.hutool.core.collection.CollectionUtil; | |||
import cn.hutool.core.date.DateUtil; | |||
import cn.hutool.core.io.FileUtil; | |||
import cn.hutool.core.util.ZipUtil; | |||
import com.ruoyi.business.constants.TaskEnums; | |||
import com.ruoyi.business.domain.TTaskImport; | |||
import com.ruoyi.common.config.RuoYiConfig; | |||
import com.ruoyi.common.core.domain.entity.SysDept; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.common.geo.GeoParser; | |||
import com.ruoyi.common.utils.ExceptionUtil; | |||
import com.ruoyi.common.utils.spring.SpringUtils; | |||
@@ -17,7 +19,10 @@ import com.ruoyi.geo.service.GeoImportHandlerService; | |||
import com.ruoyi.geo.service.GeoMapperService; | |||
import com.ruoyi.system.mapper.SysDeptMapper; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.locationtech.jts.geom.Geometry; | |||
import static com.ruoyi.business.constants.TaskEnums.TaskStatus; | |||
import static com.ruoyi.business.constants.TaskEnums.CoordinateSystem; | |||
import java.io.File; | |||
import java.util.Date; | |||
@@ -40,6 +45,7 @@ public class GeoImportTask implements Runnable | |||
private String type; | |||
String username; | |||
Date now; | |||
static final String DefaultCS = GeoConverter.EPSG_3857; | |||
private GeoDBImportTaskInterface task; | |||
@@ -136,6 +142,18 @@ public class GeoImportTask implements Runnable | |||
} | |||
} | |||
private String GetEPSGName() | |||
{ | |||
switch(taskImport.getCoordinateSystem()) | |||
{ | |||
case CoordinateSystem.CS_4326: | |||
return GeoConverter.EPSG_4326; | |||
case CoordinateSystem.CS_3857: | |||
default: | |||
return GeoConverter.EPSG_3857; | |||
} | |||
} | |||
private boolean LoadDataList() | |||
{ | |||
if(!parser.SetSource(type)) | |||
@@ -144,6 +162,13 @@ public class GeoImportTask implements Runnable | |||
return false; | |||
} | |||
String crsName = parser.GetEPSGName(); | |||
String dbCrsName = GetEPSGName(); | |||
logFile.WriteLine("任务的坐标系: " + dbCrsName); | |||
logFile.WriteLine("shp文件的坐标系: " + crsName); | |||
if(!crsName.equalsIgnoreCase(dbCrsName)) | |||
logFile.WriteLine("任务的坐标类型与shp文件不同: {} != {}", dbCrsName, crsName); | |||
int num = task.LoadDataList(); | |||
if(num == 0) | |||
{ | |||
@@ -1,7 +1,6 @@ | |||
package com.ruoyi.geo.framework; | |||
import com.ruoyi.common.geo.GeoCreator; | |||
import com.ruoyi.geo.service.GeoExportHandlerService; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.geo.service.GeoMapperService; | |||
import com.ruoyi.geo.structs.GeoJTZY; | |||
import com.ruoyi.resource.domain.TResourceLand; | |||
@@ -72,7 +71,7 @@ public class GeoJtzyExportTask implements GeoDBExportTaskInterface | |||
public Map<String, Class<?>> GetTypes() | |||
{ | |||
Map<String, Class<?>> types = GeoCreator.GetClassTypes(GeoJTZY.class); | |||
Map<String, Class<?>> types = GeoConverter.GetClassTypes(GeoJTZY.class); | |||
types.put("the_geom", MultiPolygon.class); | |||
return types; | |||
} | |||
@@ -30,7 +30,7 @@ public class GeoJtzyImportTask implements GeoDBImportTaskInterface | |||
public int LoadDataList() | |||
{ | |||
list = importTask.parser.GetList(GeoJTZY.class); | |||
list = importTask.parser.GetList(GeoJTZY.class, GeoImportTask.DefaultCS); | |||
importTask.logFile.WriteLine(TYPE_NAME + "shp读取数据条数: " + list.size()); | |||
return list.size(); | |||
@@ -1,12 +1,9 @@ | |||
package com.ruoyi.geo.framework; | |||
import cn.hutool.core.util.StrUtil; | |||
import com.ruoyi.common.geo.GeoCreator; | |||
import com.ruoyi.common.utils.DecimalUtils; | |||
import com.ruoyi.common.geo.GeoConverter; | |||
import com.ruoyi.geo.service.GeoMapperService; | |||
import com.ruoyi.geo.structs.GeoZYHYCG; | |||
import com.ruoyi.resource.domain.TResourceOperation; | |||
import org.locationtech.jts.geom.MultiPolygon; | |||
import java.util.List; | |||
import java.util.Map; | |||
@@ -69,6 +66,6 @@ public class GeoZyhycgExportTask implements GeoDBExportTaskInterface | |||
public Map<String, Class<?>> GetTypes() | |||
{ | |||
return GeoCreator.GetClassTypes(GeoZYHYCG.class); | |||
return GeoConverter.GetClassTypes(GeoZYHYCG.class); | |||
} | |||
} |
@@ -31,7 +31,7 @@ public class GeoZyhycgImportTask implements GeoDBImportTaskInterface | |||
public int LoadDataList() | |||
{ | |||
list = importTask.parser.GetList(GeoZYHYCG.class); | |||
list = importTask.parser.GetList(GeoZYHYCG.class, GeoImportTask.DefaultCS); | |||
importTask.logFile.WriteLine(TYPE_NAME + "shp读取数据条数: " + list.size()); | |||
return list.size(); | |||
@@ -172,6 +172,11 @@ | |||
<artifactId>gt-geojson</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.geotools</groupId> | |||
<artifactId>gt-epsg-hsql</artifactId> | |||
</dependency> | |||
</dependencies> | |||
@@ -1,6 +1,8 @@ | |||
package com.ruoyi.common.geo; | |||
import cn.hutool.core.util.ClassUtil; | |||
import org.geotools.geometry.jts.JTS; | |||
import org.geotools.referencing.CRS; | |||
import org.locationtech.jts.geom.Geometry; | |||
import org.locationtech.jts.geom.GeometryFactory; | |||
import org.locationtech.jts.geom.LineString; | |||
import org.locationtech.jts.geom.LinearRing; | |||
@@ -11,18 +13,22 @@ import org.locationtech.jts.geom.Point; | |||
import org.locationtech.jts.geom.Polygon; | |||
import org.locationtech.jts.io.ParseException; | |||
import org.locationtech.jts.io.WKTReader; | |||
import org.opengis.referencing.FactoryException; | |||
import org.opengis.referencing.crs.CoordinateReferenceSystem; | |||
import org.opengis.referencing.operation.MathTransform; | |||
import org.opengis.referencing.operation.TransformException; | |||
import java.lang.reflect.Field; | |||
import java.lang.reflect.Modifier; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
public final class GeoCreator | |||
public final class GeoConverter | |||
{ | |||
private static GeoCreator geometryCreator = null; | |||
private static GeoConverter geometryCreator = null; | |||
private static GeometryFactory geometryFactory = new GeometryFactory(); | |||
private GeoCreator() { | |||
private GeoConverter() { | |||
} | |||
/** | |||
@@ -157,4 +163,70 @@ public final class GeoCreator | |||
} | |||
return ret; | |||
} | |||
public static final String EPSG_4490 = "EPSG:4490"; | |||
public static final String EPSG_3857 = "EPSG:3857"; | |||
public static final String EPSG_4326 = "EPSG:4326"; | |||
public static final String EPSG_4530 = "EPSG:4530"; | |||
public static String EPSGName(CoordinateReferenceSystem a) | |||
{ | |||
try | |||
{ | |||
return CRS.lookupIdentifier(a, true); | |||
} | |||
catch(FactoryException e) | |||
{ | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
public static boolean CoordinateSystemEquals(CoordinateReferenceSystem a, CoordinateReferenceSystem b) | |||
{ | |||
if(a == b) | |||
return true; | |||
if(a == null || b == null) | |||
return false; | |||
return CRS.equalsIgnoreMetadata(a, b); | |||
} | |||
public static CoordinateReferenceSystem CoordinateSystem(String format) | |||
{ | |||
try | |||
{ | |||
CoordinateReferenceSystem coordinateReferenceSystem = CRS.decode(format, true); | |||
return coordinateReferenceSystem; | |||
} | |||
catch(Exception e) | |||
{ | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
public static MathTransform Transformer(String srcFormat, String targetFormat) | |||
{ | |||
try | |||
{ | |||
MathTransform transform = CRS.findMathTransform(CRS.decode(srcFormat, true), CRS.decode(targetFormat, true), true); | |||
return transform; | |||
} | |||
catch(Exception e) | |||
{ | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
public static Geometry Convert(Geometry resource, String srcFormat, String targetFormat) | |||
{ | |||
try | |||
{ | |||
Geometry transform = JTS.transform(resource, CRS.findMathTransform(CRS.decode(srcFormat, true), CRS.decode(targetFormat, true), true)); | |||
return transform; | |||
} | |||
catch(Exception e) | |||
{ | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
} |
@@ -3,13 +3,21 @@ package com.ruoyi.common.geo; | |||
import cn.hutool.core.bean.BeanUtil; | |||
import cn.hutool.core.bean.copier.CopyOptions; | |||
import cn.hutool.core.lang.Assert; | |||
import cn.hutool.core.util.StrUtil; | |||
import com.ruoyi.common.utils.StringUtils; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.geotools.data.shapefile.ShapefileDataStore; | |||
import org.geotools.data.simple.SimpleFeatureIterator; | |||
import org.geotools.data.simple.SimpleFeatureSource; | |||
import org.geotools.geometry.jts.JTS; | |||
import org.geotools.referencing.CRS; | |||
import org.locationtech.jts.geom.Geometry; | |||
import org.opengis.feature.simple.SimpleFeature; | |||
import org.opengis.feature.simple.SimpleFeatureType; | |||
import org.opengis.feature.type.AttributeDescriptor; | |||
import org.opengis.referencing.FactoryException; | |||
import org.opengis.referencing.crs.CoordinateReferenceSystem; | |||
import org.opengis.referencing.operation.MathTransform; | |||
import java.io.Closeable; | |||
import java.io.File; | |||
@@ -144,9 +152,35 @@ public final class GeoParser implements Closeable | |||
} | |||
} | |||
public List<Map<String, Object>> GetMapList() | |||
public String GetEPSGName() | |||
{ | |||
CheckSource(); | |||
CoordinateReferenceSystem sourceCS = source.getSchema().getCoordinateReferenceSystem(); | |||
return GeoConverter.EPSGName(sourceCS); | |||
} | |||
public List<Map<String, Object>> GetMapList(String targetFormat) | |||
{ | |||
CheckSource(); | |||
CoordinateReferenceSystem sourceCS = source.getSchema().getCoordinateReferenceSystem(); | |||
System.out.println("[GeoParser]: 源坐标系: " + GeoConverter.EPSGName(sourceCS)); | |||
CoordinateReferenceSystem targetCS = null; | |||
if(StringUtils.isNotEmpty(targetFormat)) | |||
targetCS = GeoConverter.CoordinateSystem(targetFormat); | |||
MathTransform transformer = null; | |||
if(null != targetCS && !GeoConverter.CoordinateSystemEquals(sourceCS, targetCS)) | |||
{ | |||
try | |||
{ | |||
transformer = CRS.findMathTransform(sourceCS, targetCS, true); | |||
System.out.println(StrUtil.format("[GeoParser]: 需要转换坐标系: {} -> {}", CRS.toSRS(sourceCS), CRS.toSRS(targetCS))); | |||
} | |||
catch(FactoryException e) | |||
{ | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
try { | |||
List<Map<String, Object>> ret = new ArrayList<>(); | |||
@@ -158,7 +192,13 @@ public final class GeoParser implements Closeable | |||
for (int i = 0; i < feature.getAttributeCount(); i++) { | |||
Object attribute = feature.getAttribute(i); | |||
if(attribute instanceof Geometry) | |||
attribute = ((Geometry) attribute).toText(); | |||
{ | |||
Geometry geometry = (Geometry) attribute; | |||
if(null == transformer) | |||
attribute = geometry.toText(); | |||
else | |||
attribute = JTS.transform(geometry, transformer).toText(); | |||
} | |||
map.put(columnMap.get(i), attribute); | |||
} | |||
ret.add(map); | |||
@@ -170,9 +210,9 @@ public final class GeoParser implements Closeable | |||
} | |||
} | |||
public <T> List<T> GetList(Class<T> clazz) | |||
public <T> List<T> GetList(Class<T> clazz, String targetFormat) | |||
{ | |||
List<Map<String, Object>> maps = GetMapList(); | |||
List<Map<String, Object>> maps = GetMapList(targetFormat); | |||
return maps.stream().map((x) -> BeanUtil.mapToBean(x, clazz, false, CopyOptions.create())).collect(Collectors.toList()); | |||
} | |||
} |
@@ -1,18 +1,15 @@ | |||
package com.ruoyi.common.geo; | |||
import cn.hutool.core.bean.BeanUtil; | |||
import cn.hutool.core.bean.copier.CopyOptions; | |||
import cn.hutool.core.io.IoUtil; | |||
import cn.hutool.core.lang.Assert; | |||
import org.geotools.data.FeatureWriter; | |||
import org.geotools.data.Transaction; | |||
import org.geotools.data.shapefile.ShapefileDataStore; | |||
import org.geotools.data.shapefile.ShapefileDataStoreFactory; | |||
import org.geotools.data.simple.SimpleFeatureIterator; | |||
import org.geotools.data.simple.SimpleFeatureSource; | |||
import org.geotools.feature.simple.SimpleFeatureTypeBuilder; | |||
import org.geotools.referencing.crs.DefaultGeographicCRS; | |||
import org.locationtech.jts.geom.Geometry; | |||
import org.locationtech.jts.geom.LineString; | |||
import org.locationtech.jts.geom.LinearRing; | |||
import org.locationtech.jts.geom.MultiLineString; | |||
@@ -28,7 +25,6 @@ import java.io.Closeable; | |||
import java.io.File; | |||
import java.io.Serializable; | |||
import java.nio.charset.Charset; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.HashMap; | |||
import java.util.LinkedHashMap; | |||
@@ -99,15 +95,15 @@ public final class GeoWriter implements Closeable | |||
Assert.notNull(writer, "请先打开写入"); | |||
} | |||
public void AddSchema(String name, Map<String, Class<?>> parms) | |||
public void AddSchema(String name, String cs, Map<String, Class<?>> parms) | |||
{ | |||
CheckDataStore(); | |||
try { | |||
SimpleFeatureTypeBuilder tBuilder = new SimpleFeatureTypeBuilder(); | |||
// 5、设置 -- WGS84:一个二维地理坐标参考系统,使用WGS84数据 | |||
tBuilder.setCRS(DefaultGeographicCRS.WGS84); | |||
tBuilder.setCRS(GeoConverter.CoordinateSystem(cs)); | |||
System.out.println("写入坐标系: " + cs); | |||
tBuilder.setName(name); | |||
parms.forEach(tBuilder::add); | |||
@@ -198,49 +194,49 @@ public final class GeoWriter implements Closeable | |||
if(value instanceof Point) | |||
return value; | |||
else | |||
return GeoCreator.PointByWKT(value.toString()); | |||
return GeoConverter.PointByWKT(value.toString()); | |||
} | |||
else if(MultiPoint.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof MultiPoint) | |||
return value; | |||
else | |||
return GeoCreator.MultiPointByWKT(value.toString()); | |||
return GeoConverter.MultiPointByWKT(value.toString()); | |||
} | |||
else if(LineString.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof LineString) | |||
return value; | |||
else | |||
return GeoCreator.LineStringByWKT(value.toString()); | |||
return GeoConverter.LineStringByWKT(value.toString()); | |||
} | |||
else if(MultiLineString.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof MultiLineString) | |||
return value; | |||
else | |||
return GeoCreator.MultiLineByWKT(value.toString()); | |||
return GeoConverter.MultiLineByWKT(value.toString()); | |||
} | |||
else if(Polygon.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof Polygon) | |||
return value; | |||
else | |||
return GeoCreator.PolygonByWKT(value.toString()); | |||
return GeoConverter.PolygonByWKT(value.toString()); | |||
} | |||
else if(MultiPolygon.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof MultiPolygon) | |||
return value; | |||
else | |||
return GeoCreator.MultiPolygonByWKT(value.toString()); | |||
return GeoConverter.MultiPolygonByWKT(value.toString()); | |||
} | |||
else if(LinearRing.class.isAssignableFrom(clazz)) | |||
{ | |||
if(value instanceof LinearRing) | |||
return value; | |||
else | |||
return GeoCreator.LinearRingByWKT(value.toString()); | |||
return GeoConverter.LinearRingByWKT(value.toString()); | |||
} | |||
else | |||
return value; | |||