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:25 UTC

[incubator-sedona] branch jtsplus updated (37e6657 -> 60d381a)

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

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


    from 37e6657  Tweak the design for the mobile devices, add the latest news section and fixed a few typos on the main page
     new bf3163c  Change all JTS paths to org.locationtech.jts
     new 60d381a  Change all JTS paths to org.locationtech.jts

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .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(-)
 create mode 160000 jts


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

Posted by ji...@apache.org.
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 60d381a6eff994deb7a46ec5f70ff70a57697841
Author: Jia Yu <ji...@apache.org>
AuthorDate: Sun Oct 4 17:42:34 2020 -0700

    Change all JTS paths to org.locationtech.jts
---
 jts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jts b/jts
index 463da6e..7ba7672 160000
--- a/jts
+++ b/jts
@@ -1 +1 @@
-Subproject commit 463da6ec3a67c6593ba6b4fae109f7a6efea78c4
+Subproject commit 7ba76724e77900cead41cf4c384521d6374180d8


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

Posted by ji...@apache.org.
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}