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 2020/10/05 00:46:26 UTC

[incubator-sedona] 01/02: Change all JTS paths to org.locationtech.jts

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

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

commit bf3163cd3bac33c8fd1e4497ff621d777e8b9afc
Author: Jia Yu <ji...@apache.org>
AuthorDate: Sun Oct 4 17:41:44 2020 -0700

    Change all JTS paths to org.locationtech.jts
---
 .gitmodules                                        |  3 +
 core/pom.xml                                       | 11 ++--
 .../formatMapper/EarthdataHDFPointMapper.java      |  8 +--
 .../geospark/formatMapper/FormatMapper.java        | 22 +++----
 .../geospark/formatMapper/GeoJsonReader.java       |  2 +-
 .../geospark/formatMapper/RddReader.java           |  2 +-
 .../geospark/formatMapper/WkbReader.java           |  2 +-
 .../geospark/formatMapper/WktReader.java           |  2 +-
 .../formatMapper/shapefileParser/ShapefileRDD.java | 16 ++---
 .../shapefileParser/ShapefileReader.java           | 16 ++---
 .../parseUtils/shp/MultiPointParser.java           |  8 +--
 .../parseUtils/shp/PointParser.java                |  8 +--
 .../parseUtils/shp/PolyLineParser.java             |  8 +--
 .../parseUtils/shp/PolygonParser.java              | 10 ++--
 .../parseUtils/shp/ShapeParser.java                |  6 +-
 .../shapefileParser/parseUtils/shp/ShapeSerde.java | 16 ++---
 .../shapefileParser/parseUtils/shp/ShapeType.java  |  2 +-
 .../shapefileParser/shapes/PrimitiveShape.java     |  4 +-
 .../geospark/geometryObjects/Circle.java           | 68 +++++++++++-----------
 .../geospark/geometryObjects/GeometrySerde.java    | 20 +++----
 .../geometryObjects/SpatialIndexSerde.java         | 14 ++---
 .../geospark/joinJudgement/DedupParams.java        |  2 +-
 .../joinJudgement/DynamicIndexLookupJudgement.java | 10 ++--
 .../geospark/joinJudgement/JudgementBase.java      | 10 ++--
 .../joinJudgement/LeftIndexLookupJudgement.java    |  4 +-
 .../joinJudgement/NestedLoopJudgement.java         |  2 +-
 .../joinJudgement/RightIndexLookupJudgement.java   |  4 +-
 .../knnJudgement/GeometryDistanceComparator.java   |  2 +-
 .../geospark/knnJudgement/KnnJudgement.java        |  2 +-
 .../knnJudgement/KnnJudgementUsingIndex.java       | 10 ++--
 .../geospark/rangeJudgement/JudgementBase.java     |  2 +-
 .../geospark/rangeJudgement/RangeFilter.java       |  2 +-
 .../rangeJudgement/RangeFilterUsingIndex.java      |  4 +-
 .../geospark/serde/GeoSparkKryoRegistrator.java    | 20 +++----
 .../showcase/EarthdataMapperRunnableExample.java   |  2 +-
 .../org/datasyslab/geospark/showcase/Example.java  |  8 +--
 .../showcase/UserSuppliedLineStringMapper.java     | 16 ++---
 .../geospark/showcase/UserSuppliedPointMapper.java |  6 +-
 .../showcase/UserSuppliedPolygonMapper.java        | 14 ++---
 .../showcase/UserSuppliedRectangleMapper.java      | 16 ++---
 .../geospark/spatialOperator/JoinQuery.java        |  2 +-
 .../geospark/spatialOperator/KNNQuery.java         |  2 +-
 .../geospark/spatialOperator/RangeQuery.java       |  8 +--
 .../spatialPartitioning/EqualPartitioning.java     |  2 +-
 .../spatialPartitioning/FlatGridPartitioner.java   |  4 +-
 .../spatialPartitioning/HilbertPartitioning.java   |  2 +-
 .../geospark/spatialPartitioning/KDBTree.java      |  2 +-
 .../spatialPartitioning/KDBTreePartitioner.java    |  6 +-
 .../spatialPartitioning/QuadtreePartitioning.java  |  2 +-
 .../spatialPartitioning/RtreePartitioning.java     |  6 +-
 .../spatialPartitioning/SpatialPartitioner.java    |  4 +-
 .../spatialPartitioning/VoronoiPartitioning.java   | 16 ++---
 .../quadtree/QuadRectangle.java                    |  2 +-
 .../quadtree/QuadTreePartitioner.java              |  6 +-
 .../quadtree/StandardQuadTree.java                 |  2 +-
 .../datasyslab/geospark/spatialRDD/CircleRDD.java  |  8 +--
 .../geospark/spatialRDD/LineStringRDD.java         |  4 +-
 .../datasyslab/geospark/spatialRDD/PointRDD.java   |  4 +-
 .../datasyslab/geospark/spatialRDD/PolygonRDD.java | 16 ++---
 .../geospark/spatialRDD/RectangleRDD.java          |  4 +-
 .../datasyslab/geospark/spatialRDD/SpatialRDD.java | 18 +++---
 .../geospark/spatialRddTool/IndexBuilder.java      | 10 ++--
 .../geospark/spatialRddTool/StatCalculator.java    |  4 +-
 .../geospark/utils/CRSTransformation.java          |  8 +--
 .../datasyslab/geospark/utils/GeoSparkConf.java    |  2 +-
 .../geospark/utils/HalfOpenRectangle.java          |  4 +-
 .../geospark/python/adapters/EnvelopeAdapter.scala |  2 +-
 .../python/adapters/GeoSparkPythonConverter.scala  |  2 +-
 .../geospark/python/adapters/GeometryAdapter.scala |  2 +-
 .../adapters/PythonRddToJavaRDDAdapter.scala       |  2 +-
 .../python/adapters/RawJvmIndexRDDAdapter.scala    |  4 +-
 .../adapters/SpatialObjectLoaderAdapter.scala      |  4 +-
 .../python/translation/CircleSerializer.scala      |  2 +-
 .../python/translation/FlatPairRddConverter.scala  |  2 +-
 .../python/translation/GeometryRddConverter.scala  |  2 +-
 .../translation/GeometrySeqToPythonConverter.scala |  2 +-
 .../python/translation/GeometrySerializer.scala    |  4 +-
 .../translation/HashSetPairRddConverter.scala      |  2 +-
 .../translation/PythonGeometrySerializer.scala     |  4 +-
 .../translation/PythonRDDToJavaConverter.scala     |  2 +-
 .../translation/PythonRddToJavaRDDConverter.scala  |  2 +-
 .../geospark/python/utils/implicits.scala          |  2 +-
 .../ScalaEarthdataMapperRunnableExample.scala      |  2 +-
 .../geospark/showcase/ScalaExample.scala           |  2 +-
 .../geospark/showcase/SpatialJoinShp.scala         |  2 +-
 .../shapefileParser/shapes/GeometrySerdeTest.java  |  8 +--
 .../shapefileParser/shapes/ShapefileRDDTest.java   | 10 ++--
 .../shapes/ShapefileReaderTest.java                |  8 +--
 .../geospark/geometryObjects/CircleTest.java       | 14 ++---
 .../geometryObjects/SpatialIndexSerdeTest.java     | 14 ++---
 .../datasyslab/geospark/io/EarthdataHDFTest.java   |  2 +-
 .../JoinQueryCorrectnessChecker.java               | 12 ++--
 .../geospark/spatialOperator/JoinTestBase.java     |  4 +-
 .../spatialOperator/LineStringJoinTest.java        |  4 +-
 .../spatialOperator/LineStringKnnTest.java         |  8 +--
 .../spatialOperator/LineStringRangeTest.java       |  2 +-
 .../geospark/spatialOperator/PointJoinTest.java    |  4 +-
 .../geospark/spatialOperator/PointKnnTest.java     |  6 +-
 .../geospark/spatialOperator/PointRangeTest.java   |  2 +-
 .../geospark/spatialOperator/PolygonJoinTest.java  |  2 +-
 .../geospark/spatialOperator/PolygonKnnTest.java   |  8 +--
 .../geospark/spatialOperator/PolygonRangeTest.java |  2 +-
 .../spatialOperator/RectangleJoinTest.java         |  2 +-
 .../geospark/spatialOperator/RectangleKnnTest.java |  8 +--
 .../spatialOperator/RectangleRangeTest.java        |  2 +-
 .../quadtree/QuadTreePartitioningTest.java         |  8 +--
 .../spatialRDD/BoundaryAggregationTest.java        | 14 ++---
 .../BoundaryAndCountAggregationTest.java           |  8 +--
 .../geospark/spatialRDD/LineStringRDDTest.java     |  8 +--
 .../geospark/spatialRDD/PointRDDTest.java          |  8 +--
 .../geospark/spatialRDD/PolygonRDDTest.java        | 10 ++--
 .../geospark/spatialRDD/RectangleRDDTest.java      |  8 +--
 .../geospark/spatialRDD/SpatialRDDTestBase.java    |  2 +-
 .../geospark/utils/CRSTransformationTest.java      | 12 ++--
 .../org/datasyslab/geospark/utils/testGeoJSON.java |  6 +-
 .../geospark/python/GeometrySample.scala           |  2 +-
 .../geospark/python/PythonTestSpec.scala           |  4 +-
 .../scala/org/datasyslab/geospark/scalaTest.scala  |  2 +-
 jts                                                |  1 +
 pom.xml                                            |  1 +
 .../spark/sql/geosparksql/UDT/GeometryUDT.scala    |  2 +-
 .../spark/sql/geosparksql/UDT/IndexUDT.scala       |  2 +-
 .../geosparksql/UDT/UdtRegistratorWrapper.scala    |  4 +-
 .../expressions/AggregateFunctions.scala           |  2 +-
 .../sql/geosparksql/expressions/Constructors.scala |  2 +-
 .../sql/geosparksql/expressions/Functions.scala    | 12 ++--
 .../sql/geosparksql/expressions/implicits.scala    |  2 +-
 .../strategy/join/DistanceJoinExec.scala           |  2 +-
 .../strategy/join/TraitJoinQueryExec.scala         |  2 +-
 .../org/datasyslab/geosparksql/UDF/Catalog.scala   |  2 +-
 .../org/datasyslab/geosparksql/utils/Adapter.scala |  2 +-
 .../geosparksql/utils/GeometrySerializer.scala     |  6 +-
 .../geosparksql/utils/IndexSerializer.scala        |  2 +-
 .../geosparksql/utils/PythonAdapterWrapper.scala   |  2 +-
 .../datasyslab/geosparksql/adapterTestJava.java    |  2 +-
 .../datasyslab/geosparksql/GeometrySample.scala    |  4 +-
 .../geosparksql/aggregateFunctionTestScala.scala   |  2 +-
 .../geosparksql/constructorTestScala.scala         |  2 +-
 .../datasyslab/geosparksql/functionTestScala.scala |  2 +-
 .../org/datasyslab/geosparksql/implicits.scala     |  4 +-
 .../geosparkviz/core/GlobalParameter.java          |  2 +-
 .../geosparkviz/core/VisualizationOperator.java    |  8 +--
 .../visualizationEffect/ChoroplethMap.java         |  4 +-
 .../extension/visualizationEffect/HeatMap.java     |  2 +-
 .../extension/visualizationEffect/ScatterPlot.java |  2 +-
 .../datasyslab/geosparkviz/showcase/Example.java   |  4 +-
 .../org/datasyslab/geosparkviz/utils/Pixel.java    |  6 +-
 .../geosparkviz/utils/RasterizationUtils.java      | 14 ++---
 .../sql/geosparkviz/expressions/Pixelize.scala     |  2 +-
 .../geosparkviz/showcase/ScalaExample.scala        |  2 +-
 .../geosparkviz/sql/operator/VizPartitioner.scala  |  2 +-
 .../datasyslab/geosparkviz/ChoroplethmapTest.java  |  2 +-
 .../geosparkviz/GeoSparkVizTestBase.java           |  2 +-
 .../datasyslab/geosparkviz/NYCTripPointMapper.java | 10 ++--
 .../org/datasyslab/geosparkviz/NYCTripTest.java    | 18 +++---
 .../org/datasyslab/geosparkviz/rdd/scalaTest.scala |  2 +-
 .../geosparkviz/sql/optVizOperatorTest.scala       |  2 +-
 157 files changed, 472 insertions(+), 466 deletions(-)

