kopia lustrzana https://github.com/JOSM/MapWithAI
rodzic
2028dad903
commit
ff8293e7d0
|
@ -7,6 +7,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -268,6 +269,7 @@ public class GetDataRunnable extends RecursiveTask<DataSet> {
|
||||||
mergeNodes(dataSet);
|
mergeNodes(dataSet);
|
||||||
cleanupDataSet(dataSet);
|
cleanupDataSet(dataSet);
|
||||||
mergeWays(dataSet);
|
mergeWays(dataSet);
|
||||||
|
removeDuplicateWays(dataSet);
|
||||||
PreConflatedDataUtils.removeConflatedData(dataSet, info);
|
PreConflatedDataUtils.removeConflatedData(dataSet, info);
|
||||||
removeAlreadyAddedData(dataSet);
|
removeAlreadyAddedData(dataSet);
|
||||||
List<Way> ways = dataSet.searchWays(boundsToUse.toBBox()).stream().filter(w -> w.hasKey("highway"))
|
List<Way> ways = dataSet.searchWays(boundsToUse.toBBox()).stream().filter(w -> w.hasKey("highway"))
|
||||||
|
@ -280,6 +282,27 @@ public class GetDataRunnable extends RecursiveTask<DataSet> {
|
||||||
.forEach(GetDataRunnable::cleanupArtifacts);
|
.forEach(GetDataRunnable::cleanupArtifacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove duplicate ways (mostly from MS buildings)
|
||||||
|
*
|
||||||
|
* @param dataSet The dataset to filter
|
||||||
|
* @see <a href="https://github.com/facebook/Rapid/issues/873">Rapid #873</a>
|
||||||
|
*/
|
||||||
|
private static void removeDuplicateWays(DataSet dataSet) {
|
||||||
|
final Collection<Way> toDelete = new ArrayList<>();
|
||||||
|
final Map<Integer, long[]> visited = new HashMap<>();
|
||||||
|
for (Way way : dataSet.getWays()) {
|
||||||
|
long[] nodeIds = way.getNodes().stream().mapToLong(AbstractPrimitive::getUniqueId).sorted().toArray();
|
||||||
|
int hash = Arrays.hashCode(nodeIds);
|
||||||
|
if (visited.containsKey(hash) && Arrays.equals(visited.get(hash), nodeIds)) {
|
||||||
|
toDelete.add(way);
|
||||||
|
} else {
|
||||||
|
visited.put(hash, nodeIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Optional.ofNullable(DeleteCommand.delete(toDelete, true, true)).ifPresent(Command::executeCommand);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove empty tags from primitives
|
* Remove empty tags from primitives
|
||||||
*
|
*
|
||||||
|
|
Ładowanie…
Reference in New Issue