Skip to content

Commit 5cbfabc

Browse files
committed
Include the layer's geometry name when using Filter.intersects
1 parent 4de52ed commit 5cbfabc

4 files changed

Lines changed: 43 additions & 4 deletions

File tree

src/main/groovy/geoscript/layer/Layer.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1497,7 +1497,7 @@ class Layer implements Renderable {
14971497

14981498
// Iterate through all of the Features in the input Layer
14991499
clippedLayer.withWriter { w ->
1500-
this.eachFeature(Filter.intersects(clipLayer.bounds.geometry), { f ->
1500+
this.eachFeature(Filter.intersects(this.schema.geom.name, clipLayer.bounds.geometry), { f ->
15011501
// See if the Feature intersects with the Bounds of any Feature in the spatial index
15021502
index.query(f.bounds).each { clipFeature ->
15031503
// Make sure it actually intersects the Geometry of a Feature in the spatial index

src/main/groovy/geoscript/layer/VectorTileRenderer.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class VectorTileRenderer implements TileRenderer {
5050
Layer outLayer = new Layer(layer.name, layer.schema.includeFields(fields, layer.name))
5151
Bounds projectedBounds = b.reproject(layer.proj)
5252
Geometry boundsGeom = projectedBounds.geometry
53-
layer.eachFeature(Filter.intersects(boundsGeom), { Feature f ->
53+
layer.eachFeature(Filter.intersects(layer.schema.geom.name, boundsGeom), { Feature f ->
5454
// Crop the Geometry to the Bounds
5555
Geometry geom = f.geom.intersection(boundsGeom)
5656
// Collect the attributes

src/main/groovy/geoscript/layer/io/Pbf.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class Pbf {
144144
VectorTile.Tile.Layer.Builder layerBuilder = MvtLayerBuild.newLayerBuilder(layer.name, mvtParams)
145145
MvtLayerProps layerProps = new MvtLayerProps()
146146
List<JtsGeometry> geometries = []
147-
layer.eachFeature(Filter.intersects(boundsGeom), { Feature f ->
147+
layer.eachFeature(Filter.intersects(layer.schema.geom.name, boundsGeom), { Feature f ->
148148
Geometry geom = isPoint ? f.geom : f.geom.intersection(boundsGeom)
149149
if (!geom.empty) {
150150
ProjectionHandler projectionHandler = ProjectionHandlerFinder.getHandler(b.env, layer.proj.crs, true)

src/test/groovy/geoscript/layer/io/PbfTestCase.groovy

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package geoscript.layer.io
22

3+
import geoscript.feature.Field
4+
import geoscript.feature.Schema
35
import geoscript.geom.Bounds
6+
import geoscript.geom.Geometry
7+
import geoscript.geom.Point
48
import geoscript.layer.Layer
59
import geoscript.layer.Pyramid
610
import geoscript.layer.Shapefile
711
import geoscript.layer.Tile
12+
import geoscript.workspace.Memory
13+
import geoscript.workspace.Workspace
814
import org.junit.Test
915

10-
import static org.junit.Assert.assertTrue
16+
import static org.junit.Assert.*
1117

1218
/**
1319
* The Pbf Unit Test
@@ -29,4 +35,37 @@ class PbfTestCase {
2935
assertTrue pbfLayer.count > 0
3036
}
3137

38+
@Test void test() {
39+
40+
Workspace workspace = new Memory()
41+
Schema schema = new Schema("cities", [
42+
new Field("geom", "Point", "EPSG:4326"),
43+
new Field("id", "Integer"),
44+
new Field("name", "String")
45+
])
46+
Layer layer = workspace.create(schema)
47+
layer.add([
48+
geom: new Point(-122.3204, 47.6024),
49+
id: 1,
50+
name: "Seattle"
51+
])
52+
layer.add([
53+
geom: new Point(-122.48416, 47.2619),
54+
id: 2,
55+
name: "Tacoma"
56+
])
57+
58+
Pyramid pyramid = Pyramid.createGlobalMercatorPyramid(origin: Pyramid.Origin.TOP_LEFT)
59+
Tile tile = new Tile(4,2,5)
60+
Bounds bounds = pyramid.bounds(tile)
61+
Bounds projectedBounds = bounds.reproject("EPSG:4326")
62+
Geometry projecteBoundsGeom = projectedBounds.geometry
63+
64+
byte[] bytes = Pbf.write([layer], bounds)
65+
66+
List<Layer> layers = Pbf.read(bytes, bounds)
67+
assertEquals(1, layers.size())
68+
assertEquals(2, layers[0].count)
69+
}
70+
3271
}

0 commit comments

Comments
 (0)