diff --git a/.gitmodules b/.gitmodules
index 0644f92..a00486b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "contrib/R"]
 	path = contrib/R
 	url = https://github.com/harryprince/geospark
+[submodule "jts"]
+	path = jts
+	url = https://github.com/jiayuasu/jts.git
diff --git a/core/pom.xml b/core/pom.xml
index b4c79ad..060449d 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -33,11 +33,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.datasyslab</groupId>
-            <artifactId>JTSplus</artifactId>
-            <version>0.1.4</version>
-        </dependency>
-        <dependency>
             <groupId>org.wololo</groupId>
             <artifactId>jts2geojson</artifactId>
             <version>0.10.0</version>
@@ -144,6 +139,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.locationtech.jts</groupId>
+            <artifactId>jts-core</artifactId>
+            <version>1.18.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <build>
         <sourceDirectory>src/main/java</sourceDirectory>
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/EarthdataHDFPointMapper.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/EarthdataHDFPointMapper.java
index c5ef509..5989cf1 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/EarthdataHDFPointMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/EarthdataHDFPointMapper.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.datasyslab.sernetcdf.SerNetCDFUtils;
 import ucar.ma2.Array;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/FormatMapper.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/FormatMapper.java
index 42f742c..f54fa4d 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/FormatMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/FormatMapper.java
@@ -16,17 +16,17 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKBReader;
-import com.vividsolutions.jts.io.WKTReader;
-import com.vividsolutions.jts.operation.valid.IsValidOp;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+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.apache.log4j.Logger;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.datasyslab.geospark.enums.FileDataSplitter;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/GeoJsonReader.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/GeoJsonReader.java
index 8fb66a2..ce123b3 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/GeoJsonReader.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/GeoJsonReader.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.datasyslab.geospark.enums.FileDataSplitter;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/RddReader.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/RddReader.java
index 2bd1b21..f99ad55 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/RddReader.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/RddReader.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.JavaRDD;
 import org.datasyslab.geospark.spatialRDD.SpatialRDD;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/WkbReader.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/WkbReader.java
index 47be092..247cf02 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/WkbReader.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/WkbReader.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.datasyslab.geospark.enums.FileDataSplitter;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/WktReader.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/WktReader.java
index 961e1b3..b53e17e 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/WktReader.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/WktReader.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.formatMapper;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.datasyslab.geospark.enums.FileDataSplitter;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileRDD.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileRDD.java
index 9d166c8..8ef80bc 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileRDD.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileReader.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileReader.java
index a90d4ec..cc96cc3 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileReader.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/ShapefileReader.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/MultiPointParser.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/MultiPointParser.java
index 4851a11..ef1400d 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/MultiPointParser.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/MultiPointParser.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.CoordinateSequence;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.CoordinateSequence;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.MultiPoint;
 
 import java.io.IOException;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PointParser.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PointParser.java
index c0e3525..ac265f7 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PointParser.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PointParser.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 
 import java.io.IOException;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolyLineParser.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolyLineParser.java
index cc53815..4dacd49 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolyLineParser.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolyLineParser.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.CoordinateSequence;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
+import org.locationtech.jts.geom.CoordinateSequence;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
 
 import java.io.IOException;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolygonParser.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolygonParser.java
index 44d9da1..c808120 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolygonParser.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/PolygonParser.java
@@ -16,11 +16,11 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.CoordinateSequence;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.CoordinateSequence;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.Polygon;
 import org.geotools.geometry.jts.coordinatesequence.CoordinateSequences;
 
 import java.io.IOException;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeParser.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeParser.java
index d32cf70..436c718 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeParser.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeParser.java
@@ -16,9 +16,9 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.CoordinateSequence;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.CoordinateSequence;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
 
 import java.io.IOException;
 import java.io.Serializable;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeSerde.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeSerde.java
index fd1f2fb..c7c607d 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeSerde.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeSerde.java
@@ -18,14 +18,14 @@
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
 import com.esotericsoftware.kryo.io.Input;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeType.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeType.java
index 1e8ef16..f3f1c7a 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeType.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/parseUtils/shp/ShapeType.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp;
 
-import com.vividsolutions.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.GeometryFactory;
 
 import java.io.Serializable;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/PrimitiveShape.java b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/PrimitiveShape.java
index b69e0b4..ef83347 100644
--- a/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/PrimitiveShape.java
+++ b/core/src/main/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/PrimitiveShape.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.shapes;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
 import org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp.ShapeParser;
 import org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp.ShapeReaderFactory;
 import org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp.ShapeType;
diff --git a/core/src/main/java/org/datasyslab/geospark/geometryObjects/Circle.java b/core/src/main/java/org/datasyslab/geospark/geometryObjects/Circle.java
index b712327..f028aba 100644
--- a/core/src/main/java/org/datasyslab/geospark/geometryObjects/Circle.java
+++ b/core/src/main/java/org/datasyslab/geospark/geometryObjects/Circle.java
@@ -16,19 +16,19 @@
  */
 package org.datasyslab.geospark.geometryObjects;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.CoordinateFilter;
-import com.vividsolutions.jts.geom.CoordinateSequenceComparator;
-import com.vividsolutions.jts.geom.CoordinateSequenceFilter;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.geom.GeometryComponentFilter;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.GeometryFilter;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.CoordinateFilter;
+import org.locationtech.jts.geom.CoordinateSequenceComparator;
+import org.locationtech.jts.geom.CoordinateSequenceFilter;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.geom.GeometryComponentFilter;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.GeometryFilter;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 
 // TODO: Auto-generated Javadoc
 
@@ -128,7 +128,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#covers(com.vividsolutions.jts.geom.Geometry)
+     * @see org.locationtech.jts.geom.Geometry#covers(org.locationtech.jts.geom.Geometry)
      */
     @Override
     public boolean covers(Geometry other)
@@ -184,7 +184,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#intersects(com.vividsolutions.jts.geom.Geometry)
+     * @see org.locationtech.jts.geom.Geometry#intersects(org.locationtech.jts.geom.Geometry)
      */
     @Override
     public boolean intersects(Geometry other)
@@ -290,7 +290,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getGeometryType()
+     * @see org.locationtech.jts.geom.Geometry#getGeometryType()
      */
     @Override
     public String getGeometryType()
@@ -299,7 +299,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getCoordinate()
+     * @see org.locationtech.jts.geom.Geometry#getCoordinate()
      */
     @Override
     public Coordinate getCoordinate()
@@ -308,7 +308,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getCoordinates()
+     * @see org.locationtech.jts.geom.Geometry#getCoordinates()
      */
     @Override
     public Coordinate[] getCoordinates()
@@ -317,7 +317,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getNumPoints()
+     * @see org.locationtech.jts.geom.Geometry#getNumPoints()
      */
     @Override
     public int getNumPoints()
@@ -326,7 +326,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#isEmpty()
+     * @see org.locationtech.jts.geom.Geometry#isEmpty()
      */
     @Override
     public boolean isEmpty()
@@ -335,7 +335,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getDimension()
+     * @see org.locationtech.jts.geom.Geometry#getDimension()
      */
     @Override
     public int getDimension()
@@ -344,7 +344,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getBoundary()
+     * @see org.locationtech.jts.geom.Geometry#getBoundary()
      */
     @Override
     public Geometry getBoundary()
@@ -353,7 +353,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#getBoundaryDimension()
+     * @see org.locationtech.jts.geom.Geometry#getBoundaryDimension()
      */
     @Override
     public int getBoundaryDimension()
