Depending on how you want to define your coordinate system, one problem you face here is that the transform from [-180, 180) to [0, 360) will not be affine. In particular, there is a discontinuity at the prime meridian, where the coordinate 1 stays 1, while -1 becomes 179. So the AffineTransform class will not work for you .
I always handle this thing in code, writing my own transform class. If you can count on longitude being in the range -180 <= longitude < 180, it’s pretty simple
longitude = (longitude<0?longitude+180:longitude);
If you have to deal with coordinates out of range, I use the following though I’m sure it could be done a bit more elegantly
static public double to360(double c) {
double coordinate = 0;
if (c < 0.0) {
coordinate = ((-c) % 360);
if (coordinate != 0) {
coordinate = 360 - coordinate;
}
} else {
coordinate = c % 360;
}
return coordinate;
}
From: John Cartwright - NOAA Federal [mailto:john.c.cartwright@xxxxxxxx]
Sent: Monday, September 25, 2017 7:20 PM
To: jts-dev@xxxxxxxxxxxxxxxx
Subject: [jts-dev] split a polygon or line at the antimeridian
I feel like this is a common question but don't seem to find a good answer.
I'm trying to split a simple shape at the antimeridian to form a multipart geometry. My general approach was to construct two clipping polygons for the eastern and western hemispheres and intersect them with the target geometry.
Can someone suggest a better approach to doing this with JTS or GeoTools?
Related question - it seems that I need to shift the geometries from a -180 to 180 coordinate space to a 0 to 360 coordinate space in order to perform some of the calculations. Is AffineTransformation the best way to approach this? Any examples of using it for this purpose?
Thanks for any help you can provide!