You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2023/04/18 03:42:16 UTC

[sedona] branch master updated: [SEDONA-274] transplant FormatUtils to sedona-common (#819)

This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 1b73ccfd [SEDONA-274] transplant FormatUtils to sedona-common (#819)
1b73ccfd is described below

commit 1b73ccfd8a177709ef4f188b31ef8f3c03c073b0
Author: zongsi.zhang <kr...@gmail.com>
AuthorDate: Tue Apr 18 11:42:10 2023 +0800

    [SEDONA-274] transplant FormatUtils to sedona-common (#819)
---
 R/R/dependencies.R                                 |  4 +--
 .../org/apache/sedona/common/Constructors.java     | 22 +++++++++++++
 .../sedona/common}/enums/FileDataSplitter.java     |  2 +-
 .../apache/sedona/common}/enums/GeometryType.java  |  2 +-
 .../apache/sedona/common/utils}/FormatUtils.java   | 16 +++++----
 .../sedona/core/formatMapper/FormatMapper.java     |  5 +--
 .../sedona/core/formatMapper/GeoJsonReader.java    |  2 +-
 .../core/formatMapper/LineStringFormatMapper.java  |  4 +--
 .../core/formatMapper/PointFormatMapper.java       |  4 +--
 .../core/formatMapper/PolygonFormatMapper.java     |  4 +--
 .../core/formatMapper/RectangleFormatMapper.java   |  4 +--
 .../apache/sedona/core/formatMapper/WkbReader.java |  2 +-
 .../apache/sedona/core/formatMapper/WktReader.java |  2 +-
 .../showcase/EarthdataMapperRunnableExample.java   |  2 +-
 .../org/apache/sedona/core/showcase/Example.java   |  2 +-
 .../sedona/core/spatialRDD/LineStringRDD.java      |  2 +-
 .../apache/sedona/core/spatialRDD/PointRDD.java    |  2 +-
 .../apache/sedona/core/spatialRDD/PolygonRDD.java  |  2 +-
 .../sedona/core/spatialRDD/RectangleRDD.java       |  2 +-
 .../ScalaEarthdataMapperRunnableExample.scala      |  3 +-
 .../apache/sedona/core/showcase/ScalaExample.scala |  3 +-
 .../apache/sedona/core/io/EarthdataHDFTest.java    |  3 +-
 .../sedona/core/spatialOperator/JoinTestBase.java  |  2 +-
 .../core/spatialOperator/LineStringKnnTest.java    |  2 +-
 .../core/spatialOperator/LineStringRangeTest.java  |  2 +-
 .../sedona/core/spatialOperator/PointKnnTest.java  |  2 +-
 .../core/spatialOperator/PointRangeTest.java       |  2 +-
 .../core/spatialOperator/PolygonKnnTest.java       |  2 +-
 .../core/spatialOperator/PolygonRangeTest.java     |  2 +-
 .../core/spatialOperator/RectangleKnnTest.java     |  2 +-
 .../core/spatialOperator/RectangleRangeTest.java   |  2 +-
 .../sedona/core/spatialRDD/PolygonRDDTest.java     |  2 +-
 .../sedona/core/spatialRDD/SpatialRDDTestBase.java |  2 +-
 .../core/spatialRDD/SpatialRDDWriterTest.java      |  2 +-
 .../sedona/core/utils/CRSTransformationTest.java   |  2 +-
 .../scala/org/apache/sedona/core/scalaTest.scala   |  3 +-
 docs/tutorial/flink/sql.md                         |  8 ++---
 .../sedona/flink/expressions/Constructors.java     |  6 ++--
 python/sedona/register/java_libs.py                |  2 +-
 .../sql/sedona_sql/expressions/Constructors.scala  | 38 +++++++---------------
 .../org/apache/sedona/sql/adapterTestScala.scala   |  3 +-
 .../org/apache/sedona/viz/showcase/Example.java    |  2 +-
 .../apache/sedona/viz/showcase/ScalaExample.scala  |  3 +-
 .../java/org/apache/sedona/viz/NYCTripTest.java    |  2 +-
 .../java/org/apache/sedona/viz/VizTestBase.java    |  2 +-
 .../org/apache/sedona/viz/rdd/scalaTest.scala      |  3 +-
 46 files changed, 103 insertions(+), 89 deletions(-)

