I spent a few days researching what was out there. Originally I started with JTS but then I realized that eventually I wanted to do a spherical model and there were some other handy capabilities in Spatial4j like the geohash.
In re-reading my email I realize I was rather sloppy, apologies! I said "I am not implementing" but meant "I am now implementing". I am pretty sure you deduced that but just to be safe...
You are absolutely correct, Spatial4jStringDeserializer is my own wrapper around WKTReader and GeoJSONReader. Sorry about that!
In my testing when I do a rectangle with either the WKT or GeoJSON Reader and the default SpatialContextFactory I get the exception "java.text.ParseException: java.lang.UnsupportedOperationException: Unsupported shape of this SpatialContext. Try JTS or Geo3D." My guess is that I need to configure the factory in some fashion but in looking at the javadocs its not clear to me how.
When I use the Geo3dSpatialContextFactory it parses fine but I am getting some inaccurate results from the relate function.
Great point about whether the surface of the world is really required. In my case I am making a UDF (user defined function) for ksqlDB which if you aren't familiar is a SQL engine for KSQL. So I am really just passing things through to Spatial4j and its up to them to figure out if they need it. I think I will document your point however as its important to surface that.
Good example case. I'll play around with that and come up with a good test case.