From 4c140a47f9a798832b71a8913a84e8045211b3f7 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Sat, 17 Jan 2026 14:01:21 +0800
Subject: [PATCH] 工单新增

---
 drone-common/src/main/java/org/sxkj/common/utils/GeomUtils.java |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/drone-common/src/main/java/org/sxkj/common/utils/GeomUtils.java b/drone-common/src/main/java/org/sxkj/common/utils/GeomUtils.java
index b8222dd..dd075ff 100644
--- a/drone-common/src/main/java/org/sxkj/common/utils/GeomUtils.java
+++ b/drone-common/src/main/java/org/sxkj/common/utils/GeomUtils.java
@@ -1,9 +1,16 @@
 package org.sxkj.common.utils;
 
 import org.apache.commons.lang3.StringUtils;
-
+import org.geotools.geometry.jts.JTSFactoryFinder;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
 
 public class GeomUtils {
+
+	private static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
+	private static final WKTReader wktReader = new WKTReader(geometryFactory);
 
 	public static boolean isGeomInvalid(String geom) {
 		if (StringUtils.isBlank(geom)) {
@@ -12,4 +19,35 @@
 		String upper = geom.trim().toUpperCase();
 		return !upper.contains("POLYGON");
 	}
+
+	/**
+	 * 验证并转换几何数据,确保其有效
+	 * @param geom WKT格式的几何数据
+	 * @return 有效的几何数据,或null如果转换失败
+	 */
+	public static String validateAndFormatGeom(String geom) {
+		if (StringUtils.isBlank(geom)) {
+			return null;
+		}
+
+		try {
+			// 解析WKT字符串
+			Geometry geometry = wktReader.read(geom);
+
+			// 如果几何数据无效,尝试修复
+			if (!geometry.isValid()) {
+				geometry = geometry.buffer(0);
+			}
+
+			// 确保几何数据有效
+			if (geometry.isValid()) {
+				return geometry.toText();
+			} else {
+				return null;
+			}
+		} catch (ParseException e) {
+			// 解析失败
+			return null;
+		}
+	}
 }

--
Gitblit v1.9.3