diff --git a/.gitignore b/.gitignore
index 9fe443ea3c..883ec60caf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,6 +21,9 @@ target/
.settings
bin/
+# cursor
+.cursor/
+
TODO
data/
diff --git a/README.md b/README.md
index 94ee4916fb..f517f907ab 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ java -Xmx1g -jar planetiler.jar --download --area=monaco
Or using Docker:
```bash
-docker run -e JAVA_TOOL_OPTIONS="-Xmx1g" -v "$(pwd)/data":/data ghcr.io/onthegomap/planetiler:latest --download --area=monaco
+docker run --rm -e JAVA_TOOL_OPTIONS="-Xmx1g" -v "$(pwd)/data":/data ghcr.io/onthegomap/planetiler:latest --download --area=monaco
```
:warning: This starts off by downloading about 1GB of [data sources](NOTICE.md#data) required by the OpenMapTiles
@@ -73,7 +73,7 @@ java -Xmx1g -jar planetiler.jar --download --area=monaco \
Docker:
```bash
-docker run -e JAVA_TOOL_OPTIONS="-Xmx1g" -v "$(pwd)/data":/data ghcr.io/onthegomap/planetiler:latest --download --area=monaco \
+docker run --rm -e JAVA_TOOL_OPTIONS="-Xmx1g" -v "$(pwd)/data":/data ghcr.io/onthegomap/planetiler:latest --download --area=monaco \
--water-polygons-url=https://github.com/onthegomap/planetiler/raw/main/planetiler-core/src/test/resources/water-polygons-split-3857.zip \
--natural-earth-url=https://github.com/onthegomap/planetiler/raw/main/planetiler-core/src/test/resources/natural_earth_vector.sqlite.zip
```
diff --git a/planetiler-core/pom.xml b/planetiler-core/pom.xml
index 891ce2a465..29c8b70d7b 100644
--- a/planetiler-core/pom.xml
+++ b/planetiler-core/pom.xml
@@ -305,6 +305,25 @@
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.6.0
+
+
+ add-test-source
+ generate-test-sources
+
+ add-source
+
+
+
+ ${project.build.directory}/generated-sources/protobuf/java
+
+
+
+
+
diff --git a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java
index d94fcdc507..0549fc5f26 100644
--- a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java
+++ b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java
@@ -98,6 +98,20 @@ public class OsmReader implements Closeable, MemoryEstimator.HasEstimate {
private final Object waysInMultipolygonLock = new Object();
// ~7GB
private LongLongMultimap.Replaceable multipolygonWayGeometries;
+ // for relation_members: track relations that need member processing
+ private Roaring64Bitmap relationsForMemberProcessing = new Roaring64Bitmap();
+ // for relation_members: track node-to-relation membership
+ private LongLongMultimap.Appendable nodesToRelations = LongLongMultimap.newAppendableMultimap();
+ // for relation_members: track ways-to-relation membership
+ private Roaring64Bitmap waysInRelationMembers = new Roaring64Bitmap();
+ // for relation_members: store way geometries (node IDs) for member ways
+ private LongLongMultimap.Replaceable relationMembersWayGeometries;
+ // for relation_members: store way tags for member ways
+ private LongObjectHashMap