package com.revolsys.elevation.tin.tin;
import java.util.Map;
import com.revolsys.collection.map.Maps;
import com.revolsys.elevation.tin.TriangulatedIrregularNetwork;
import com.revolsys.elevation.tin.TriangulatedIrregularNetworkReadFactory;
import com.revolsys.elevation.tin.TriangulatedIrregularNetworkWriter;
import com.revolsys.elevation.tin.TriangulatedIrregularNetworkWriterFactory;
import com.revolsys.geometry.cs.esri.EsriCoordinateSystems;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.io.AbstractIoFactoryWithCoordinateSystem;
import com.revolsys.spring.resource.Resource;
import com.revolsys.util.Exceptions;
public class AsciiTin extends AbstractIoFactoryWithCoordinateSystem
implements TriangulatedIrregularNetworkReadFactory, TriangulatedIrregularNetworkWriterFactory {
public AsciiTin() {
super("ASCII TIN");
addMediaTypeAndFileExtension("image/x-tin", "tin");
}
@Override
public boolean isReadFromZipFileSupported() {
return true;
}
@Override
public TriangulatedIrregularNetwork newTriangulatedIrregularNetwork(final Resource resource,
final Map<String, ? extends Object> properties) {
try {
GeometryFactory geometryFactory = EsriCoordinateSystems.getGeometryFactory(resource);
if (geometryFactory == null) {
geometryFactory = Maps.get(properties, TriangulatedIrregularNetwork.GEOMETRY_FACTORY);
if (geometryFactory == null) {
geometryFactory = GeometryFactory.DEFAULT_3D;
}
}
try (
AsciiTinReader tinReader = new AsciiTinReader(geometryFactory, resource)) {
return tinReader.read();
}
} catch (final Throwable e) {
throw Exceptions.wrap("Error reading: " + resource, e);
}
}
@Override
public TriangulatedIrregularNetworkWriter newTriangulatedIrregularNetworkWriter(
final Resource resource) {
return new AsciiTinWriter(resource);
}
}