use of org.locationtech.geowave.migration.legacy.core.geotime.LegacyCustomCRSSpatialField in project geowave by locationtech.
the class MigrationTest method testLegacySpatialFields.
@Test
public void testLegacySpatialFields() throws NoSuchAuthorityCodeException, FactoryException {
LegacyLatitudeField latitudeFullRange = new LegacyLatitudeField(4, false);
byte[] fieldBytes = PersistenceUtils.toBinary(latitudeFullRange);
latitudeFullRange = (LegacyLatitudeField) PersistenceUtils.fromBinary(fieldBytes);
LatitudeField updatedLatitudeField = latitudeFullRange.getUpdatedField(null);
assertEquals(GeometryUtils.getDefaultCRS(), updatedLatitudeField.getCRS());
assertEquals(SpatialField.DEFAULT_GEOMETRY_FIELD_NAME, updatedLatitudeField.getFieldName());
assertEquals(180, updatedLatitudeField.getRange(), 0.0001);
assertEquals(-90, updatedLatitudeField.getFullRange().getMin(), 0.0001);
assertEquals(90, updatedLatitudeField.getFullRange().getMax(), 0.0001);
assertEquals(4, (int) updatedLatitudeField.getGeometryPrecision());
LegacyLatitudeField latitudeHalfRange = new LegacyLatitudeField(4, true);
fieldBytes = PersistenceUtils.toBinary(latitudeHalfRange);
latitudeHalfRange = (LegacyLatitudeField) PersistenceUtils.fromBinary(fieldBytes);
updatedLatitudeField = latitudeHalfRange.getUpdatedField(null);
assertEquals(GeometryUtils.getDefaultCRS(), updatedLatitudeField.getCRS());
assertEquals(SpatialField.DEFAULT_GEOMETRY_FIELD_NAME, updatedLatitudeField.getFieldName());
assertEquals(360, updatedLatitudeField.getRange(), 0.0001);
assertEquals(-180, updatedLatitudeField.getFullRange().getMin(), 0.0001);
assertEquals(180, updatedLatitudeField.getFullRange().getMax(), 0.0001);
assertEquals(4, (int) updatedLatitudeField.getGeometryPrecision());
LegacyLongitudeField longitudeField = new LegacyLongitudeField(4);
fieldBytes = PersistenceUtils.toBinary(longitudeField);
longitudeField = (LegacyLongitudeField) PersistenceUtils.fromBinary(fieldBytes);
final LongitudeField updatedLongitudeField = longitudeField.getUpdatedField(null);
assertEquals(GeometryUtils.getDefaultCRS(), updatedLongitudeField.getCRS());
assertEquals(SpatialField.DEFAULT_GEOMETRY_FIELD_NAME, updatedLongitudeField.getFieldName());
assertEquals(360, updatedLongitudeField.getRange(), 0.0001);
assertEquals(-180, updatedLongitudeField.getFullRange().getMin(), 0.0001);
assertEquals(180, updatedLongitudeField.getFullRange().getMax(), 0.0001);
assertEquals(4, (int) updatedLongitudeField.getGeometryPrecision());
final SpatialOptions options = new SpatialOptions();
options.setCrs("EPSG:3257");
options.setGeometryPrecision(4);
final CoordinateReferenceSystem crs = CRS.decode("EPSG:3257", true);
final Index index = SpatialDimensionalityTypeProvider.createIndexFromOptions(options);
for (int i = 0; i < crs.getCoordinateSystem().getDimension(); i++) {
final CoordinateSystemAxis csa = crs.getCoordinateSystem().getAxis(i);
LegacyCustomCRSSpatialField customCRSField;
if (i == 0) {
customCRSField = new LegacyCustomCRSSpatialField(new CustomCRSBoundedSpatialDimensionX(csa.getMinimumValue(), csa.getMaximumValue()), 4);
} else {
customCRSField = new LegacyCustomCRSSpatialField(new CustomCRSBoundedSpatialDimensionY(csa.getMinimumValue(), csa.getMaximumValue()), 4);
}
fieldBytes = PersistenceUtils.toBinary(customCRSField);
customCRSField = (LegacyCustomCRSSpatialField) PersistenceUtils.fromBinary(fieldBytes);
final CustomCRSSpatialField updatedCRSField = customCRSField.getUpdatedField(index);
assertEquals(crs, updatedCRSField.getCRS());
assertEquals(SpatialField.DEFAULT_GEOMETRY_FIELD_NAME, updatedCRSField.getFieldName());
assertEquals(csa.getMaximumValue() - csa.getMinimumValue(), updatedCRSField.getRange(), 0.0001);
assertEquals(csa.getMinimumValue(), updatedCRSField.getFullRange().getMin(), 0.0001);
assertEquals(csa.getMaximumValue(), updatedCRSField.getFullRange().getMax(), 0.0001);
assertEquals(4, (int) updatedCRSField.getGeometryPrecision());
if (i == 0) {
assertTrue(CustomCRSBoundedSpatialDimensionX.class.isAssignableFrom(updatedCRSField.getBaseDefinition().getClass()));
} else {
assertTrue(CustomCRSBoundedSpatialDimensionY.class.isAssignableFrom(updatedCRSField.getBaseDefinition().getClass()));
}
}
}
Aggregations