kopia lustrzana https://github.com/onthegomap/planetiler
Porównaj commity
3 Commity
ed373ff3d3
...
6f6a4dd6ed
Autor | SHA1 | Data |
---|---|---|
dependabot[bot] | 6f6a4dd6ed | |
dependabot[bot] | 6b9c996df9 | |
Michael Barry | 978c64f0c6 |
|
@ -57,11 +57,29 @@ public class PolygonIndex<T> {
|
||||||
return postFilterContaining(point, items);
|
return postFilterContaining(point, items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the data associated with all polygons containing {@code point}. */
|
||||||
|
public List<T> getIntersecting(Geometry geom) {
|
||||||
|
build();
|
||||||
|
List<?> items = index.query(geom.getEnvelopeInternal());
|
||||||
|
return postFilterIntersecting(geom, items);
|
||||||
|
}
|
||||||
|
|
||||||
private List<T> postFilterContaining(Point point, List<?> items) {
|
private List<T> postFilterContaining(Point point, List<?> items) {
|
||||||
List<T> result = new ArrayList<>(items.size());
|
List<T> result = new ArrayList<>(items.size());
|
||||||
for (Object item : items) {
|
for (Object item : items) {
|
||||||
if (item instanceof GeomWithData<?> value && value.poly.contains(point)) {
|
if (item instanceof GeomWithData<?>(var poly,var data) && poly.contains(point)) {
|
||||||
@SuppressWarnings("unchecked") T t = (T) value.data;
|
@SuppressWarnings("unchecked") T t = (T) data;
|
||||||
|
result.add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<T> postFilterIntersecting(Geometry geom, List<?> items) {
|
||||||
|
List<T> result = new ArrayList<>(items.size());
|
||||||
|
for (Object item : items) {
|
||||||
|
if (item instanceof GeomWithData<?>(var poly,var data) && poly.intersects(geom)) {
|
||||||
|
@SuppressWarnings("unchecked") T t = (T) data;
|
||||||
result.add(t);
|
result.add(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,10 +21,13 @@ class PolygonIndexTest {
|
||||||
void testSingle() {
|
void testSingle() {
|
||||||
index.put(rectangle(0, 1), 1);
|
index.put(rectangle(0, 1), 1);
|
||||||
assertListsContainSameElements(List.of(1), index.getContaining(newPoint(0.5, 0.5)));
|
assertListsContainSameElements(List.of(1), index.getContaining(newPoint(0.5, 0.5)));
|
||||||
|
assertListsContainSameElements(List.of(1), index.getIntersecting(newPoint(0.5, 0.5)));
|
||||||
|
assertListsContainSameElements(List.of(1), index.getIntersecting(rectangle(1, 2)));
|
||||||
assertListsContainSameElements(List.of(1), index.getContainingOrNearest(newPoint(0.5, 0.5)));
|
assertListsContainSameElements(List.of(1), index.getContainingOrNearest(newPoint(0.5, 0.5)));
|
||||||
|
|
||||||
assertListsContainSameElements(List.of(), index.getContaining(newPoint(1.5, 1.5)));
|
assertListsContainSameElements(List.of(), index.getContaining(newPoint(1.5, 1.5)));
|
||||||
assertListsContainSameElements(List.of(), index.getContainingOrNearest(newPoint(1.5, 1.5)));
|
assertListsContainSameElements(List.of(), index.getContainingOrNearest(newPoint(1.5, 1.5)));
|
||||||
|
assertListsContainSameElements(List.of(), index.getIntersecting(rectangle(2, 3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -33,6 +36,9 @@ class PolygonIndexTest {
|
||||||
index.put(rectangle(0, 1), 2);
|
index.put(rectangle(0, 1), 2);
|
||||||
assertListsContainSameElements(List.of(1, 2), index.getContaining(newPoint(0.5, 0.5)));
|
assertListsContainSameElements(List.of(1, 2), index.getContaining(newPoint(0.5, 0.5)));
|
||||||
assertListsContainSameElements(List.of(1, 2), index.getContainingOrNearest(newPoint(0.5, 0.5)));
|
assertListsContainSameElements(List.of(1, 2), index.getContainingOrNearest(newPoint(0.5, 0.5)));
|
||||||
|
assertListsContainSameElements(List.of(1, 2), index.getIntersecting(rectangle(0.5, 1.5)));
|
||||||
|
assertListsContainSameElements(List.of(1, 2), index.getIntersecting(rectangle(1, 2)));
|
||||||
|
assertListsContainSameElements(List.of(), index.getIntersecting(rectangle(2, 3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
4
pom.xml
4
pom.xml
|
@ -313,7 +313,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
<version>3.3.0</version>
|
<version>3.3.1</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>attach-sources</id>
|
<id>attach-sources</id>
|
||||||
|
@ -394,7 +394,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-gpg-plugin</artifactId>
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
<version>3.2.2</version>
|
<version>3.2.3</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>sign-artifacts</id>
|
<id>sign-artifacts</id>
|
||||||
|
|
Ładowanie…
Reference in New Issue