@@ -362,7 +362,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#reverse()
+     * @see org.locationtech.jts.geom.Geometry#reverse()
      */
     @Override
     public Geometry reverse()
@@ -373,7 +373,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#clone()
+     * @see org.locationtech.jts.geom.Geometry#clone()
      */
     @Override
     public Object clone()
@@ -384,7 +384,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#equalsExact(com.vividsolutions.jts.geom.Geometry, double)
+     * @see org.locationtech.jts.geom.Geometry#equalsExact(org.locationtech.jts.geom.Geometry, double)
      */
     @Override
     public boolean equalsExact(Geometry g, double tolerance)
@@ -400,7 +400,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#apply(com.vividsolutions.jts.geom.CoordinateFilter)
+     * @see org.locationtech.jts.geom.Geometry#apply(org.locationtech.jts.geom.CoordinateFilter)
      */
     @Override
     public void apply(CoordinateFilter filter)
@@ -409,7 +409,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)
+     * @see org.locationtech.jts.geom.Geometry#apply(org.locationtech.jts.geom.CoordinateSequenceFilter)
      */
     @Override
     public void apply(CoordinateSequenceFilter filter)
@@ -418,7 +418,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#apply(com.vividsolutions.jts.geom.GeometryFilter)
+     * @see org.locationtech.jts.geom.Geometry#apply(org.locationtech.jts.geom.GeometryFilter)
      */
     @Override
     public void apply(GeometryFilter filter)
@@ -427,7 +427,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)
+     * @see org.locationtech.jts.geom.Geometry#apply(org.locationtech.jts.geom.GeometryComponentFilter)
      */
     @Override
     public void apply(GeometryComponentFilter filter)
@@ -436,7 +436,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#normalize()
+     * @see org.locationtech.jts.geom.Geometry#normalize()
      */
     @Override
     public void normalize()
@@ -445,7 +445,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#computeEnvelopeInternal()
+     * @see org.locationtech.jts.geom.Geometry#computeEnvelopeInternal()
      */
     @Override
     protected Envelope computeEnvelopeInternal()
@@ -457,7 +457,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#compareToSameClass(java.lang.Object)
+     * @see org.locationtech.jts.geom.Geometry#compareToSameClass(java.lang.Object)
      */
     @Override
     protected int compareToSameClass(Object other)
@@ -477,7 +477,7 @@ public class Circle
     }
 
     /* (non-Javadoc)
-     * @see com.vividsolutions.jts.geom.Geometry#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)
+     * @see org.locationtech.jts.geom.Geometry#compareToSameClass(java.lang.Object, org.locationtech.jts.geom.CoordinateSequenceComparator)
      */
     @Override
     protected int compareToSameClass(Object other, CoordinateSequenceComparator comp)
diff --git a/core/src/main/java/org/datasyslab/geospark/geometryObjects/GeometrySerde.java b/core/src/main/java/org/datasyslab/geospark/geometryObjects/GeometrySerde.java
index c6d98a1..73cfef7 100755
--- a/core/src/main/java/org/datasyslab/geospark/geometryObjects/GeometrySerde.java
+++ b/core/src/main/java/org/datasyslab/geospark/geometryObjects/GeometrySerde.java
@@ -22,16 +22,16 @@ import com.esotericsoftware.kryo.Registration;
 import com.esotericsoftware.kryo.Serializer;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Logger;
 import org.datasyslab.geospark.formatMapper.shapefileParser.parseUtils.shp.ShapeSerde;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerde.java b/core/src/main/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerde.java
index ff2d8e4..3171fe3 100644
--- a/core/src/main/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerde.java
+++ b/core/src/main/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerde.java
@@ -21,13 +21,13 @@ import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.Serializer;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.quadtree.Node;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.AbstractNode;
-import com.vividsolutions.jts.index.strtree.ItemBoundable;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.quadtree.Node;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.AbstractNode;
+import org.locationtech.jts.index.strtree.ItemBoundable;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.log4j.Logger;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/DedupParams.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/DedupParams.java
index db3c4c0..fed0907 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/DedupParams.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/DedupParams.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/DynamicIndexLookupJudgement.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/DynamicIndexLookupJudgement.java
index 5ee844a..fea2c30 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/DynamicIndexLookupJudgement.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/DynamicIndexLookupJudgement.java
@@ -16,11 +16,11 @@
  */
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/JudgementBase.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/JudgementBase.java
index 7b57cbc..251a93b 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/JudgementBase.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/JudgementBase.java
@@ -16,11 +16,11 @@
  */
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.spark.TaskContext;
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/LeftIndexLookupJudgement.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/LeftIndexLookupJudgement.java
index b75f567..29658f5 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/LeftIndexLookupJudgement.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/LeftIndexLookupJudgement.java
@@ -17,8 +17,8 @@
 
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.spark.api.java.function.FlatMapFunction2;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/NestedLoopJudgement.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/NestedLoopJudgement.java
index dba08fd..dc4e9cb 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/NestedLoopJudgement.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/NestedLoopJudgement.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
diff --git a/core/src/main/java/org/datasyslab/geospark/joinJudgement/RightIndexLookupJudgement.java b/core/src/main/java/org/datasyslab/geospark/joinJudgement/RightIndexLookupJudgement.java
index 8c5a583..ca2df3a 100644
--- a/core/src/main/java/org/datasyslab/geospark/joinJudgement/RightIndexLookupJudgement.java
+++ b/core/src/main/java/org/datasyslab/geospark/joinJudgement/RightIndexLookupJudgement.java
@@ -17,8 +17,8 @@
 
 package org.datasyslab.geospark.joinJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.spark.api.java.function.FlatMapFunction2;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/knnJudgement/GeometryDistanceComparator.java b/core/src/main/java/org/datasyslab/geospark/knnJudgement/GeometryDistanceComparator.java
index 187718e..4f1504a 100644
--- a/core/src/main/java/org/datasyslab/geospark/knnJudgement/GeometryDistanceComparator.java
+++ b/core/src/main/java/org/datasyslab/geospark/knnJudgement/GeometryDistanceComparator.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.knnJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 
 import java.io.Serializable;
 import java.util.Comparator;
diff --git a/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgement.java b/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgement.java
index 616bbec..a841bdc 100644
--- a/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgement.java
+++ b/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgement.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.knnJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.io.Serializable;
diff --git a/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgementUsingIndex.java b/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgementUsingIndex.java
index e8f564b..f4ce367 100644
--- a/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgementUsingIndex.java
+++ b/core/src/main/java/org/datasyslab/geospark/knnJudgement/KnnJudgementUsingIndex.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.knnJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
-import com.vividsolutions.jts.index.strtree.GeometryItemDistance;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
+import org.locationtech.jts.index.strtree.GeometryItemDistance;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.io.Serializable;
@@ -68,7 +68,7 @@ public class KnnJudgementUsingIndex<U extends Geometry, T extends Geometry>
         SpatialIndex treeIndex = treeIndexes.next();
         final Object[] localK;
         if (treeIndex instanceof STRtree) {
-            localK = ((STRtree) treeIndex).kNearestNeighbour(queryCenter.getEnvelopeInternal(), queryCenter, new GeometryItemDistance(), k);
+            localK = ((STRtree) treeIndex).nearestNeighbour(queryCenter.getEnvelopeInternal(), queryCenter, new GeometryItemDistance(), k);
         }
         else {
             throw new Exception("[KnnJudgementUsingIndex][Call] QuadTree index doesn't support KNN search.");
diff --git a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/JudgementBase.java b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/JudgementBase.java
index b2a4b6a..17332e4 100644
--- a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/JudgementBase.java
+++ b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/JudgementBase.java
@@ -17,7 +17,7 @@
 
 package org.datasyslab.geospark.rangeJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilter.java b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilter.java
index d49ac7e..007fbe8 100644
--- a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilter.java
+++ b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilter.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.rangeJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.function.Function;
 
 // TODO: Auto-generated Javadoc
diff --git a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilterUsingIndex.java b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilterUsingIndex.java
index 634bae7..bd07e15 100644
--- a/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilterUsingIndex.java
+++ b/core/src/main/java/org/datasyslab/geospark/rangeJudgement/RangeFilterUsingIndex.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.rangeJudgement;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/serde/GeoSparkKryoRegistrator.java b/core/src/main/java/org/datasyslab/geospark/serde/GeoSparkKryoRegistrator.java
index 81f220c..bff5687 100644
--- a/core/src/main/java/org/datasyslab/geospark/serde/GeoSparkKryoRegistrator.java
+++ b/core/src/main/java/org/datasyslab/geospark/serde/GeoSparkKryoRegistrator.java
@@ -18,16 +18,16 @@
 package org.datasyslab.geospark.serde;
 
 import com.esotericsoftware.kryo.Kryo;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.log4j.Logger;
 import org.apache.spark.serializer.KryoRegistrator;
 import org.datasyslab.geospark.geometryObjects.Circle;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/EarthdataMapperRunnableExample.java b/core/src/main/java/org/datasyslab/geospark/showcase/EarthdataMapperRunnableExample.java
index 06e4133..c177c76 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/EarthdataMapperRunnableExample.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/EarthdataMapperRunnableExample.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/Example.java b/core/src/main/java/org/datasyslab/geospark/showcase/Example.java
index e104aa5..9ec067e 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/Example.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/Example.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedLineStringMapper.java b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedLineStringMapper.java
index 057c700..fbc4045 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedLineStringMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedLineStringMapper.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.io.WKTReader;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPointMapper.java b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPointMapper.java
index 0597518..b3a785b 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPointMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPointMapper.java
@@ -16,9 +16,9 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPolygonMapper.java b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPolygonMapper.java
index 6642315..548e9c7 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPolygonMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedPolygonMapper.java
@@ -16,13 +16,13 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.io.WKTReader;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedRectangleMapper.java b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedRectangleMapper.java
index 71a3c65..6625546 100644
--- a/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedRectangleMapper.java
+++ b/core/src/main/java/org/datasyslab/geospark/showcase/UserSuppliedRectangleMapper.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.showcase;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.io.WKTReader;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialOperator/JoinQuery.java b/core/src/main/java/org/datasyslab/geospark/spatialOperator/JoinQuery.java
index 8dc7b53..9ca0fb5 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialOperator/JoinQuery.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialOperator/JoinQuery.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialOperator/KNNQuery.java b/core/src/main/java/org/datasyslab/geospark/spatialOperator/KNNQuery.java
index 4dd74cf..1ea5730 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialOperator/KNNQuery.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialOperator/KNNQuery.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.api.java.JavaRDD;
 import org.datasyslab.geospark.knnJudgement.GeometryDistanceComparator;
 import org.datasyslab.geospark.knnJudgement.KnnJudgement;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialOperator/RangeQuery.java b/core/src/main/java/org/datasyslab/geospark/spatialOperator/RangeQuery.java
index cae69e4..b37e7ff 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialOperator/RangeQuery.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialOperator/RangeQuery.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
 import org.apache.spark.api.java.JavaRDD;
 import org.datasyslab.geospark.rangeJudgement.RangeFilter;
 import org.datasyslab.geospark.rangeJudgement.RangeFilterUsingIndex;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/EqualPartitioning.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/EqualPartitioning.java
index 9a2b9dc..ae79175 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/EqualPartitioning.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/EqualPartitioning.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/FlatGridPartitioner.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/FlatGridPartitioner.java
index 26df2b6..cf77f15 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/FlatGridPartitioner.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/FlatGridPartitioner.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.joinJudgement.DedupParams;
 import scala.Tuple2;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/HilbertPartitioning.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/HilbertPartitioning.java
index c2c6eba..66aa2e3 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/HilbertPartitioning.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/HilbertPartitioning.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTree.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTree.java
index 9154e29..20433d9 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTree.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTree.java
@@ -17,7 +17,7 @@
 
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTreePartitioner.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTreePartitioner.java
index 6f33250..ac686fd 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTreePartitioner.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/KDBTreePartitioner.java
@@ -17,9 +17,9 @@
 
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Point;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.joinJudgement.DedupParams;
 import org.datasyslab.geospark.utils.HalfOpenRectangle;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/QuadtreePartitioning.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/QuadtreePartitioning.java
index 252f739..708ec69 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/QuadtreePartitioning.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/QuadtreePartitioning.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.datasyslab.geospark.spatialPartitioning.quadtree.QuadRectangle;
 import org.datasyslab.geospark.spatialPartitioning.quadtree.StandardQuadTree;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/RtreePartitioning.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/RtreePartitioning.java
index 21b4c0a..c6879af 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/RtreePartitioning.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/RtreePartitioning.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.index.strtree.STRtree;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -52,7 +52,7 @@ public class RtreePartitioning
             strtree.insert(sample, sample);
         }
 
