public static void writeHeaderMeta()

in baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufTypeConversion.java [77:119]


  public static void writeHeaderMeta(HeaderMeta headerMeta, WritableByteChannel channel,
      FlatBufferBuilder builder) throws IOException {
    int[] columnsArray = headerMeta.columns.stream().mapToInt(c -> {
      int nameOffset = builder.createString(c.name);
      int type = c.type;
      return org.wololo.flatgeobuf.generated.Column.createColumn(builder, nameOffset, type, 0, 0,
          c.width, c.precision, c.scale, c.nullable, c.unique,
          c.primary_key, 0);
    }).toArray();
    int columnsOffset = Header.createColumnsVector(builder, columnsArray);

    int nameOffset = 0;
    if (headerMeta.name != null) {
      nameOffset = builder.createString(headerMeta.name);
    }
    int crsOffset = 0;
    if (headerMeta.srid != 0) {
      Crs.startCrs(builder);
      Crs.addCode(builder, headerMeta.srid);
      crsOffset = Crs.endCrs(builder);
    }
    int envelopeOffset = 0;
    if (headerMeta.envelope != null) {
      envelopeOffset = Header.createEnvelopeVector(builder,
          new double[] {headerMeta.envelope.getMinX(), headerMeta.envelope.getMinY(),
              headerMeta.envelope.getMaxX(), headerMeta.envelope.getMaxY()});
    }
    Header.startHeader(builder);
    Header.addGeometryType(builder, headerMeta.geometryType);
    Header.addIndexNodeSize(builder, headerMeta.indexNodeSize);
    Header.addColumns(builder, columnsOffset);
    Header.addEnvelope(builder, envelopeOffset);
    Header.addName(builder, nameOffset);
    Header.addCrs(builder, crsOffset);
    Header.addFeaturesCount(builder, headerMeta.featuresCount);
    int offset = Header.endHeader(builder);

    builder.finishSizePrefixed(offset);

    ByteBuffer dataBuffer = builder.dataBuffer();
    while (dataBuffer.hasRemaining())
      channel.write(dataBuffer);
  }