Hi list
The --used-node task keeps only the nodes that are used by at least one
way. This allows unnecessary nodes to be thrown out while ensuring ways
remain complete. *Relations*, however, are broken as the nodes
referenced by these are thrown out.
The attached trivial patch extends --used-node to keep a node if it is
referenced by at least one way *or relation* in the input stream. I am
using this locally and it works for me like a charm.
- Bartosz
Index:
trunk/tagfilter/src/org/openstreetmap/osmosis/tagfilter/v0_6/UsedNodeFilter.java
===================================================================
---
trunk/tagfilter/src/org/openstreetmap/osmosis/tagfilter/v0_6/UsedNodeFilter.java
(revision 25412)
+++
trunk/tagfilter/src/org/openstreetmap/osmosis/tagfilter/v0_6/UsedNodeFilter.java
(working copy)
@@ -7,6 +7,9 @@
import org.openstreetmap.osmosis.core.container.v0_6.NodeContainer;
import org.openstreetmap.osmosis.core.container.v0_6.RelationContainer;
import org.openstreetmap.osmosis.core.container.v0_6.WayContainer;
+import org.openstreetmap.osmosis.core.domain.v0_6.EntityType;
+import org.openstreetmap.osmosis.core.domain.v0_6.Relation;
+import org.openstreetmap.osmosis.core.domain.v0_6.RelationMember;
import org.openstreetmap.osmosis.core.domain.v0_6.Way;
import org.openstreetmap.osmosis.core.domain.v0_6.WayNode;
import org.openstreetmap.osmosis.core.filter.common.IdTracker;
@@ -25,6 +28,7 @@
* @author Brett Henderson
* @author Karl Newman
* @author Christoph Sommer
+ * @author Bartosz Fabianowski
*/
public class UsedNodeFilter implements SinkSource, EntityProcessor {
private Sink sink;
@@ -101,6 +105,17 @@
* {@inheritDoc}
*/
public void process(RelationContainer container) {
+ Relation relation;
+
+ // mark all nodes as required
+ relation = container.getEntity();
+ for (RelationMember memberReference : relation.getMembers()) {
+ if (memberReference.getMemberType() == EntityType.Node)
{
+ long nodeId = memberReference.getMemberId();
+ requiredNodes.set(nodeId);
+ }
+ }
+
allRelations.add(container);
}
_______________________________________________
osmosis-dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/osmosis-dev