This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to refs/heads/main by this push:
new 3507a41a Fix the header of the pmtiles (#820)
3507a41a is described below
commit 3507a41ac96a145a88fcee5dff371956382444d0
Author: Bertil Chapuis <[email protected]>
AuthorDate: Fri Jan 5 15:45:01 2024 +0100
Fix the header of the pmtiles (#820)
---
.run/basemap-export-pmtiles.run.xml | 2 +-
.../apache/baremaps/tilestore/pmtiles/Header.java | 35 ++++++++++++++++++++++
.../baremaps/tilestore/pmtiles/PMTilesWriter.java | 2 +-
.../baremaps/workflow/tasks/ExportVectorTiles.java | 3 +-
4 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/.run/basemap-export-pmtiles.run.xml
b/.run/basemap-export-pmtiles.run.xml
index 840a4774..d6c8830d 100644
--- a/.run/basemap-export-pmtiles.run.xml
+++ b/.run/basemap-export-pmtiles.run.xml
@@ -2,7 +2,7 @@
<configuration default="false" name="basemap-export-pmtiles"
type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.apache.baremaps.cli.Baremaps" />
<module name="baremaps-cli" />
- <option name="PROGRAM_PARAMETERS" value="map export --tileset tileset.js
--repository tiles.mbtiles --format pmtiles" />
+ <option name="PROGRAM_PARAMETERS" value="map export --tileset tileset.js
--repository tiles.pmtiles --format pmtiles" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
<method v="2">
<option name="Make" enabled="true" />
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/Header.java
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/Header.java
index b1e3bddf..b8ef13d1 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/Header.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/Header.java
@@ -30,8 +30,43 @@ class Header {
private long leafDirectoryLength;
private long tileDataOffset;
private long tileDataLength;
+
+ /**
+ * Number of Addressed Tiles
+ * <p>
+ * The Number of Addressed Tiles is an 8-byte field specifying the total
number of tiles in the
+ * PMTiles archive, before RunLength Encoding.
+ * <p>
+ * A value of 0 indicates that the number is unknown.
+ * <p>
+ * This field is encoded as a little-endian 64-bit unsigned integer.
+ */
private long numAddressedTiles;
+
+ /**
+ * Number of Tile Entries
+ * <p>
+ * The Number of Tile Entries is an 8-byte field specifying the total number
of tile entries:
+ * entries where RunLength is greater than 0.
+ * <p>
+ * A value of 0 indicates that the number is unknown.
+ * <p>
+ * This field is encoded as a little-endian 64-bit unsigned integer.
+ *
+ * @return the number of tile entries
+ */
private long numTileEntries;
+
+ /**
+ * Number of tile entries.
+ * <p>
+ * The Number of Tile Contents is an 8-byte field specifying the total
number of blobs in the tile
+ * data section.
+ * <p>
+ * A value of 0 indicates that the number is unknown.
+ * <p>
+ * This field is encoded as a little-endian 64-bit unsigned integer.
+ */
private long numTileContents;
private boolean clustered;
private Compression internalCompression;
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesWriter.java
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesWriter.java
index 892a692d..5b50e5d0 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesWriter.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesWriter.java
@@ -178,7 +178,7 @@ public class PMTilesWriter {
var header = new Header();
header.setNumAddressedTiles(numTiles);
header.setNumTileEntries(numTiles);
- header.setNumTileContents(numTiles);
+ header.setNumTileContents(tileHashToOffset.size());
header.setClustered(true);
header.setInternalCompression(compression);
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
index 8e277ef8..7a44864f 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
@@ -147,8 +147,7 @@ public class ExportVectorTiles implements Task {
return tilesStore;
case pmtiles:
Files.deleteIfExists(repository);
- var tileStore = new PMTilesStore(repository, source);
- return tileStore;
+ return new PMTilesStore(repository, source);
default:
throw new IllegalArgumentException("Unsupported format");
}