-        List<Envelope> envelopes = strtree.queryBoundary();
+        List<Envelope> envelopes = strtree.itemsTree().queryBoundary();
         for (Envelope envelope : envelopes) {
             grids.add(envelope);
         }
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/SpatialPartitioner.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/SpatialPartitioner.java
index e4ca81e..a0737ae 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/SpatialPartitioner.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/SpatialPartitioner.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.spark.Partitioner;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.joinJudgement.DedupParams;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/VoronoiPartitioning.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/VoronoiPartitioning.java
index 6ace1be..94fec11 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/VoronoiPartitioning.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/VoronoiPartitioning.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.spatialPartitioning;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.triangulate.VoronoiDiagramBuilder;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.MultiPoint;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.triangulate.VoronoiDiagramBuilder;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadRectangle.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadRectangle.java
index 2240758..fd0ee8a 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadRectangle.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadRectangle.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialPartitioning.quadtree;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 
 import java.io.Serializable;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioner.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioner.java
index adbd8b0..a24659b 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioner.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioner.java
@@ -16,9 +16,9 @@
  */
 package org.datasyslab.geospark.spatialPartitioning.quadtree;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Point;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.joinJudgement.DedupParams;
 import org.datasyslab.geospark.spatialPartitioning.SpatialPartitioner;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/StandardQuadTree.java b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/StandardQuadTree.java
index d99b276..157058e 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/StandardQuadTree.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialPartitioning/quadtree/StandardQuadTree.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.spatialPartitioning.quadtree;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.commons.lang3.mutable.MutableInt;
 
 import java.io.Serializable;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/CircleRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/CircleRDD.java
index 949127f..58d5068 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/CircleRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/CircleRDD.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
 import org.datasyslab.geospark.geometryObjects.Circle;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/LineStringRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/LineStringRDD.java
index 8726ed2..72345e0 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/LineStringRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/LineStringRDD.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.LineString;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.LineString;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.spark.api.java.function.FlatMapFunction;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/PointRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/PointRDD.java
index 07bb607..d8b549d 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/PointRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/PointRDD.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Point;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.spark.api.java.function.FlatMapFunction;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/PolygonRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/PolygonRDD.java
index 03b4403..74154b6 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/PolygonRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/PolygonRDD.java
@@ -16,14 +16,14 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.geom.PrecisionModel;
-import com.vividsolutions.jts.precision.GeometryPrecisionReducer;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.geom.PrecisionModel;
+import org.locationtech.jts.precision.GeometryPrecisionReducer;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.spark.api.java.function.FlatMapFunction;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/RectangleRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/RectangleRDD.java
index e5ede02..a3694b9 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/RectangleRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/RectangleRDD.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.spark.api.java.function.FlatMapFunction;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRDD/SpatialRDD.java b/core/src/main/java/org/datasyslab/geospark/spatialRDD/SpatialRDD.java
index 809de62..7f4f623 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRDD/SpatialRDD.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRDD/SpatialRDD.java
@@ -16,15 +16,15 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.index.SpatialIndex;
-import com.vividsolutions.jts.io.WKBWriter;
-import com.vividsolutions.jts.io.WKTWriter;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.index.SpatialIndex;
+import org.locationtech.jts.io.WKBWriter;
+import org.locationtech.jts.io.WKTWriter;
 import org.apache.commons.lang.NullArgumentException;
 import org.apache.log4j.Logger;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRddTool/IndexBuilder.java b/core/src/main/java/org/datasyslab/geospark/spatialRddTool/IndexBuilder.java
index 8ccfb93..1fb181e 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRddTool/IndexBuilder.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRddTool/IndexBuilder.java
@@ -17,11 +17,11 @@
 
 package org.datasyslab.geospark.spatialRddTool;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.index.SpatialIndex;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.index.SpatialIndex;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.datasyslab.geospark.enums.IndexType;
 
diff --git a/core/src/main/java/org/datasyslab/geospark/spatialRddTool/StatCalculator.java b/core/src/main/java/org/datasyslab/geospark/spatialRddTool/StatCalculator.java
index 9f63150..ed37f86 100644
--- a/core/src/main/java/org/datasyslab/geospark/spatialRddTool/StatCalculator.java
+++ b/core/src/main/java/org/datasyslab/geospark/spatialRddTool/StatCalculator.java
@@ -17,8 +17,8 @@
 
 package org.datasyslab.geospark.spatialRddTool;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
 
 import java.io.Serializable;
 import java.util.Objects;
diff --git a/core/src/main/java/org/datasyslab/geospark/utils/CRSTransformation.java b/core/src/main/java/org/datasyslab/geospark/utils/CRSTransformation.java
index 44b16e8..1d67900 100644
--- a/core/src/main/java/org/datasyslab/geospark/utils/CRSTransformation.java
+++ b/core/src/main/java/org/datasyslab/geospark/utils/CRSTransformation.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geospark.utils;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.geotools.geometry.jts.JTS;
 import org.geotools.referencing.CRS;
 import org.opengis.geometry.MismatchedDimensionException;
