Skip to content

[GH-3369] Use isolated JTS IO fixes - #3373

Merged
jiayuasu merged 7 commits into
apache:masterfrom
jiayuasu:deps/datasyslab-jts
Sep 15, 2026
Merged

jiayuasu merged 7 commits into
apache:masterfrom
jiayuasu:deps/datasyslab-jts

Conversation

@jiayuasu

@jiayuasu jiayuasu commented Sep 15, 2026

Copy link
Copy Markdown
Member

Did you read the Contributor Guide?

Yes.

Is this PR related to a ticket?

Related to #3369. This supplies the WKB reader fix needed by #3374.

What changes were proposed in this PR?

Keep org.locationtech.jts:jts-core:1.20.0 and add org.datasyslab:jts-io-patch:1.21.0-datasyslab-1. The small artifact generates the fork's patched WKBReader, WKTWriter, and helper under org.datasyslab.jts.io, preserving the standard JTS geometry and supporting API types.

Route Sedona's WKB reads and WKT output through those classes. The writer now handles dimension markers before nested EMPTY directly, removing the string postprocessing workaround. Spark's bundled JTS jar stays in place; no classpath-priority settings are needed. Geometry algorithms and public Geometry, WKBWriter, and ParseException types stay on JTS 1.20.

The IO artifact is published on Maven Central from the merged source in jiayuasu/jts#8. See the release notes. A fresh Maven consumer passed 35 WKB/WKT checks against the downloaded release, and its three IO classes match those used in the Sedona validation below.

How was this patch tested?

  • Full common suite on Java 11: 1,375 tests passed on this dependency branch.
  • Constructor and WKT regression tests passed. Constructor assertions distinguish the patched reader from stock JTS for empty XY/XYZM layouts and measures.
  • Spark 4.1/Scala 2.13 shaded package built successfully. All 732 bundled JTS classes matched upstream 1.20, and the three isolated IO classes matched the patch artifact. No duplicate ZIP entries or old fork-core metadata remained.
  • The OSS Sedona shaded jar passed 72 reader/WKT cases across two Spark 4.1 executor JVMs (local-cluster[2,1,1024]). Both executors loaded public geometry and original IO classes from the untouched PySpark JTS 1.20 jar, and patched IO classes from Sedona's jar.

Did this PR include necessary documentation updates?

The previous jar-replacement instructions are removed. Existing Spark setup remains valid. The new artifact's source, packaging, and release procedure are documented in its repository.

@jiayuasu jiayuasu changed the title [GH-3369] Use Datasyslab JTS fork [GH-3369] Use isolated JTS IO fixes Sep 15, 2026
@jiayuasu
jiayuasu marked this pull request as ready for review September 15, 2026 06:55
@jiayuasu jiayuasu linked an issue Sep 15, 2026 that may be closed by this pull request
1 task
@jiayuasu jiayuasu added this to the sedona-2.0.0 milestone Sep 15, 2026
@jiayuasu
jiayuasu merged commit 45617c1 into apache:master Sep 15, 2026
43 of 59 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GeoPandas: leading-null GeoSeries input loses Z dimensions

1 participant