writeToList method

void writeToList(
  1. Geometry g,
  2. List<int> out
)

Implementation

void writeToList(Geometry g, List<int> out) {
  GeometryHeaderFlags flags = new GeometryHeaderFlags(0);

  flags.setBinaryType(GeopackageBinaryType.StandardGeoPackageBinary);
  flags.setEmpty(g.isEmpty());
  flags.setEndianess(Endian.big);
  flags.setEnvelopeIndicator(
      writeEnvelope ? EnvelopeType.XY : EnvelopeType.NONE);

  GeometryHeader h = new GeometryHeader();
  h.setVersion(0);
  h.setFlags(flags);
  h.setSrid(g.getSRID());
  if (writeEnvelope) {
    h.setEnvelope(g.getEnvelopeInternal());
  }

  // write out magic + flags + srid + envelope
  out.add(0x47);
  out.add(0x50);
  out.add(h.getVersion());
  out.add(flags.toByte());

  Endian endian = flags.getEndianess();
  out.addAll(bytesFromInt32(g.getSRID(), endian));

  if (flags.getEnvelopeIndicator() != EnvelopeType.NONE) {
    Envelope env = g.getEnvelopeInternal();
    out.addAll(bytesFromDouble(env.getMinX(), endian));
    out.addAll(bytesFromDouble(env.getMaxX(), endian));
    out.addAll(bytesFromDouble(env.getMinY(), endian));
    out.addAll(bytesFromDouble(env.getMaxY(), endian));
  }

  new WKBWriter.withDimOrder(dim, endian).writeStream(g, out, true);
}