Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.3.M0, 2.3.0
-
Fix Version/s: None
-
Component/s: referencing
-
Labels:None
Description
This affects UDIG, which uses the following to calculate scale:
diagonalGroundDistance = JTS.orthodromicDistance(new Coordinate(restrictedBounds
.getMinX(), restrictedBounds.getMinY()), new Coordinate(restrictedBounds
.getMaxX(), restrictedBounds.getMaxY()), DefaultGeographicCRS.WGS84);
For example:
JTS.orthodromicDistance(new Coordinate(1, 1), new Coordinate(2, 2), DefaultGeographicCRS.WGS84);
gives
java.lang.IllegalArgumentException: Argument "crs" should not be null.
at org.geotools.geometry.TransformedDirectPosition.ensureNonNull(TransformedDirectPosition.java:338)
at org.geotools.geometry.TransformedDirectPosition.setCoordinateReferenceSystem(TransformedDirectPosition.java:204)
at org.geotools.geometry.GeneralDirectPosition.setLocation(GeneralDirectPosition.java:275)
at org.geotools.geometry.TransformedDirectPosition.transform(TransformedDirectPosition.java:259)
at org.geotools.referencing.GeodeticCalculator.setStartingPosition(GeodeticCalculator.java:596)
at org.geotools.geometry.jts.JTS.orthodromicDistance(JTS.java:355)
Reason is probably optimization in TransformedDirectPosition constructor since 2.2:
defaultCRS = CRSUtilities.equalsIgnoreMetadata(sourceCRS, targetCRS) ? null : sourceCRS;
which leaves crs as null