diff --git a/core/src/main/java/org/datasyslab/geospark/utils/GeoSparkConf.java b/core/src/main/java/org/datasyslab/geospark/utils/GeoSparkConf.java
index 7c2a5ec..4b6fefc 100644
--- a/core/src/main/java/org/datasyslab/geospark/utils/GeoSparkConf.java
+++ b/core/src/main/java/org/datasyslab/geospark/utils/GeoSparkConf.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.utils;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.spark.SparkConf;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
diff --git a/core/src/main/java/org/datasyslab/geospark/utils/HalfOpenRectangle.java b/core/src/main/java/org/datasyslab/geospark/utils/HalfOpenRectangle.java
index 60e7a22..f7403a4 100644
--- a/core/src/main/java/org/datasyslab/geospark/utils/HalfOpenRectangle.java
+++ b/core/src/main/java/org/datasyslab/geospark/utils/HalfOpenRectangle.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geospark.utils;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Point;
 
 public class HalfOpenRectangle
 {
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/EnvelopeAdapter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/EnvelopeAdapter.scala
index ef62bf3..90a36a1 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/EnvelopeAdapter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/EnvelopeAdapter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.Envelope
+import org.locationtech.jts.geom.Envelope
 import net.razorvine.pickle.Unpickler
 import net.razorvine.pickle.objects.ClassDict
 import scala.collection.JavaConverters._
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeoSparkPythonConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeoSparkPythonConverter.scala
index 849d488..31d9723 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeoSparkPythonConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeoSparkPythonConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.{JavaPairRDD, JavaRDD}
 import org.datasyslab.geospark.python.translation.{FlatPairRddConverter, GeometryRddConverter, GeometrySeqToPythonConverter, HashSetPairRddConverter, PythonGeometrySerializer, PythonRDDToJavaConverter}
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeometryAdapter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeometryAdapter.scala
index b0de400..03939d3 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeometryAdapter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/GeometryAdapter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.datasyslab.geospark.python.translation.PythonGeometrySerializer
 
 object GeometryAdapter extends GeomSerializer{
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/PythonRddToJavaRDDAdapter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/PythonRddToJavaRDDAdapter.scala
index 083e2b9..de04c75 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/PythonRddToJavaRDDAdapter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/PythonRddToJavaRDDAdapter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.{Geometry, LineString, Point, Polygon}
+import org.locationtech.jts.geom.{Geometry, LineString, Point, Polygon}
 import net.razorvine.pickle.Unpickler
 import net.razorvine.pickle.objects.ClassDict
 import org.apache.spark.api.java.JavaRDD
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/RawJvmIndexRDDAdapter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/RawJvmIndexRDDAdapter.scala
index a567fae..c8659d5 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/RawJvmIndexRDDAdapter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/RawJvmIndexRDDAdapter.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.index.SpatialIndex
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.index.SpatialIndex
 import org.apache.spark.api.java.JavaRDD
 import org.datasyslab.geospark.spatialRDD.SpatialRDD
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/adapters/SpatialObjectLoaderAdapter.scala b/core/src/main/scala/org/datasyslab/geospark/python/adapters/SpatialObjectLoaderAdapter.scala
index 5b7a11a..d2441bb 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/adapters/SpatialObjectLoaderAdapter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/adapters/SpatialObjectLoaderAdapter.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geospark.python.adapters
 
-import com.vividsolutions.jts.geom.{Geometry, LineString, Point, Polygon}
-import com.vividsolutions.jts.index.SpatialIndex
+import org.locationtech.jts.geom.{Geometry, LineString, Point, Polygon}
+import org.locationtech.jts.index.SpatialIndex
 import org.apache.spark.api.java.{JavaRDD, JavaSparkContext}
 import org.datasyslab.geospark.spatialRDD.{LineStringRDD, PointRDD, PolygonRDD, SpatialRDD}
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/CircleSerializer.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/CircleSerializer.scala
index e5afa71..b516879 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/CircleSerializer.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/CircleSerializer.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.io.WKBWriter
+import org.locationtech.jts.io.WKBWriter
 import org.datasyslab.geospark.geometryObjects.Circle
 import org.datasyslab.geospark.python.utils.implicits._
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/FlatPairRddConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/FlatPairRddConverter.scala
index 872ae84..be000c0 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/FlatPairRddConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/FlatPairRddConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.{JavaPairRDD, JavaRDD}
 import org.datasyslab.geospark.python.utils.implicits._
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometryRddConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometryRddConverter.scala
index 01f0498..d51df48 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometryRddConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometryRddConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.JavaRDD
 import org.datasyslab.geospark.python.utils.implicits._
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySeqToPythonConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySeqToPythonConverter.scala
index b577f1d..b89c82c 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySeqToPythonConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySeqToPythonConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.datasyslab.geospark.python.utils.implicits._
 
 case class GeometrySeqToPythonConverter(spatialData: scala.collection.convert.Wrappers.SeqWrapper[Geometry],
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySerializer.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySerializer.scala
index ea201aa..b4e61eb 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySerializer.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/GeometrySerializer.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.io.WKBWriter
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.io.WKBWriter
 import org.datasyslab.geospark.python.utils.implicits._
 
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/HashSetPairRddConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/HashSetPairRddConverter.scala
index 72c408c..77440ae 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/HashSetPairRddConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/HashSetPairRddConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.{JavaPairRDD, JavaRDD}
 import org.datasyslab.geospark.python.utils.implicits._
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonGeometrySerializer.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonGeometrySerializer.scala
index 4d1dcd7..7e2a159 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonGeometrySerializer.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonGeometrySerializer.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.io.WKBReader
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.io.WKBReader
 import org.datasyslab.geospark.geometryObjects.Circle
 import org.datasyslab.geospark.python.SerializationException
 import java.nio.ByteBuffer
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRDDToJavaConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRDDToJavaConverter.scala
index 24812f5..81d8d91 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRDDToJavaConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRDDToJavaConverter.scala
@@ -2,7 +2,7 @@ package org.datasyslab.geospark.python.translation
 
 import java.io.{ByteArrayInputStream, DataInputStream}
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.JavaRDD
 import org.datasyslab.geospark.geometryObjects.Circle
 import org.datasyslab.geospark.python.SerializationException
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRddToJavaRDDConverter.scala b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRddToJavaRDDConverter.scala
index db7ee1e..c19de10 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRddToJavaRDDConverter.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/translation/PythonRddToJavaRDDConverter.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python.translation
 
-import com.vividsolutions.jts.geom.{Geometry, LineString, Point, Polygon}
+import org.locationtech.jts.geom.{Geometry, LineString, Point, Polygon}
 import net.razorvine.pickle.Unpickler
 import net.razorvine.pickle.objects.ClassDict
 import org.apache.spark.api.java.JavaRDD
diff --git a/core/src/main/scala/org/datasyslab/geospark/python/utils/implicits.scala b/core/src/main/scala/org/datasyslab/geospark/python/utils/implicits.scala
index c6f4bb1..a8a099b 100644
--- a/core/src/main/scala/org/datasyslab/geospark/python/utils/implicits.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/python/utils/implicits.scala
@@ -4,7 +4,7 @@ import java.nio.charset.StandardCharsets
 import java.nio.{ByteBuffer, ByteOrder}
 import java.util
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 
 object implicits {
 
diff --git a/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaEarthdataMapperRunnableExample.scala b/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaEarthdataMapperRunnableExample.scala
index f59edc4..ce5bafb 100644
--- a/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaEarthdataMapperRunnableExample.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaEarthdataMapperRunnableExample.scala
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.showcase
 
-import com.vividsolutions.jts.geom.Envelope
+import org.locationtech.jts.geom.Envelope
 import org.apache.log4j.{Level, Logger}
 import org.apache.spark.{SparkConf, SparkContext}
 import org.apache.spark.storage.StorageLevel
diff --git a/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaExample.scala b/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaExample.scala
index 8c28823..16ffd57 100644
--- a/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaExample.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/showcase/ScalaExample.scala
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geospark.showcase
 
-import com.vividsolutions.jts.geom.{Coordinate, Envelope, GeometryFactory}
+import org.locationtech.jts.geom.{Coordinate, Envelope, GeometryFactory}
 import org.apache.log4j.{Level, Logger}
 import org.apache.spark.serializer.KryoSerializer
 import org.apache.spark.storage.StorageLevel
diff --git a/core/src/main/scala/org/datasyslab/geospark/showcase/SpatialJoinShp.scala b/core/src/main/scala/org/datasyslab/geospark/showcase/SpatialJoinShp.scala
index 0d98964..7d81e4e 100644
--- a/core/src/main/scala/org/datasyslab/geospark/showcase/SpatialJoinShp.scala
+++ b/core/src/main/scala/org/datasyslab/geospark/showcase/SpatialJoinShp.scala
@@ -17,7 +17,7 @@
 
 package org.datasyslab.geospark.showcase
 
-import com.vividsolutions.jts.geom.Polygon
+import org.locationtech.jts.geom.Polygon
 import org.apache.log4j.{Level, Logger}
 import org.apache.spark.storage.StorageLevel
 import org.apache.spark.{SparkConf, SparkContext}
diff --git a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/GeometrySerdeTest.java b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/GeometrySerdeTest.java
index fdc6a3c..5836f39 100644
--- a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/GeometrySerdeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/GeometrySerdeTest.java
@@ -29,10 +29,10 @@ package org.datasyslab.geospark.formatMapper.shapefileParser.shapes;
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
 import org.datasyslab.geospark.geometryObjects.Circle;
 import org.datasyslab.geospark.geometryObjects.GeometrySerde;
 import org.junit.Assert;
diff --git a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileRDDTest.java b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileRDDTest.java
index 7ae05aa..c01f536 100644
--- a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileRDDTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileRDDTest.java
@@ -25,11 +25,11 @@
  */
 package org.datasyslab.geospark.formatMapper.shapefileParser.shapes;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileReaderTest.java b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileReaderTest.java
index 607dd16..b40b663 100644
--- a/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileReaderTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/formatMapper/shapefileParser/shapes/ShapefileReaderTest.java
@@ -26,10 +26,10 @@
 
 package org.datasyslab.geospark.formatMapper.shapefileParser.shapes;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.MultiPolygon;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.fs.LocatedFileStatus;
diff --git a/core/src/test/java/org/datasyslab/geospark/geometryObjects/CircleTest.java b/core/src/test/java/org/datasyslab/geospark/geometryObjects/CircleTest.java
index fcee1fb..f00c8eb 100644
--- a/core/src/test/java/org/datasyslab/geospark/geometryObjects/CircleTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/geometryObjects/CircleTest.java
@@ -25,13 +25,13 @@
  */
 package org.datasyslab.geospark.geometryObjects;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/core/src/test/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerdeTest.java b/core/src/test/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerdeTest.java
index ddce34e..6098f96 100644
--- a/core/src/test/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerdeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/geometryObjects/SpatialIndexSerdeTest.java
@@ -29,13 +29,13 @@ package org.datasyslab.geospark.geometryObjects;
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.index.SpatialIndex;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.index.SpatialIndex;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
diff --git a/core/src/test/java/org/datasyslab/geospark/io/EarthdataHDFTest.java b/core/src/test/java/org/datasyslab/geospark/io/EarthdataHDFTest.java
index 35454e2..1fa36dd 100644
--- a/core/src/test/java/org/datasyslab/geospark/io/EarthdataHDFTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/io/EarthdataHDFTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.io;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinQueryCorrectnessChecker.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinQueryCorrectnessChecker.java
index a806faf..9127c1a 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinQueryCorrectnessChecker.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinQueryCorrectnessChecker.java
@@ -25,12 +25,12 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.GeoSparkTestBase;
 import org.datasyslab.geospark.enums.GridType;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinTestBase.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinTestBase.java
index 56a6557..f2d58cf 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinTestBase.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/JoinTestBase.java
@@ -25,8 +25,8 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.GeoSparkTestBase;
 import org.datasyslab.geospark.enums.FileDataSplitter;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringJoinTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringJoinTest.java
index 5d3c21c..5ccf180 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringJoinTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringJoinTest.java
@@ -25,8 +25,8 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Polygon;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
 import org.datasyslab.geospark.enums.JoinBuildSide;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringKnnTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringKnnTest.java
index 87cc7b5..5a099d8 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringKnnTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringKnnTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringRangeTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringRangeTest.java
index 61657d4..ef3928d 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringRangeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/LineStringRangeTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointJoinTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointJoinTest.java
index dbd155d..f369674 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointJoinTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointJoinTest.java
@@ -25,8 +25,8 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
 import org.datasyslab.geospark.enums.JoinBuildSide;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointKnnTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointKnnTest.java
index 61b150e..ce1bd72 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointKnnTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointKnnTest.java
@@ -25,9 +25,9 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointRangeTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointRangeTest.java
index 488fe64..c77cdd5 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointRangeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PointRangeTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonJoinTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonJoinTest.java
index 6b05223..b761850 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonJoinTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonJoinTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Polygon;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
 import org.datasyslab.geospark.enums.JoinBuildSide;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonKnnTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonKnnTest.java
index f7dfd6b..4d58395 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonKnnTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonKnnTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonRangeTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonRangeTest.java
index c9b8184..818899c 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonRangeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/PolygonRangeTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleJoinTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleJoinTest.java
index b7d8f4c..dd566a5 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleJoinTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleJoinTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Polygon;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
 import org.datasyslab.geospark.enums.JoinBuildSide;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleKnnTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleKnnTest.java
index b5a5978..ebae96d 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleKnnTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleKnnTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleRangeTest.java b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleRangeTest.java
index bafe363..7ed00a8 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleRangeTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialOperator/RectangleRangeTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialOperator;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioningTest.java b/core/src/test/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioningTest.java
index 12f2e84..d1b481e 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioningTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialPartitioning/quadtree/QuadTreePartitioningTest.java
@@ -26,10 +26,10 @@
 
 package org.datasyslab.geospark.spatialPartitioning.quadtree;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.datasyslab.geospark.spatialPartitioning.QuadtreePartitioning;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAggregationTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAggregationTest.java
index bea5c13..543ab02 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAggregationTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAggregationTest.java
@@ -25,13 +25,13 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKTReader;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
 import org.datasyslab.geospark.spatialRddTool.StatCalculator;
 import org.junit.Test;
 
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAndCountAggregationTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAndCountAggregationTest.java
index 5158d56..87c5ef1 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAndCountAggregationTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/BoundaryAndCountAggregationTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
 import org.datasyslab.geospark.spatialRddTool.StatCalculator;
 import org.junit.Test;
 
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/LineStringRDDTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/LineStringRDDTest.java
index ee94b54..bcb6d80 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/LineStringRDDTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/LineStringRDDTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/PointRDDTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/PointRDDTest.java
index 0c106a5..2d355f9 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/PointRDDTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/PointRDDTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/PolygonRDDTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/PolygonRDDTest.java
index 231856a..48c38f3 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/PolygonRDDTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/PolygonRDDTest.java
@@ -25,11 +25,11 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.enums.FileDataSplitter;
 import org.datasyslab.geospark.enums.GridType;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/RectangleRDDTest.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/RectangleRDDTest.java
index e73cdfe..6144ab5 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/RectangleRDDTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/RectangleRDDTest.java
@@ -25,10 +25,10 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.index.quadtree.Quadtree;
-import com.vividsolutions.jts.index.strtree.STRtree;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.index.quadtree.Quadtree;
+import org.locationtech.jts.index.strtree.STRtree;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.enums.GridType;
 import org.datasyslab.geospark.enums.IndexType;
diff --git a/core/src/test/java/org/datasyslab/geospark/spatialRDD/SpatialRDDTestBase.java b/core/src/test/java/org/datasyslab/geospark/spatialRDD/SpatialRDDTestBase.java
index 858e8db..dd3cc61 100644
--- a/core/src/test/java/org/datasyslab/geospark/spatialRDD/SpatialRDDTestBase.java
+++ b/core/src/test/java/org/datasyslab/geospark/spatialRDD/SpatialRDDTestBase.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geospark.spatialRDD;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.datasyslab.geospark.GeoSparkTestBase;
 import org.datasyslab.geospark.enums.FileDataSplitter;
 import org.datasyslab.geospark.enums.GridType;
diff --git a/core/src/test/java/org/datasyslab/geospark/utils/CRSTransformationTest.java b/core/src/test/java/org/datasyslab/geospark/utils/CRSTransformationTest.java
index 85c8a4d..a151639 100644
--- a/core/src/test/java/org/datasyslab/geospark/utils/CRSTransformationTest.java
+++ b/core/src/test/java/org/datasyslab/geospark/utils/CRSTransformationTest.java
@@ -25,12 +25,12 @@
  */
 package org.datasyslab.geospark.utils;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/java/org/datasyslab/geospark/utils/testGeoJSON.java b/core/src/test/java/org/datasyslab/geospark/utils/testGeoJSON.java
index a4e270f..397e3d8 100644
--- a/core/src/test/java/org/datasyslab/geospark/utils/testGeoJSON.java
+++ b/core/src/test/java/org/datasyslab/geospark/utils/testGeoJSON.java
@@ -25,9 +25,9 @@
  */
 package org.datasyslab.geospark.utils;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/core/src/test/scala/org/datasyslab/geospark/python/GeometrySample.scala b/core/src/test/scala/org/datasyslab/geospark/python/GeometrySample.scala
index 098c6bb..a22493f 100644
--- a/core/src/test/scala/org/datasyslab/geospark/python/GeometrySample.scala
+++ b/core/src/test/scala/org/datasyslab/geospark/python/GeometrySample.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geospark.python
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 
 import scala.tools.nsc.interpreter.InputStream
 
diff --git a/core/src/test/scala/org/datasyslab/geospark/python/PythonTestSpec.scala b/core/src/test/scala/org/datasyslab/geospark/python/PythonTestSpec.scala
index 1fc273e..d1cb390 100644
--- a/core/src/test/scala/org/datasyslab/geospark/python/PythonTestSpec.scala
+++ b/core/src/test/scala/org/datasyslab/geospark/python/PythonTestSpec.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geospark.python
 
-import com.vividsolutions.jts.geom.GeometryFactory
-import com.vividsolutions.jts.io.WKTReader
+import org.locationtech.jts.geom.GeometryFactory
+import org.locationtech.jts.io.WKTReader
 import org.datasyslab.geospark.python.translation.PythonGeometrySerializer
 
 trait PythonTestSpec {
diff --git a/core/src/test/scala/org/datasyslab/geospark/scalaTest.scala b/core/src/test/scala/org/datasyslab/geospark/scalaTest.scala
index 2282190..54147a3 100644
--- a/core/src/test/scala/org/datasyslab/geospark/scalaTest.scala
+++ b/core/src/test/scala/org/datasyslab/geospark/scalaTest.scala
@@ -26,7 +26,7 @@
 
 package org.datasyslab.geospark
 
-import com.vividsolutions.jts.geom.{Coordinate, Envelope, GeometryFactory}
+import org.locationtech.jts.geom.{Coordinate, Envelope, GeometryFactory}
 import org.apache.spark.storage.StorageLevel
 import org.datasyslab.geospark.enums.{FileDataSplitter, GridType, IndexType, JoinBuildSide}
 import org.datasyslab.geospark.formatMapper.EarthdataHDFPointMapper
diff --git a/jts b/jts
new file mode 160000
index 0000000..463da6e
--- /dev/null
+++ b/jts
@@ -0,0 +1 @@
+Subproject commit 463da6ec3a67c6593ba6b4fae109f7a6efea78c4
diff --git a/pom.xml b/pom.xml
index 143a9c1..77e900a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,6 +9,7 @@
 	<url>http://maven.apache.org</url>
     <description>Apache Spark geospatial extention: SpatialRDD, SpatialSQL and map visualization</description>
   <modules>
+    <module>jts/modules/core</module>
     <module>core</module>
     <module>sql</module>    
     <module>viz</module>
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/GeometryUDT.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/GeometryUDT.scala
index f14ffa0..56c3348 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/GeometryUDT.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/GeometryUDT.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.UDT
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.sql.catalyst.util.{ArrayData, GenericArrayData}
 import org.apache.spark.sql.types._
 import org.datasyslab.geosparksql.utils.GeometrySerializer
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/IndexUDT.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/IndexUDT.scala
index 93f2046..be07600 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/IndexUDT.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/IndexUDT.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.UDT
 
-import com.vividsolutions.jts.index.SpatialIndex
+import org.locationtech.jts.index.SpatialIndex
 import org.apache.spark.sql.catalyst.util.{ArrayData, GenericArrayData}
 import org.apache.spark.sql.types.{ArrayType, ByteType, DataType, UserDefinedType}
 import org.datasyslab.geosparksql.utils.IndexSerializer
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/UdtRegistratorWrapper.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/UdtRegistratorWrapper.scala
index b950d38..016d427 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/UdtRegistratorWrapper.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/UDT/UdtRegistratorWrapper.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.geosparksql.UDT
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.index.SpatialIndex
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.index.SpatialIndex
 import org.apache.spark.sql.types.UDTRegistration
 
 object UdtRegistratorWrapper {
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/AggregateFunctions.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/AggregateFunctions.scala
index 0d84158..dd8abef 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/AggregateFunctions.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/AggregateFunctions.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.expressions
 
-import com.vividsolutions.jts.geom.{Coordinate, Geometry, GeometryFactory}
+import org.locationtech.jts.geom.{Coordinate, Geometry, GeometryFactory}
 import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
 import org.apache.spark.sql.expressions.Aggregator
 
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Constructors.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Constructors.scala
index 9d01b40..a7d7c2d 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Constructors.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Constructors.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.expressions
 
-import com.vividsolutions.jts.geom.{Coordinate, GeometryFactory}
+import org.locationtech.jts.geom.{Coordinate, GeometryFactory}
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.Expression
 import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Functions.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Functions.scala
index 31c64e1..853142f 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Functions.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/Functions.scala
@@ -18,12 +18,12 @@ package org.apache.spark.sql.geosparksql.expressions
 
 import java.util
 
-import com.vividsolutions.jts.geom.{PrecisionModel, _}
-import com.vividsolutions.jts.operation.IsSimpleOp
-import com.vividsolutions.jts.operation.linemerge.LineMerger
-import com.vividsolutions.jts.operation.valid.IsValidOp
-import com.vividsolutions.jts.precision.GeometryPrecisionReducer
-import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier
+import org.locationtech.jts.geom.{PrecisionModel, _}
+import org.locationtech.jts.operation.IsSimpleOp
+import org.locationtech.jts.operation.linemerge.LineMerger
+import org.locationtech.jts.operation.valid.IsValidOp
+import org.locationtech.jts.precision.GeometryPrecisionReducer
+import org.locationtech.jts.simplify.TopologyPreservingSimplifier
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback
 import org.apache.spark.sql.catalyst.expressions.{Expression, Generator}
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/implicits.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/implicits.scala
index 915c803..5912483 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/implicits.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/expressions/implicits.scala
@@ -1,6 +1,6 @@
 package org.apache.spark.sql.geosparksql.expressions
 
-import com.vividsolutions.jts.geom.{Geometry, GeometryFactory, Point}
+import org.locationtech.jts.geom.{Geometry, GeometryFactory, Point}
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.Expression
 import org.apache.spark.sql.catalyst.util.{ArrayData, GenericArrayData}
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/DistanceJoinExec.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/DistanceJoinExec.scala
index 3509161..5e5a1f8 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/DistanceJoinExec.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/DistanceJoinExec.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.strategy.join
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.internal.Logging
 import org.apache.spark.rdd.RDD
 import org.apache.spark.sql.catalyst.expressions.{BindReferences, Expression, UnsafeRow}
diff --git a/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/TraitJoinQueryExec.scala b/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/TraitJoinQueryExec.scala
index 40c5aa4..a69cdc8 100644
--- a/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/TraitJoinQueryExec.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/geosparksql/strategy/join/TraitJoinQueryExec.scala
@@ -16,7 +16,7 @@
  */
 package org.apache.spark.sql.geosparksql.strategy.join
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.rdd.RDD
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.codegen.GenerateUnsafeRowJoiner
diff --git a/sql/src/main/scala/org/datasyslab/geosparksql/UDF/Catalog.scala b/sql/src/main/scala/org/datasyslab/geosparksql/UDF/Catalog.scala
index a519f6a..2959d16 100644
--- a/sql/src/main/scala/org/datasyslab/geosparksql/UDF/Catalog.scala
+++ b/sql/src/main/scala/org/datasyslab/geosparksql/UDF/Catalog.scala
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geosparksql.UDF
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.sql.catalyst.analysis.FunctionRegistry.FunctionBuilder
 import org.apache.spark.sql.expressions.{Aggregator}
 import org.apache.spark.sql.geosparksql.expressions._
diff --git a/sql/src/main/scala/org/datasyslab/geosparksql/utils/Adapter.scala b/sql/src/main/scala/org/datasyslab/geosparksql/utils/Adapter.scala
index 0eac1a2..b0beb76 100644
--- a/sql/src/main/scala/org/datasyslab/geosparksql/utils/Adapter.scala
+++ b/sql/src/main/scala/org/datasyslab/geosparksql/utils/Adapter.scala
@@ -17,7 +17,7 @@
 package org.datasyslab.geosparksql.utils
 
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.{JavaPairRDD, JavaRDD}
 import org.apache.spark.rdd.RDD
 //import org.apache.spark.sql.geosparksql.GeometryWrapper
diff --git a/sql/src/main/scala/org/datasyslab/geosparksql/utils/GeometrySerializer.scala b/sql/src/main/scala/org/datasyslab/geosparksql/utils/GeometrySerializer.scala
index 20ef004..82959ce 100644
--- a/sql/src/main/scala/org/datasyslab/geosparksql/utils/GeometrySerializer.scala
+++ b/sql/src/main/scala/org/datasyslab/geosparksql/utils/GeometrySerializer.scala
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geosparksql.utils
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.io.{WKBReader, WKBWriter}
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.io.{WKBReader, WKBWriter}
 import org.apache.spark.sql.catalyst.util.ArrayData
-import com.vividsolutions.jts.io.{WKBReader, WKBWriter}
+import org.locationtech.jts.io.{WKBReader, WKBWriter}
 
 /**
   * SerDe using the WKB reader and writer objects
diff --git a/sql/src/main/scala/org/datasyslab/geosparksql/utils/IndexSerializer.scala b/sql/src/main/scala/org/datasyslab/geosparksql/utils/IndexSerializer.scala
index 6ac6ef9..2b2bbd0 100644
--- a/sql/src/main/scala/org/datasyslab/geosparksql/utils/IndexSerializer.scala
+++ b/sql/src/main/scala/org/datasyslab/geosparksql/utils/IndexSerializer.scala
@@ -20,7 +20,7 @@ import java.io.{ByteArrayInputStream, ByteArrayOutputStream}
 
 import com.esotericsoftware.kryo.Kryo
 import com.esotericsoftware.kryo.io.{Input, Output}
-import com.vividsolutions.jts.index.SpatialIndex
+import org.locationtech.jts.index.SpatialIndex
 import org.apache.spark.sql.catalyst.util.ArrayData
 
 // This is a wrapper of GeoSpark core kryo serializer
diff --git a/sql/src/main/scala/org/datasyslab/geosparksql/utils/PythonAdapterWrapper.scala b/sql/src/main/scala/org/datasyslab/geosparksql/utils/PythonAdapterWrapper.scala
index de0337c..8ea6f5f 100644
--- a/sql/src/main/scala/org/datasyslab/geosparksql/utils/PythonAdapterWrapper.scala
+++ b/sql/src/main/scala/org/datasyslab/geosparksql/utils/PythonAdapterWrapper.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geosparksql.utils
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.apache.spark.api.java.JavaPairRDD
 import org.apache.spark.sql.{DataFrame, SparkSession}
 import org.datasyslab.geospark.spatialRDD.SpatialRDD
diff --git a/sql/src/test/java/org/datasyslab/geosparksql/adapterTestJava.java b/sql/src/test/java/org/datasyslab/geosparksql/adapterTestJava.java
index c55ff2d..65f3abc 100644
--- a/sql/src/test/java/org/datasyslab/geosparksql/adapterTestJava.java
+++ b/sql/src/test/java/org/datasyslab/geosparksql/adapterTestJava.java
@@ -26,7 +26,7 @@
 
 package org.datasyslab.geosparksql;
 
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/sql/src/test/scala/org/datasyslab/geosparksql/GeometrySample.scala b/sql/src/test/scala/org/datasyslab/geosparksql/GeometrySample.scala
index ffda3e5..eabc52c 100644
--- a/sql/src/test/scala/org/datasyslab/geosparksql/GeometrySample.scala
+++ b/sql/src/test/scala/org/datasyslab/geosparksql/GeometrySample.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geosparksql
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.io.WKTReader
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.io.WKTReader
 import org.apache.spark.sql.{Dataset, Row}
 
 import scala.tools.nsc.interpreter.InputStream
diff --git a/sql/src/test/scala/org/datasyslab/geosparksql/aggregateFunctionTestScala.scala b/sql/src/test/scala/org/datasyslab/geosparksql/aggregateFunctionTestScala.scala
index 26d1337..802c90a 100644
--- a/sql/src/test/scala/org/datasyslab/geosparksql/aggregateFunctionTestScala.scala
+++ b/sql/src/test/scala/org/datasyslab/geosparksql/aggregateFunctionTestScala.scala
@@ -26,7 +26,7 @@
 
 package org.datasyslab.geosparksql
 
-import com.vividsolutions.jts.geom.{Coordinate, Geometry, GeometryFactory}
+import org.locationtech.jts.geom.{Coordinate, Geometry, GeometryFactory}
 import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
 import org.apache.spark.sql.expressions.UserDefinedAggregator
 import org.apache.spark.sql.functions
diff --git a/sql/src/test/scala/org/datasyslab/geosparksql/constructorTestScala.scala b/sql/src/test/scala/org/datasyslab/geosparksql/constructorTestScala.scala
index ca6fc57..c87d6ce 100644
--- a/sql/src/test/scala/org/datasyslab/geosparksql/constructorTestScala.scala
+++ b/sql/src/test/scala/org/datasyslab/geosparksql/constructorTestScala.scala
@@ -26,7 +26,7 @@
 
 package org.datasyslab.geosparksql
 
-import com.vividsolutions.jts.geom.Geometry
+import org.locationtech.jts.geom.Geometry
 import org.datasyslab.geospark.formatMapper.GeoJsonReader
 import org.datasyslab.geospark.formatMapper.shapefileParser.ShapefileReader
 import org.datasyslab.geosparksql.utils.Adapter
diff --git a/sql/src/test/scala/org/datasyslab/geosparksql/functionTestScala.scala b/sql/src/test/scala/org/datasyslab/geosparksql/functionTestScala.scala
index de061ba..a6d5ade 100644
--- a/sql/src/test/scala/org/datasyslab/geosparksql/functionTestScala.scala
+++ b/sql/src/test/scala/org/datasyslab/geosparksql/functionTestScala.scala
@@ -26,7 +26,7 @@
 
 package org.datasyslab.geosparksql
 
-import com.vividsolutions.jts.geom.{Geometry}
+import org.locationtech.jts.geom.{Geometry}
 import org.geotools.geometry.jts.WKTReader2
 import org.scalatest.{GivenWhenThen, Matchers}
 import implicits._
diff --git a/sql/src/test/scala/org/datasyslab/geosparksql/implicits.scala b/sql/src/test/scala/org/datasyslab/geosparksql/implicits.scala
index 52f819d..cc235bb 100644
--- a/sql/src/test/scala/org/datasyslab/geosparksql/implicits.scala
+++ b/sql/src/test/scala/org/datasyslab/geosparksql/implicits.scala
@@ -1,7 +1,7 @@
 package org.datasyslab.geosparksql
 
-import com.vividsolutions.jts.geom.Geometry
-import com.vividsolutions.jts.io.WKTReader
+import org.locationtech.jts.geom.Geometry
+import org.locationtech.jts.io.WKTReader
 import org.apache.spark.sql.DataFrame
 
 object implicits {
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/core/GlobalParameter.java b/viz/src/main/java/org/datasyslab/geosparkviz/core/GlobalParameter.java
index 4772f96..03f54b2 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/core/GlobalParameter.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/core/GlobalParameter.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geosparkviz.core;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Logger;
 import org.datasyslab.geosparkviz.extension.coloringRule.ColoringRuleFactory;
 import org.datasyslab.geosparkviz.extension.coloringRule.LinearFunction;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/core/VisualizationOperator.java b/viz/src/main/java/org/datasyslab/geosparkviz/core/VisualizationOperator.java
index 7a78667..e66c298 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/core/VisualizationOperator.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/core/VisualizationOperator.java
@@ -16,10 +16,10 @@
  */
 package org.datasyslab.geosparkviz.core;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Logger;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ChoroplethMap.java b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ChoroplethMap.java
index 318ebe5..4b907db 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ChoroplethMap.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ChoroplethMap.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geosparkviz.extension.visualizationEffect;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Logger;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaSparkContext;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/HeatMap.java b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/HeatMap.java
index 99dfa8b..a84e99e 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/HeatMap.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/HeatMap.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geosparkviz.extension.visualizationEffect;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Logger;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.datasyslab.geospark.spatialRDD.SpatialRDD;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ScatterPlot.java b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ScatterPlot.java
index 796d6f6..2b54a91 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ScatterPlot.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/extension/visualizationEffect/ScatterPlot.java
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geosparkviz.extension.visualizationEffect;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Logger;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.datasyslab.geospark.spatialRDD.SpatialRDD;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/showcase/Example.java b/viz/src/main/java/org/datasyslab/geosparkviz/showcase/Example.java
index 894a09d..35d6a1c 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/showcase/Example.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/showcase/Example.java
@@ -16,8 +16,8 @@
  */
 package org.datasyslab.geosparkviz.showcase;
 
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/utils/Pixel.java b/viz/src/main/java/org/datasyslab/geosparkviz/utils/Pixel.java
index d956bbc..42bedbf 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/utils/Pixel.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/utils/Pixel.java
@@ -16,9 +16,9 @@
  */
 package org.datasyslab.geosparkviz.utils;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.PrecisionModel;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.PrecisionModel;
 
 import java.io.Serializable;
 
diff --git a/viz/src/main/java/org/datasyslab/geosparkviz/utils/RasterizationUtils.java b/viz/src/main/java/org/datasyslab/geosparkviz/utils/RasterizationUtils.java
index 67f96c9..ac47164 100644
--- a/viz/src/main/java/org/datasyslab/geosparkviz/utils/RasterizationUtils.java
+++ b/viz/src/main/java/org/datasyslab/geosparkviz/utils/RasterizationUtils.java
@@ -16,13 +16,13 @@
  */
 package org.datasyslab.geosparkviz.utils;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Logger;
 import scala.Tuple2;
 
diff --git a/viz/src/main/scala/org/apache/spark/sql/geosparkviz/expressions/Pixelize.scala b/viz/src/main/scala/org/apache/spark/sql/geosparkviz/expressions/Pixelize.scala
index f7384fb..008de17 100644
--- a/viz/src/main/scala/org/apache/spark/sql/geosparkviz/expressions/Pixelize.scala
+++ b/viz/src/main/scala/org/apache/spark/sql/geosparkviz/expressions/Pixelize.scala
@@ -20,7 +20,7 @@ import java.io.ByteArrayOutputStream
 
 import com.esotericsoftware.kryo.Kryo
 import com.esotericsoftware.kryo.io.Output
-import com.vividsolutions.jts.geom._
+import org.locationtech.jts.geom._
 import org.apache.spark.internal.Logging
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.codegen.CodegenFallback
diff --git a/viz/src/main/scala/org/datasyslab/geosparkviz/showcase/ScalaExample.scala b/viz/src/main/scala/org/datasyslab/geosparkviz/showcase/ScalaExample.scala
index 18682c1..809e559 100644
--- a/viz/src/main/scala/org/datasyslab/geosparkviz/showcase/ScalaExample.scala
+++ b/viz/src/main/scala/org/datasyslab/geosparkviz/showcase/ScalaExample.scala
@@ -20,7 +20,7 @@ import java.awt.Color
 import java.io.FileInputStream
 import java.util.Properties
 
-import com.vividsolutions.jts.geom.Envelope
+import org.locationtech.jts.geom.Envelope
 import org.apache.log4j.{Level, Logger}
 import org.apache.spark.storage.StorageLevel
 import org.apache.spark.{SparkConf, SparkContext}
diff --git a/viz/src/main/scala/org/datasyslab/geosparkviz/sql/operator/VizPartitioner.scala b/viz/src/main/scala/org/datasyslab/geosparkviz/sql/operator/VizPartitioner.scala
index fbe5894..c8ce521 100644
--- a/viz/src/main/scala/org/datasyslab/geosparkviz/sql/operator/VizPartitioner.scala
+++ b/viz/src/main/scala/org/datasyslab/geosparkviz/sql/operator/VizPartitioner.scala
@@ -16,7 +16,7 @@
  */
 package org.datasyslab.geosparkviz.sql.operator
 
-import com.vividsolutions.jts.geom.{Envelope, Geometry}
+import org.locationtech.jts.geom.{Envelope, Geometry}
 import org.apache.spark.sql.functions._
 import org.apache.spark.sql.{DataFrame, Row}
 import org.datasyslab.geospark.spatialPartitioning.QuadtreePartitioning
diff --git a/viz/src/test/java/org/datasyslab/geosparkviz/ChoroplethmapTest.java b/viz/src/test/java/org/datasyslab/geosparkviz/ChoroplethmapTest.java
index d027d7f..cc16857 100644
--- a/viz/src/test/java/org/datasyslab/geosparkviz/ChoroplethmapTest.java
+++ b/viz/src/test/java/org/datasyslab/geosparkviz/ChoroplethmapTest.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geosparkviz;
 
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.storage.StorageLevel;
 import org.datasyslab.geospark.enums.GridType;
diff --git a/viz/src/test/java/org/datasyslab/geosparkviz/GeoSparkVizTestBase.java b/viz/src/test/java/org/datasyslab/geosparkviz/GeoSparkVizTestBase.java
index 6776ee4..d5d6881 100644
--- a/viz/src/test/java/org/datasyslab/geosparkviz/GeoSparkVizTestBase.java
+++ b/viz/src/test/java/org/datasyslab/geosparkviz/GeoSparkVizTestBase.java
@@ -25,7 +25,7 @@
  */
 package org.datasyslab.geosparkviz;
 
-import com.vividsolutions.jts.geom.Envelope;
+import org.locationtech.jts.geom.Envelope;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripPointMapper.java b/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripPointMapper.java
index c173fd2..7b72766 100644
--- a/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripPointMapper.java
+++ b/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripPointMapper.java
@@ -25,11 +25,11 @@
  */
 package org.datasyslab.geosparkviz;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
 import org.apache.spark.api.java.function.FlatMapFunction;
 
 import java.util.ArrayList;
diff --git a/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripTest.java b/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripTest.java
index 1420ba8..aa4f587 100644
--- a/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripTest.java
+++ b/viz/src/test/java/org/datasyslab/geosparkviz/NYCTripTest.java
@@ -25,15 +25,15 @@
  */
 package org.datasyslab.geosparkviz;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.LinearRing;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Envelope;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.LinearRing;
+import org.locationtech.jts.geom.MultiLineString;
+import org.locationtech.jts.geom.MultiPolygon;
+import org.locationtech.jts.geom.Polygon;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.spark.SparkConf;
diff --git a/viz/src/test/scala/org/datasyslab/geosparkviz/rdd/scalaTest.scala b/viz/src/test/scala/org/datasyslab/geosparkviz/rdd/scalaTest.scala
index 76cc400..3bea4a1 100644
--- a/viz/src/test/scala/org/datasyslab/geosparkviz/rdd/scalaTest.scala
+++ b/viz/src/test/scala/org/datasyslab/geosparkviz/rdd/scalaTest.scala
@@ -30,7 +30,7 @@ import java.awt.Color
 import java.io.FileInputStream
 import java.util.Properties
 
-import com.vividsolutions.jts.geom.Envelope
+import org.locationtech.jts.geom.Envelope
 import org.apache.log4j.{Level, Logger}
 import org.apache.spark.serializer.KryoSerializer
 import org.apache.spark.storage.StorageLevel
diff --git a/viz/src/test/scala/org/datasyslab/geosparkviz/sql/optVizOperatorTest.scala b/viz/src/test/scala/org/datasyslab/geosparkviz/sql/optVizOperatorTest.scala
index 9b71916..55bb03b 100644
--- a/viz/src/test/scala/org/datasyslab/geosparkviz/sql/optVizOperatorTest.scala
+++ b/viz/src/test/scala/org/datasyslab/geosparkviz/sql/optVizOperatorTest.scala
@@ -1,6 +1,6 @@
 package org.datasyslab.geosparkviz.sql
 
-import com.vividsolutions.jts.geom.Envelope
+import org.locationtech.jts.geom.Envelope
 import org.apache.spark.sql.functions._
 import org.datasyslab.geosparkviz.sql.operator.{AggregateWithinPartitons, VizPartitioner}
 import org.datasyslab.geosparkviz.sql.utils.{Conf, LineageDecoder}