diff --git a/R/R/dependencies.R b/R/R/dependencies.R
index dcd76cff..bead3f09 100644
--- a/R/R/dependencies.R
+++ b/R/R/dependencies.R
@@ -84,7 +84,7 @@ sedona_initialize_spark_connection <- function(sc) {
     "semicolon"
   )) {
     sc$state$enums$delimiter[[x]] <- invoke_static(
-      sc, "org.apache.sedona.core.enums.FileDataSplitter", toupper(x)
+      sc, "org.apache.sedona.common.enums.FileDataSplitter", toupper(x)
     )
   }
   for (x in c(
@@ -99,7 +99,7 @@ sedona_initialize_spark_connection <- function(sc) {
     "rectangle"
   )) {
     sc$state$enums$geometry_type[[x]] <- invoke_static(
-      sc, "org.apache.sedona.core.enums.GeometryType", toupper(x)
+      sc, "org.apache.sedona.common.enums.GeometryType", toupper(x)
     )
   }
   for (x in c("quadtree", "rtree")) {
diff --git a/common/src/main/java/org/apache/sedona/common/Constructors.java b/common/src/main/java/org/apache/sedona/common/Constructors.java
index e5384471..4cc5c48e 100644
--- a/common/src/main/java/org/apache/sedona/common/Constructors.java
+++ b/common/src/main/java/org/apache/sedona/common/Constructors.java
@@ -13,6 +13,9 @@
  */
 package org.apache.sedona.common;
 
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.locationtech.jts.geom.Coordinate;
 import org.locationtech.jts.geom.Geometry;
 import org.locationtech.jts.geom.GeometryFactory;
@@ -78,4 +81,23 @@ public class Constructors {
         GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), srid);
         return geometryFactory.createPoint(new Coordinate(x, y, z));
     }
