public static Geometry geomFromString(String value, boolean haveM) throws SQLException { BinaryParser bp = new BinaryParser(); return geomFromString(value, bp, haveM); }
/** * Parse a hex encoded geometry * * Is synchronized to protect offset counter. (Unfortunately, Java does not * have neither call by reference nor multiple return values.) * * @param value String containing the data to be parsed * @return resulting geometry for the parsed data */ public synchronized Geometry parse(String value) { StringByteGetter bytes = new ByteGetter.StringByteGetter(value); return parseGeometry(valueGetterForEndian(bytes)); }
switch (realtype) { case Geometry.POINT : result1 = parsePoint(data, haveZ, haveM); break; case Geometry.LINESTRING : result1 = parseLineString(data, haveZ, haveM); break; case Geometry.POLYGON : result1 = parsePolygon(data, haveZ, haveM); break; case Geometry.MULTIPOINT : result1 = parseMultiPoint(data); break; case Geometry.MULTILINESTRING : result1 = parseMultiLineString(data); break; case Geometry.MULTIPOLYGON : result1 = parseMultiPolygon(data); break; case Geometry.GEOMETRYCOLLECTION : result1 = parseCollection(data); break; default :
private MultiLineString parseMultiLineString(ValueGetter data) { int count = data.getInt(); LineString[] strings = new LineString[count]; parseGeometryArray(data, strings); return new MultiLineString(strings); }
/** Parse an Array of "full" Geometries */ private void parseGeometryArray(ValueGetter data, Geometry[] container) { for (int i = 0; i < container.length; i++) { container[i] = parseGeometry(data); } }
private Polygon parsePolygon(ValueGetter data, boolean haveZ, boolean haveM) { int count = data.getInt(); LinearRing[] rings = new LinearRing[count]; for (int i = 0; i < count; i++) { rings[i] = parseLinearRing(data, haveZ, haveM); } return new Polygon(rings); }
result = bp.parse(value); } else if (value.endsWith("EMPTY")) {
switch (realtype) { case Geometry.POINT : result1 = parsePoint(data, haveZ, haveM); break; case Geometry.LINESTRING : result1 = parseLineString(data, haveZ, haveM); break; case Geometry.POLYGON : result1 = parsePolygon(data, haveZ, haveM); break; case Geometry.MULTIPOINT : result1 = parseMultiPoint(data); break; case Geometry.MULTILINESTRING : result1 = parseMultiLineString(data); break; case Geometry.MULTIPOLYGON : result1 = parseMultiPolygon(data); break; case Geometry.GEOMETRYCOLLECTION : result1 = parseCollection(data); break; default :
private MultiPolygon parseMultiPolygon(ValueGetter data) { int count = data.getInt(); Polygon[] polys = new Polygon[count]; parseGeometryArray(data, polys); return new MultiPolygon(polys); }
/** Parse an Array of "full" Geometries */ private void parseGeometryArray(ValueGetter data, Geometry[] container) { for (int i = 0; i < container.length; i++) { container[i] = parseGeometry(data); } }
private Polygon parsePolygon(ValueGetter data, boolean haveZ, boolean haveM) { int count = data.getInt(); LinearRing[] rings = new LinearRing[count]; for (int i = 0; i < count; i++) { rings[i] = parseLinearRing(data, haveZ, haveM); } return new Polygon(rings); }
result = bp.parse(value); } else if (value.endsWith("EMPTY")) {
/** * Parse a binary encoded geometry. * * Is synchronized to protect offset counter. (Unfortunately, Java does not * have neither call by reference nor multiple return values.) * * @param value byte array containing the data to be parsed * @return resulting geometry for the parsed data */ public synchronized Geometry parse(byte[] value) { BinaryByteGetter bytes = new ByteGetter.BinaryByteGetter(value); return parseGeometry(valueGetterForEndian(bytes)); }
private MultiPoint parseMultiPoint(ValueGetter data) { Point[] points = new Point[data.getInt()]; parseGeometryArray(data, points); return new MultiPoint(points); }
public static Geometry geomFromString(String value, boolean haveM) throws SQLException { BinaryParser bp = new BinaryParser(); return geomFromString(value, bp, haveM); }
/** * Parse a hex encoded geometry * * Is synchronized to protect offset counter. (Unfortunately, Java does not * have neither call by reference nor multiple return values.) * * @param value String containing the data to be parsed * @return resulting geometry for the parsed data */ public synchronized Geometry parse(String value) { StringByteGetter bytes = new ByteGetter.StringByteGetter(value); return parseGeometry(valueGetterForEndian(bytes)); }
private GeometryCollection parseCollection(ValueGetter data) { int count = data.getInt(); Geometry[] geoms = new Geometry[count]; parseGeometryArray(data, geoms); return new GeometryCollection(geoms); } }
public void setValue(String value) throws SQLException { geom = geomFromString(value, new BinaryParser()); }
/** * Parse a binary encoded geometry. * * Is synchronized to protect offset counter. (Unfortunately, Java does not * have neither call by reference nor multiple return values.) * * @param value byte array containing the data to be parsed * @return resulting geometry for the parsed data */ public synchronized Geometry parse(byte[] value) { BinaryByteGetter bytes = new ByteGetter.BinaryByteGetter(value); return parseGeometry(valueGetterForEndian(bytes)); }
private MultiPoint parseMultiPoint(ValueGetter data) { Point[] points = new Point[data.getInt()]; parseGeometryArray(data, points); return new MultiPoint(points); }