use of org.locationtech.jts.io.WKTWriter in project ddf by codice.
the class Gml3ToWktImpl method convert.
@Override
public String convert(InputStream xml) throws ValidationException {
Object parsedObject = parseXml(xml);
if (parsedObject instanceof Envelope) {
parsedObject = JTS.toGeometry((Envelope) parsedObject);
}
if (parsedObject instanceof Geometry) {
try {
Geometry geometry = convertCRS((Geometry) parsedObject);
return new WKTWriter().write(geometry);
} catch (TransformException e) {
LOGGER.debug("Failed to transform geometry to lon/lat", e);
throw new ValidationExceptionImpl(e, Collections.singletonList("Cannot transform geometry to lon/lat"), new ArrayList<>());
}
}
LOGGER.debug("Unknown object parsed from GML and unable to convert to WKT");
throw new ValidationExceptionImpl("", Collections.singletonList("Couldn't not convert GML to WKT"), new ArrayList<>());
}
use of org.locationtech.jts.io.WKTWriter in project ddf by codice.
the class CswFilterDelegate method bufferGeometry.
private String bufferGeometry(String wkt, double distance) {
LOGGER.debug("Buffering WKT {} by distance {} meter(s).", wkt, distance);
Geometry geometry = getGeometryFromWkt(wkt);
double bufferInDegrees = metersToDegrees(distance);
LOGGER.debug("Buffering {} by {} degree(s).", geometry.getClass().getSimpleName(), bufferInDegrees);
Geometry bufferedGeometry = geometry.buffer(bufferInDegrees);
String bufferedWkt = new WKTWriter().write(bufferedGeometry);
LOGGER.debug("Buffered WKT: {}.", bufferedWkt);
return bufferedWkt;
}
use of org.locationtech.jts.io.WKTWriter in project ddf by codice.
the class AbstractFeatureConverterWfs20 method getValueForMetacardAttribute.
@Override
protected Serializable getValueForMetacardAttribute(AttributeFormat attributeFormat, HierarchicalStreamReader reader) {
Serializable ser = null;
switch(attributeFormat) {
case BOOLEAN:
ser = Boolean.valueOf(reader.getValue());
break;
case DOUBLE:
ser = Double.valueOf(reader.getValue());
break;
case FLOAT:
ser = Float.valueOf(reader.getValue());
break;
case INTEGER:
ser = Integer.valueOf(reader.getValue());
break;
case LONG:
ser = Long.valueOf(reader.getValue());
break;
case SHORT:
ser = Short.valueOf(reader.getValue());
break;
case XML:
case STRING:
ser = reader.getValue();
break;
case GEOMETRY:
XmlNode node = new XmlNode(reader);
String geometryXml = node.toString();
Geometry geo = null;
geo = (Geometry) readGml(geometryXml);
LOGGER.debug("coordinateOrder = {}", coordinateOrder);
if (GeospatialUtil.LAT_LON_ORDER.equals(coordinateOrder)) {
swapCoordinates(geo);
}
if (geo != null) {
WKTWriter wktWriter = new WKTWriter();
ser = wktWriter.write(geo);
LOGGER.debug("wkt = {}", ser);
}
break;
case BINARY:
try {
ser = reader.getValue().getBytes(UTF8_ENCODING);
} catch (UnsupportedEncodingException e) {
LOGGER.debug("Error encoding the binary value into the metacard.", e);
}
break;
case DATE:
ser = parseDateFromXml(reader);
break;
default:
break;
}
return ser;
}
use of org.locationtech.jts.io.WKTWriter in project ddf by codice.
the class GeometryAdapter method unmarshalFrom.
public static Attribute unmarshalFrom(GeometryElement element) throws ConversionFailedException {
AttributeImpl attribute = null;
GML311ToJTSGeometryConverter converter = new GML311ToJTSGeometryConverter();
WKTWriter wktWriter = new WKTWriter();
for (Value xmlValue : element.getValue()) {
JAXBElement<AbstractGeometryType> xmlGeometry = xmlValue.getGeometry();
Geometry geometry = null;
if (xmlGeometry != null && xmlGeometry.getValue() != null) {
try {
geometry = converter.createGeometry(new DefaultRootObjectLocator(xmlValue), xmlGeometry.getValue());
} catch (ConversionFailedException e) {
LOGGER.debug("Unable to adapt goemetry. ", e);
}
}
if (geometry != null && !geometry.isEmpty()) {
String wkt = wktWriter.write(geometry);
if (attribute == null) {
attribute = new AttributeImpl(element.getName(), wkt);
} else {
attribute.addValue(wkt);
}
}
}
return attribute;
}
Aggregations