+
+    public static Geometry geomFromText(String geomString, String geomFormat, GeometryType geometryType) {
+        FileDataSplitter fileDataSplitter = FileDataSplitter.getFileDataSplitter(geomFormat);
+        FormatUtils<Geometry> formatMapper = new FormatUtils<>(fileDataSplitter, false, geometryType);
+        try {
+            return formatMapper.readGeometry(geomString);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static Geometry geomFromText(String geomString, FileDataSplitter fileDataSplitter) {
+        FormatUtils<Geometry> formatMapper = new FormatUtils<>(fileDataSplitter, false);
+        try {
+            return formatMapper.readGeometry(geomString);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
diff --git a/core/src/main/java/org/apache/sedona/core/enums/FileDataSplitter.java b/common/src/main/java/org/apache/sedona/common/enums/FileDataSplitter.java
similarity index 98%
rename from core/src/main/java/org/apache/sedona/core/enums/FileDataSplitter.java
rename to common/src/main/java/org/apache/sedona/common/enums/FileDataSplitter.java
index 73c8706f..9eb84994 100755
--- a/core/src/main/java/org/apache/sedona/core/enums/FileDataSplitter.java
+++ b/common/src/main/java/org/apache/sedona/common/enums/FileDataSplitter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sedona.core.enums;
+package org.apache.sedona.common.enums;
 
 import java.io.Serializable;
 import java.util.HashMap;
diff --git a/core/src/main/java/org/apache/sedona/core/enums/GeometryType.java b/common/src/main/java/org/apache/sedona/common/enums/GeometryType.java
similarity index 97%
rename from core/src/main/java/org/apache/sedona/core/enums/GeometryType.java
rename to common/src/main/java/org/apache/sedona/common/enums/GeometryType.java
index 20d0152f..ba2fe97c 100755
--- a/core/src/main/java/org/apache/sedona/core/enums/GeometryType.java
+++ b/common/src/main/java/org/apache/sedona/common/enums/GeometryType.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sedona.core.enums;
+package org.apache.sedona.common.enums;
 
 import java.io.Serializable;
 
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/FormatUtils.java b/common/src/main/java/org/apache/sedona/common/utils/FormatUtils.java
similarity index 97%
rename from core/src/main/java/org/apache/sedona/core/formatMapper/FormatUtils.java
rename to common/src/main/java/org/apache/sedona/common/utils/FormatUtils.java
index 0b0aca57..f56835fb 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/FormatUtils.java
+++ b/common/src/main/java/org/apache/sedona/common/utils/FormatUtils.java
@@ -11,16 +11,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sedona.core.formatMapper;
+package org.apache.sedona.common.utils;
 
-import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
 import org.locationtech.jts.geom.*;
 import org.locationtech.jts.io.ParseException;
 import org.locationtech.jts.io.WKBReader;
 import org.locationtech.jts.io.WKTReader;
 import org.locationtech.jts.operation.valid.IsValidOp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.wololo.geojson.Feature;
 import org.wololo.geojson.GeoJSONFactory;
 import org.wololo.jts2geojson.GeoJSONReader;
@@ -34,7 +36,7 @@ import java.util.*;
  * This format mapper is isolated on purpose for the sake of sharing across Spark and Flink
  */
 public class FormatUtils<T extends Geometry> implements Serializable {
-    final static Logger logger = Logger.getLogger(FormatUtils.class);
+    final static Logger logger = LoggerFactory.getLogger(FormatUtils.class);
     /**
      * The start offset.
      */
@@ -66,12 +68,12 @@ public class FormatUtils<T extends Geometry> implements Serializable {
     /**
      * Allow mapping of invalid geometries.
      */
-    boolean allowTopologicallyInvalidGeometries;
+    public boolean allowTopologicallyInvalidGeometries;
     // For some unknown reasons, the wkb reader cannot be used in transient variable like the wkt reader.
     /**
      * Crash on syntactically invalid geometries or skip them.
      */
-    boolean skipSyntacticallyInvalidGeometries;
+    public boolean skipSyntacticallyInvalidGeometries;
 
     /**
      * Instantiates a new format mapper.
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/FormatMapper.java b/core/src/main/java/org/apache/sedona/core/formatMapper/FormatMapper.java
index 2a6c1516..1ca5fa59 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/FormatMapper.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/FormatMapper.java
@@ -19,8 +19,9 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.locationtech.jts.geom.Geometry;
 
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/GeoJsonReader.java b/core/src/main/java/org/apache/sedona/core/formatMapper/GeoJsonReader.java
index d4653027..c3166f15 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/GeoJsonReader.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/GeoJsonReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.spatialRDD.SpatialRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/LineStringFormatMapper.java b/core/src/main/java/org/apache/sedona/core/formatMapper/LineStringFormatMapper.java
index d1711fb8..d8736925 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/LineStringFormatMapper.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/LineStringFormatMapper.java
@@ -19,8 +19,8 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
 
 public class LineStringFormatMapper
         extends FormatMapper
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/PointFormatMapper.java b/core/src/main/java/org/apache/sedona/core/formatMapper/PointFormatMapper.java
index c9b74ea9..c8548fc4 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/PointFormatMapper.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/PointFormatMapper.java
@@ -19,8 +19,8 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
 
 public class PointFormatMapper
         extends FormatMapper
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/PolygonFormatMapper.java b/core/src/main/java/org/apache/sedona/core/formatMapper/PolygonFormatMapper.java
index d442a77c..f9fea172 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/PolygonFormatMapper.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/PolygonFormatMapper.java
@@ -19,8 +19,8 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
 
 public class PolygonFormatMapper
         extends FormatMapper
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/RectangleFormatMapper.java b/core/src/main/java/org/apache/sedona/core/formatMapper/RectangleFormatMapper.java
index e9352652..4884aa60 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/RectangleFormatMapper.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/RectangleFormatMapper.java
@@ -19,8 +19,8 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
 
 public class RectangleFormatMapper
         extends FormatMapper
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/WkbReader.java b/core/src/main/java/org/apache/sedona/core/formatMapper/WkbReader.java
index f7912b7e..a0cc9ed5 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/WkbReader.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/WkbReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.spatialRDD.SpatialRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/java/org/apache/sedona/core/formatMapper/WktReader.java b/core/src/main/java/org/apache/sedona/core/formatMapper/WktReader.java
index 86b0c98b..051b02e0 100644
--- a/core/src/main/java/org/apache/sedona/core/formatMapper/WktReader.java
+++ b/core/src/main/java/org/apache/sedona/core/formatMapper/WktReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.formatMapper;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.spatialRDD.SpatialRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/java/org/apache/sedona/core/showcase/EarthdataMapperRunnableExample.java b/core/src/main/java/org/apache/sedona/core/showcase/EarthdataMapperRunnableExample.java
index ed86b1f6..a8ba812e 100644
--- a/core/src/main/java/org/apache/sedona/core/showcase/EarthdataMapperRunnableExample.java
+++ b/core/src/main/java/org/apache/sedona/core/showcase/EarthdataMapperRunnableExample.java
@@ -21,7 +21,7 @@ package org.apache.sedona.core.showcase;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper;
 import org.apache.sedona.core.serde.SedonaKryoRegistrator;
diff --git a/core/src/main/java/org/apache/sedona/core/showcase/Example.java b/core/src/main/java/org/apache/sedona/core/showcase/Example.java
index 358fe743..f1bf7dd9 100644
--- a/core/src/main/java/org/apache/sedona/core/showcase/Example.java
+++ b/core/src/main/java/org/apache/sedona/core/showcase/Example.java
@@ -21,7 +21,7 @@ package org.apache.sedona.core.showcase;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.GridType;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.formatMapper.shapefileParser.ShapefileRDD;
diff --git a/core/src/main/java/org/apache/sedona/core/spatialRDD/LineStringRDD.java b/core/src/main/java/org/apache/sedona/core/spatialRDD/LineStringRDD.java
index 25bc7b1e..48650ad2 100644
--- a/core/src/main/java/org/apache/sedona/core/spatialRDD/LineStringRDD.java
+++ b/core/src/main/java/org/apache/sedona/core/spatialRDD/LineStringRDD.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.spatialRDD;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.formatMapper.FormatMapper;
 import org.apache.sedona.core.formatMapper.LineStringFormatMapper;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/core/src/main/java/org/apache/sedona/core/spatialRDD/PointRDD.java b/core/src/main/java/org/apache/sedona/core/spatialRDD/PointRDD.java
index c4409b59..ca4c560c 100644
--- a/core/src/main/java/org/apache/sedona/core/spatialRDD/PointRDD.java
+++ b/core/src/main/java/org/apache/sedona/core/spatialRDD/PointRDD.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.spatialRDD;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.formatMapper.FormatMapper;
 import org.apache.sedona.core.formatMapper.PointFormatMapper;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/core/src/main/java/org/apache/sedona/core/spatialRDD/PolygonRDD.java b/core/src/main/java/org/apache/sedona/core/spatialRDD/PolygonRDD.java
index 1df75635..c85c510c 100644
--- a/core/src/main/java/org/apache/sedona/core/spatialRDD/PolygonRDD.java
+++ b/core/src/main/java/org/apache/sedona/core/spatialRDD/PolygonRDD.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.spatialRDD;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.formatMapper.FormatMapper;
 import org.apache.sedona.core.formatMapper.PolygonFormatMapper;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/core/src/main/java/org/apache/sedona/core/spatialRDD/RectangleRDD.java b/core/src/main/java/org/apache/sedona/core/spatialRDD/RectangleRDD.java
index 6b03ff4c..2e247a37 100644
--- a/core/src/main/java/org/apache/sedona/core/spatialRDD/RectangleRDD.java
+++ b/core/src/main/java/org/apache/sedona/core/spatialRDD/RectangleRDD.java
@@ -19,7 +19,7 @@
 
 package org.apache.sedona.core.spatialRDD;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.formatMapper.RectangleFormatMapper;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/scala/org/apache/sedona/core/showcase/ScalaEarthdataMapperRunnableExample.scala b/core/src/main/scala/org/apache/sedona/core/showcase/ScalaEarthdataMapperRunnableExample.scala
index 64b70239..c1f8f249 100644
--- a/core/src/main/scala/org/apache/sedona/core/showcase/ScalaEarthdataMapperRunnableExample.scala
+++ b/core/src/main/scala/org/apache/sedona/core/showcase/ScalaEarthdataMapperRunnableExample.scala
@@ -20,7 +20,8 @@
 package org.apache.sedona.core.showcase
 
 import org.apache.log4j.{Level, Logger}
-import org.apache.sedona.core.enums.{FileDataSplitter, IndexType}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.IndexType
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper
 import org.apache.sedona.core.spatialOperator.RangeQuery
 import org.apache.sedona.core.spatialOperator.SpatialPredicate
diff --git a/core/src/main/scala/org/apache/sedona/core/showcase/ScalaExample.scala b/core/src/main/scala/org/apache/sedona/core/showcase/ScalaExample.scala
index 9a5dde5a..ee730fa5 100644
--- a/core/src/main/scala/org/apache/sedona/core/showcase/ScalaExample.scala
+++ b/core/src/main/scala/org/apache/sedona/core/showcase/ScalaExample.scala
@@ -20,7 +20,8 @@
 package org.apache.sedona.core.showcase
 
 import org.apache.log4j.{Level, Logger}
-import org.apache.sedona.core.enums.{FileDataSplitter, GridType, IndexType}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.{GridType, IndexType}
 import org.apache.sedona.core.formatMapper.shapefileParser.ShapefileRDD
 import org.apache.sedona.core.serde.SedonaKryoRegistrator
 import org.apache.sedona.core.spatialOperator.SpatialPredicate
diff --git a/core/src/test/java/org/apache/sedona/core/io/EarthdataHDFTest.java b/core/src/test/java/org/apache/sedona/core/io/EarthdataHDFTest.java
index 4debeef1..b0d7c36e 100644
--- a/core/src/test/java/org/apache/sedona/core/io/EarthdataHDFTest.java
+++ b/core/src/test/java/org/apache/sedona/core/io/EarthdataHDFTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.io;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper;
 import org.apache.sedona.core.spatialOperator.RangeQuery;
@@ -31,7 +31,6 @@ import org.apache.spark.storage.StorageLevel;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
-import org.junit.Test;
 import org.locationtech.jts.geom.Envelope;
 
 // TODO: Auto-generated Javadoc
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/JoinTestBase.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/JoinTestBase.java
index 53173ebe..2f9dd551 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/JoinTestBase.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/JoinTestBase.java
@@ -19,7 +19,7 @@
 package org.apache.sedona.core.spatialOperator;
 
 import org.apache.sedona.core.TestBase;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.GridType;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.spatialRDD.LineStringRDD;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringKnnTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringKnnTest.java
index 01cc9c65..155d17d6 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringKnnTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringKnnTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.spatialRDD.LineStringRDD;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringRangeTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringRangeTest.java
index 1cb3ca98..8f74e6c3 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringRangeTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/LineStringRangeTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.spatialRDD.LineStringRDD;
 import org.apache.sedona.core.spatialRDD.LineStringRDDTest;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/PointKnnTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/PointKnnTest.java
index 1f15c541..1af99ad3 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/PointKnnTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/PointKnnTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.knnJudgement.GeometryDistanceComparator;
 import org.apache.sedona.core.spatialRDD.PointRDD;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/PointRangeTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/PointRangeTest.java
index 78d4eb6d..93aa7de3 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/PointRangeTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/PointRangeTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.spatialRDD.PointRDD;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonKnnTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonKnnTest.java
index c222aaa8..0d6e7b91 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonKnnTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonKnnTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.knnJudgement.GeometryDistanceComparator;
 import org.apache.sedona.core.spatialRDD.PolygonRDD;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonRangeTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonRangeTest.java
index dc599759..f526d417 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonRangeTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/PolygonRangeTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.spatialRDD.PolygonRDD;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleKnnTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleKnnTest.java
index f7a86ca5..7f5184e2 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleKnnTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleKnnTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.knnJudgement.GeometryDistanceComparator;
 import org.apache.sedona.core.spatialRDD.RectangleRDD;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleRangeTest.java b/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleRangeTest.java
index 794d1436..d5fbe7ac 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleRangeTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialOperator/RectangleRangeTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.spatialOperator;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.rangeJudgement.RangeFilter;
 import org.apache.sedona.core.rangeJudgement.RangeFilterUsingIndex;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialRDD/PolygonRDDTest.java b/core/src/test/java/org/apache/sedona/core/spatialRDD/PolygonRDDTest.java
index dfae6cc5..49b0d397 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialRDD/PolygonRDDTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialRDD/PolygonRDDTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.sedona.core.spatialRDD;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.spark.storage.StorageLevel;
 import org.junit.AfterClass;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDTestBase.java b/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDTestBase.java
index c0f5b3a8..a37ae247 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDTestBase.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDTestBase.java
@@ -19,7 +19,7 @@
 package org.apache.sedona.core.spatialRDD;
 
 import org.apache.sedona.core.TestBase;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.GridType;
 import org.apache.sedona.core.enums.IndexType;
 import org.locationtech.jts.geom.Envelope;
diff --git a/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDWriterTest.java b/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDWriterTest.java
index 0e22c3f7..123f9e9f 100644
--- a/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDWriterTest.java
+++ b/core/src/test/java/org/apache/sedona/core/spatialRDD/SpatialRDDWriterTest.java
@@ -22,7 +22,7 @@ package org.apache.sedona.core.spatialRDD;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.NullArgumentException;
 import org.apache.sedona.common.utils.GeomUtils;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.spark.storage.StorageLevel;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
diff --git a/core/src/test/java/org/apache/sedona/core/utils/CRSTransformationTest.java b/core/src/test/java/org/apache/sedona/core/utils/CRSTransformationTest.java
index 6044e35e..398c73aa 100644
--- a/core/src/test/java/org/apache/sedona/core/utils/CRSTransformationTest.java
+++ b/core/src/test/java/org/apache/sedona/core/utils/CRSTransformationTest.java
@@ -20,7 +20,7 @@ package org.apache.sedona.core.utils;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.GridType;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.knnJudgement.GeometryDistanceComparator;
diff --git a/core/src/test/scala/org/apache/sedona/core/scalaTest.scala b/core/src/test/scala/org/apache/sedona/core/scalaTest.scala
index 18206adc..78492bb2 100644
--- a/core/src/test/scala/org/apache/sedona/core/scalaTest.scala
+++ b/core/src/test/scala/org/apache/sedona/core/scalaTest.scala
@@ -19,7 +19,8 @@
 
 package org.apache.sedona.core
 
-import org.apache.sedona.core.enums.{FileDataSplitter, GridType, IndexType, JoinBuildSide}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.{GridType, IndexType, JoinBuildSide}
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper
 import org.apache.sedona.core.spatialOperator.JoinQuery.JoinParams
 import org.apache.sedona.core.spatialOperator.SpatialPredicate
diff --git a/docs/tutorial/flink/sql.md b/docs/tutorial/flink/sql.md
index 720d1aca..d4fc21fe 100644
--- a/docs/tutorial/flink/sql.md
+++ b/docs/tutorial/flink/sql.md
@@ -396,7 +396,7 @@ The output will be
 * Create a Geometry from a WKT string
 
 ```java
-import org.apache.sedona.core.formatMapper.FormatUtils;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.locationtech.jts.geom.Geometry;
 
 DataStream<Geometry> geometries = text.map(new MapFunction<String, Geometry>() {
@@ -412,7 +412,7 @@ DataStream<Geometry> geometries = text.map(new MapFunction<String, Geometry>() {
 * Create a Point from a String `1.1, 2.2`. Use `,` as the delimiter.
 
 ```java
-import org.apache.sedona.core.formatMapper.FormatUtils;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.locationtech.jts.geom.Geometry;
 
 DataStream<Geometry> geometries = text.map(new MapFunction<String, Geometry>() {
@@ -428,7 +428,7 @@ DataStream<Geometry> geometries = text.map(new MapFunction<String, Geometry>() {
 * Create a Polygon from a String `1.1, 1.1, 10.1, 10.1`. This is a rectangle with (1.1, 1.1) and (10.1, 10.1) as their min/max corners.
 
 ```java
-import org.apache.sedona.core.formatMapper.FormatUtils;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.locationtech.jts.geom.GeometryFactory;
 import org.locationtech.jts.geom.Geometry;
 
@@ -455,7 +455,7 @@ DataStream<Geometry> geometries = text.map(new MapFunction<String, Geometry>() {
 Put a geometry in a Flink Row to a `geomStream`. Note that you can put other attributes in Row as well. This example uses a constant value `myName` for all geometries.
 
 ```java
-import org.apache.sedona.core.formatMapper.FormatUtils;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.locationtech.jts.geom.Geometry;
 import org.apache.flink.types.Row;
 
diff --git a/flink/src/main/java/org/apache/sedona/flink/expressions/Constructors.java b/flink/src/main/java/org/apache/sedona/flink/expressions/Constructors.java
index d6583ed8..08cc0ed9 100644
--- a/flink/src/main/java/org/apache/sedona/flink/expressions/Constructors.java
+++ b/flink/src/main/java/org/apache/sedona/flink/expressions/Constructors.java
@@ -15,9 +15,9 @@ package org.apache.sedona.flink.expressions;
 
 import org.apache.flink.table.annotation.DataTypeHint;
 import org.apache.flink.table.functions.ScalarFunction;
-import org.apache.sedona.core.enums.FileDataSplitter;
-import org.apache.sedona.core.enums.GeometryType;
-import org.apache.sedona.core.formatMapper.FormatUtils;
+import org.apache.sedona.common.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.GeometryType;
+import org.apache.sedona.common.utils.FormatUtils;
 import org.apache.spark.sql.sedona_sql.expressions.geohash.GeoHashDecoder;
 import org.locationtech.jts.geom.Coordinate;
 import org.locationtech.jts.geom.Geometry;
diff --git a/python/sedona/register/java_libs.py b/python/sedona/register/java_libs.py
index c93b59d9..7db3c443 100644
--- a/python/sedona/register/java_libs.py
+++ b/python/sedona/register/java_libs.py
@@ -33,7 +33,7 @@ class SedonaJvmLib(Enum):
     LineStringRDD = "org.apache.sedona.core.spatialRDD.LineStringRDD"
     RectangleRDD = "org.apache.sedona.core.spatialRDD.RectangleRDD"
     SpatialRDD = "org.apache.sedona.core.spatialRDD.SpatialRDD"
-    FileDataSplitter = "org.apache.sedona.core.enums.FileDataSplitter"
+    FileDataSplitter = "org.apache.sedona.common.enums.FileDataSplitter"
     GeoJsonReader = "org.apache.sedona.core.formatMapper.GeoJsonReader"
     ShapeFileReader = "org.apache.sedona.core.formatMapper.shapefileParser.ShapefileReader"
     SedonaSQLRegistrator = "org.apache.sedona.sql.utils.SedonaSQLRegistrator"
diff --git a/sql/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/Constructors.scala b/sql/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/Constructors.scala
index 3505899f..188ab906 100644
--- a/sql/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/Constructors.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/Constructors.scala
@@ -18,25 +18,21 @@
  */
 package org.apache.spark.sql.sedona_sql.expressions
 
-import org.apache.sedona.core.enums.{FileDataSplitter, GeometryType}
-import org.apache.sedona.core.formatMapper.FormatMapper
+import org.apache.sedona.common.Constructors
+import org.apache.sedona.common.enums.{FileDataSplitter, GeometryType}
 import org.apache.sedona.sql.utils.GeometrySerializer
 import org.apache.spark.sql.catalyst.InternalRow
-import org.apache.spark.sql.catalyst.expressions.Expression
+import org.apache.spark.sql.catalyst.expressions.{Expression, ImplicitCastInputTypes}
 import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback
-import org.apache.spark.sql.catalyst.util.GenericArrayData
 import org.apache.spark.sql.sedona_sql.UDT.GeometryUDT
 import org.apache.spark.sql.sedona_sql.expressions.geohash.GeoHashDecoder
 import org.apache.spark.sql.sedona_sql.expressions.implicits.GeometryEnhancer
-import org.apache.spark.sql.types.{AbstractDataType, DataType, DoubleType, IntegerType, StringType, TypeCollection}
+import org.apache.spark.sql.types._
 import org.apache.spark.unsafe.types.UTF8String
 import org.locationtech.jts.geom.{Coordinate, GeometryFactory}
 import org.locationtech.jts.io.WKBReader
 import org.locationtech.jts.io.gml2.GMLReader
 import org.locationtech.jts.io.kml.KMLReader
-import org.apache.spark.sql.catalyst.expressions.ImplicitCastInputTypes
-import org.apache.sedona.common.Constructors
-import org.apache.spark.sql.types.BinaryType
 
 /**
   * Return a point from a string. The string must be plain string and each coordinate must be separated by a delimiter.
@@ -54,9 +50,7 @@ case class ST_PointFromText(inputExpressions: Seq[Expression])
   override def eval(inputRow: InternalRow): Any = {
     val geomString = inputExpressions(0).eval(inputRow).asInstanceOf[UTF8String].toString
     val geomFormat = inputExpressions(1).eval(inputRow).asInstanceOf[UTF8String].toString
-    var fileDataSplitter = FileDataSplitter.getFileDataSplitter(geomFormat)
-    var formatMapper = new FormatMapper(fileDataSplitter, false, GeometryType.POINT)
-    var geometry = formatMapper.readGeometry(geomString)
+    val geometry = Constructors.geomFromText(geomString, geomFormat, GeometryType.POINT)
     GeometrySerializer.serialize(geometry)
   }
 
@@ -87,9 +81,7 @@ case class ST_PolygonFromText(inputExpressions: Seq[Expression])
     val geomString = inputExpressions(0).eval(inputRow).asInstanceOf[UTF8String].toString
     val geomFormat = inputExpressions(1).eval(inputRow).asInstanceOf[UTF8String].toString
 
-    var fileDataSplitter = FileDataSplitter.getFileDataSplitter(geomFormat)
-    var formatMapper = new FormatMapper(fileDataSplitter, false, GeometryType.POLYGON)
-    var geometry = formatMapper.readGeometry(geomString)
+    var geometry = Constructors.geomFromText(geomString, geomFormat, GeometryType.POLYGON)
     GeometrySerializer.serialize(geometry)
   }
 
@@ -119,9 +111,8 @@ case class ST_LineFromText(inputExpressions: Seq[Expression])
   override def eval(inputRow: InternalRow): Any = {
     val lineString = inputExpressions(0).eval(inputRow).asInstanceOf[UTF8String].toString
 
-    var fileDataSplitter = FileDataSplitter.WKT
-    var formatMapper = new FormatMapper(fileDataSplitter, false)
-    var geometry = formatMapper.readGeometry(lineString)
+    val fileDataSplitter = FileDataSplitter.WKT
+    val geometry = Constructors.geomFromText(lineString, fileDataSplitter)
     if(geometry.getGeometryType.contains("LineString")) {
       GeometrySerializer.serialize(geometry)
     } else {
@@ -156,9 +147,7 @@ case class ST_LineStringFromText(inputExpressions: Seq[Expression])
     val geomString = inputExpressions(0).eval(inputRow).asInstanceOf[UTF8String].toString
     val geomFormat = inputExpressions(1).eval(inputRow).asInstanceOf[UTF8String].toString
 
-    var fileDataSplitter = FileDataSplitter.getFileDataSplitter(geomFormat)
-    var formatMapper = new FormatMapper(fileDataSplitter, false, GeometryType.LINESTRING)
-    var geometry = formatMapper.readGeometry(geomString)
+    val geometry = Constructors.geomFromText(geomString, geomFormat, GeometryType.LINESTRING)
 
     GeometrySerializer.serialize(geometry)
   }
@@ -219,9 +208,7 @@ case class ST_GeomFromWKB(inputExpressions: Seq[Expression])
     (inputExpressions.head.eval(inputRow)) match {
       case (geomString: UTF8String) => {
         // Parse UTF-8 encoded wkb string
-        val fileDataSplitter = FileDataSplitter.WKB
-        val formatMapper = new FormatMapper(fileDataSplitter, false)
-        formatMapper.readGeometry(geomString.toString).toGenericArrayData
+        Constructors.geomFromText(geomString.toString, FileDataSplitter.WKB).toGenericArrayData
       }
       case (wkb: Array[Byte]) => {
         // convert raw wkb byte array to geometry
@@ -257,10 +244,7 @@ case class ST_GeomFromGeoJSON(inputExpressions: Seq[Expression])
 
   override def eval(inputRow: InternalRow): Any = {
     val geomString = inputExpressions.head.eval(inputRow).asInstanceOf[UTF8String].toString
-
-    var fileDataSplitter = FileDataSplitter.GEOJSON
-    var formatMapper = new FormatMapper(fileDataSplitter, false)
-    var geometry = formatMapper.readGeometry(geomString)
+    val geometry = Constructors.geomFromText(geomString, FileDataSplitter.GEOJSON)
     // If the user specify a bunch of attributes to go with each geometry, we need to store all of them in this geometry
     if (inputExpressions.length > 1) {
       geometry.setUserData(generateUserData(minInputLength, inputExpressions, inputRow))
diff --git a/sql/src/test/scala/org/apache/sedona/sql/adapterTestScala.scala b/sql/src/test/scala/org/apache/sedona/sql/adapterTestScala.scala
index 9f236812..2fb58a82 100644
--- a/sql/src/test/scala/org/apache/sedona/sql/adapterTestScala.scala
+++ b/sql/src/test/scala/org/apache/sedona/sql/adapterTestScala.scala
@@ -19,7 +19,8 @@
 
 package org.apache.sedona.sql
 
-import org.apache.sedona.core.enums.{FileDataSplitter, GridType, IndexType}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.{GridType, IndexType}
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper
 import org.apache.sedona.core.formatMapper.shapefileParser.ShapefileReader
 import org.apache.sedona.core.spatialOperator.JoinQuery
diff --git a/viz/src/main/java/org/apache/sedona/viz/showcase/Example.java b/viz/src/main/java/org/apache/sedona/viz/showcase/Example.java
index a228efb1..990129cc 100644
--- a/viz/src/main/java/org/apache/sedona/viz/showcase/Example.java
+++ b/viz/src/main/java/org/apache/sedona/viz/showcase/Example.java
@@ -20,7 +20,7 @@ package org.apache.sedona.viz.showcase;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.enums.GridType;
 import org.apache.sedona.core.enums.IndexType;
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper;
diff --git a/viz/src/main/scala/org/apache/sedona/viz/showcase/ScalaExample.scala b/viz/src/main/scala/org/apache/sedona/viz/showcase/ScalaExample.scala
index 7365e47f..f159474f 100644
--- a/viz/src/main/scala/org/apache/sedona/viz/showcase/ScalaExample.scala
+++ b/viz/src/main/scala/org/apache/sedona/viz/showcase/ScalaExample.scala
@@ -23,7 +23,8 @@ import java.io.FileInputStream
 import java.util.Properties
 
 import org.apache.log4j.{Level, Logger}
-import org.apache.sedona.core.enums.{FileDataSplitter, GridType, IndexType}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.{GridType, IndexType}
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper
 import org.apache.sedona.core.spatialOperator.JoinQuery
 import org.apache.sedona.core.spatialRDD.{PointRDD, PolygonRDD, RectangleRDD}
diff --git a/viz/src/test/java/org/apache/sedona/viz/NYCTripTest.java b/viz/src/test/java/org/apache/sedona/viz/NYCTripTest.java
index 46136af7..78e33e37 100644
--- a/viz/src/test/java/org/apache/sedona/viz/NYCTripTest.java
+++ b/viz/src/test/java/org/apache/sedona/viz/NYCTripTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.sedona.viz;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.core.spatialRDD.PointRDD;
 import org.apache.sedona.viz.core.ImageGenerator;
 import org.apache.sedona.viz.extension.visualizationEffect.HeatMap;
diff --git a/viz/src/test/java/org/apache/sedona/viz/VizTestBase.java b/viz/src/test/java/org/apache/sedona/viz/VizTestBase.java
index d8253a5d..2a96610d 100644
--- a/viz/src/test/java/org/apache/sedona/viz/VizTestBase.java
+++ b/viz/src/test/java/org/apache/sedona/viz/VizTestBase.java
@@ -18,7 +18,7 @@
  */
 package org.apache.sedona.viz;
 
-import org.apache.sedona.core.enums.FileDataSplitter;
+import org.apache.sedona.common.enums.FileDataSplitter;
 import org.apache.sedona.viz.core.Serde.SedonaVizKryoRegistrator;
 import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
diff --git a/viz/src/test/scala/org/apache/sedona/viz/rdd/scalaTest.scala b/viz/src/test/scala/org/apache/sedona/viz/rdd/scalaTest.scala
index 3abdf94c..12d248bb 100644
--- a/viz/src/test/scala/org/apache/sedona/viz/rdd/scalaTest.scala
+++ b/viz/src/test/scala/org/apache/sedona/viz/rdd/scalaTest.scala
@@ -24,7 +24,8 @@ import java.util.Properties
 
 import org.locationtech.jts.geom.Envelope
 import org.apache.log4j.{Level, Logger}
-import org.apache.sedona.core.enums.{FileDataSplitter, GridType, IndexType}
+import org.apache.sedona.common.enums.FileDataSplitter
+import org.apache.sedona.core.enums.{GridType, IndexType}
 import org.apache.sedona.core.formatMapper.EarthdataHDFPointMapper
 import org.apache.sedona.core.spatialOperator.JoinQuery
 import org.apache.sedona.core.spatialRDD.{PointRDD, PolygonRDD, RectangleRDD}