Exemplo n.º 1
0
 @Override
 public void visit(LineString<P> geom) {
   writeByteOrder(output);
   writeTypeCodeAndSrid(geom, output);
   if (geom.isEmpty()) {
     output.putUInt(0);
   } else {
     output.putUInt(geom.getNumPositions());
     writePoints(geom.getPositions(), geom.getCoordinateDimension(), output);
   }
 }
 @Override
 public void visit(GeometryCollection geom) {
   writeByteOrder(output);
   DimensionalFlag dimension = DimensionalFlag.valueOf(geom.is3D(), geom.isMeasured());
   writeTypeCodeAndSrid(geom, dimension, output);
   output.putUInt(geom.getNumGeometries());
 }
 @Override
 public void visit(LineString geom) {
   writeByteOrder(output);
   DimensionalFlag dimension = DimensionalFlag.valueOf(geom.is3D(), geom.isMeasured());
   writeTypeCodeAndSrid(geom, dimension, output);
   output.putUInt(geom.getNumPoints());
   writePoints(geom.getPoints(), geom.getCoordinateDimension(), output);
 }
 @Override
 public void visit(PolyHedralSurface geom) {
   writeByteOrder(output);
   DimensionalFlag dimension = DimensionalFlag.valueOf(geom.is3D(), geom.isMeasured());
   writeTypeCodeAndSrid(geom, dimension, output);
   output.putUInt(geom.getNumPatches());
   for (Polygon pg : geom) {
     pg.accept(this);
   }
 }
 protected void writeTypeCodeAndSrid(
     Geometry geometry, DimensionalFlag dimension, ByteBuffer output) {
   int typeCode = getGeometryType(geometry);
   boolean hasSrid = (geometry.getSRID() > 0);
   if (hasSrid && !hasWrittenSrid) typeCode |= PostgisWkbTypeMasks.SRID_FLAG;
   if (dimension.isMeasured()) typeCode |= PostgisWkbTypeMasks.M_FLAG;
   if (dimension.is3D()) typeCode |= PostgisWkbTypeMasks.Z_FLAG;
   output.putUInt(typeCode);
   if (hasSrid && !hasWrittenSrid) {
     output.putInt(geometry.getSRID());
     hasWrittenSrid = true;
   }
 }
Exemplo n.º 6
0
 @Override
 public void visit(Polygon<P> geom) {
   writeByteOrder(output);
   writeTypeCodeAndSrid(geom, output);
   if (geom.isEmpty()) {
     output.putUInt(0);
   } else {
     writeNumRings(geom, output);
     for (LinearRing<P> ring : geom) {
       writeRing(ring);
     }
   }
 }
 private void writeNumRings(Polygon geom, ByteBuffer byteBuffer) {
   byteBuffer.putUInt(geom.isEmpty() ? 0 : geom.getNumInteriorRing() + 1);
 }
 private void writeRing(LinearRing geom) {
   output.putUInt(geom.getNumPoints());
   writePoints(geom.getPoints(), geom.getCoordinateDimension(), output);
 }
Exemplo n.º 9
0
 protected void writeNumRings(Polygon<P> geom, ByteBuffer byteBuffer) {
   byteBuffer.putUInt(geom.isEmpty() ? 0 : geom.getNumInteriorRing() + 1);
 }
Exemplo n.º 10
0
 protected void writeRing(LinearRing<P> geom) {
   output.putUInt(geom.getNumPositions());
   writePoints(geom.getPositions(), geom.getCoordinateDimension(), output);
 }
Exemplo n.º 11
0
 @Override
 public <G extends Geometry<P>> void visit(GeometryCollection<P, G> geom) {
   writeByteOrder(output);
   writeTypeCodeAndSrid(geom, output);
   output.putUInt(geom.getNumGeometries());
 }
Exemplo n.º 12
0
 protected void writeTypeCodeAndSrid(Geometry<P> geometry, ByteBuffer output) {
   int typeCode = getGeometryType(geometry);
   output.putUInt(typeCode);
 }