Skip to content

Commit 4bfa1d4

Browse files
committed
Add a few more Process examples.
1 parent f134f6a commit 4bfa1d4

File tree

3 files changed

+144
-0
lines changed

3 files changed

+144
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import geoscript.geom.*
2+
import geoscript.workspace.*
3+
import geoscript.layer.*
4+
import geoscript.feature.*
5+
import geoscript.style.*
6+
import geoscript.filter.Function
7+
import geoscript.process.*
8+
import geoscript.render.Map
9+
10+
Bounds bounds = new Bounds(0,0,10,10,"EPSG:4326")
11+
12+
Workspace workspace = new Memory()
13+
Layer layer = workspace.create(new Schema("grid",[
14+
new Field("geom","Point","EPSG:4326"),
15+
new Field("row","int"),
16+
new Field("col","int"),
17+
new Field("value","double")
18+
]))
19+
20+
bounds.generateGrid(10,10,"point", {g,c,r ->
21+
double value = 0
22+
if (c in [1,2] && r in [1,2]) value = 1
23+
if (c in [3,4] && r in [1,2,3,4] || c in [1,2] && r in [3,4]) value = 30
24+
if (c in [5,6] && r in [1,2,3,4,5,6] || c in [1,2,3,4] && r in [5,6]) value = 60
25+
if (c in [7,8] && r in [1,2,3,4,5,6,7,8] || c in [1,2,3,4,5,6] && r in [7,8]) value = 70
26+
if (c in [9,10] && r in [1,2,3,4,5,6,7,8,9,10] || c in [1,2,3,4,5,6,7,8] && r in [9,10]) value = 100
27+
layer.add([geom: g,col:c, row:r, value: value])
28+
})
29+
30+
layer.style = new Shape("navy", 6, "circle", 0.55, 0) + new Label(new Function("Concatenate(value)")).point([0.5,0.5],[0,5])
31+
32+
Process process = new Process("vec:BarnesSurface")
33+
results = process.execute([
34+
data: layer.cursor,
35+
valueAttr: "value",
36+
scale: 300,
37+
convergence: 0.3,
38+
passes: 2,
39+
minObservations: 1,
40+
maxObservationDistance: 0,
41+
pixelsPerCell: 1,
42+
noDataValue: -999,
43+
outputWidth: 100,
44+
outputHeight: 100,
45+
outputBBOX: layer.bounds
46+
])
47+
Raster raster = results.result
48+
raster.style = new ColorMap(raster, ["#f7da22","#ecbe1d","#e77124","#d54927","#cf3a27", "#a33936", "#7f182a", "#68101a"])
49+
50+
Map map = new Map([layers:[raster, layer]])
51+
map.bounds = layer.bounds.expandBy(3)
52+
map.renderToImage()
53+

examples/process_heatmap.groovy

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import geoscript.layer.*
2+
import geoscript.workspace.*
3+
import geoscript.layer.io.GeoJSONReader
4+
import geoscript.process.Process
5+
import geoscript.render.*
6+
import geoscript.style.*
7+
8+
// Get earthquakes from USGS GeoJSON feed
9+
tempLayer = new GeoJSONReader().read(new URL("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson").text)
10+
Memory workspace = new Memory()
11+
layer = workspace.create(tempLayer.schema.reproject("EPSG:4326", "earthquakes"))
12+
tempLayer.eachFeature{f->
13+
layer.add(f)
14+
}
15+
16+
// Get the heatmap process
17+
process = new Process("vec:Heatmap")
18+
println "Process ${process.name} parameters: ${process.parameters}"
19+
20+
// Create a heatmap of the earthquakes
21+
results = process.execute([
22+
data: layer,
23+
radiusPixels: 10,
24+
pixelsPerCell: 10,
25+
outputWidth: 600,
26+
outputHeight: 400,
27+
outputBBOX: layer.bounds
28+
])
29+
30+
Raster raster = results.result
31+
println "Raster extrema: ${raster.extrema}"
32+
raster.style = new ColorMap([
33+
[color: "#f7da22", quantity:0],
34+
[color: "#ecbe1d", quantity:0.1],
35+
[color: "#e77124", quantity:0.2],
36+
[color: "#d54927", quantity:0.3],
37+
[color: "#cf3a27", quantity:0.7],
38+
[color: "#a33936", quantity:0.8],
39+
[color: "#7f182a", quantity:0.9],
40+
[color: "#68101a", quantity:1]
41+
])
42+
43+
Map map = new Map([layers:[raster,layer]])
44+
map.renderToImage()

examples/process_point_stacker.groovy

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import geoscript.geom.*
2+
import geoscript.layer.*
3+
import geoscript.feature.*
4+
import geoscript.workspace.*
5+
import geoscript.layer.io.GeoJSONReader
6+
import geoscript.process.Process
7+
import geoscript.render.*
8+
import geoscript.style.*
9+
10+
tempLayer = new GeoJSONReader().read(new URL("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson").text)
11+
Memory workspace = new Memory()
12+
layer = workspace.create(tempLayer.schema.reproject("EPSG:4326", "earthquakes"))
13+
tempLayer.eachFeature{f->
14+
layer.add(f)
15+
}
16+
17+
println "Layer ${layer.name} has ${layer.count} features!"
18+
println " Schema: ${layer.schema}"
19+
println " Bounds: ${layer.bounds}"
20+
println " CRS: ${layer.proj?.id}"
21+
22+
process = new Process("vec:PointStacker")
23+
println "Process ${process.name} parameters: ${process.parameters}"
24+
25+
results = process.execute([
26+
data: layer,
27+
cellSize: 10,
28+
outputWidth: 600,
29+
outputHeight: 400,
30+
outputBBOX: layer.bounds
31+
])
32+
33+
Cursor cursor = results.result
34+
outLayer = workspace.create(new Schema("stacked",[["geom", "Point"],["count", "int"],["countunique", "int"]]))
35+
cursor.each{f ->
36+
outLayer.add(f)
37+
}
38+
39+
layer.style = new Shape(type: "triangle", size: 3, color: "red")
40+
outLayer.style = (
41+
(new Shape(type: "circle", size: 8, color: "wheat") + new Label("count").where("count >= 1 and count <=2")) +
42+
(new Shape(type: "circle", size: 12, color: "wheat") + new Label("count").where("count > 2 and count <=4")) +
43+
(new Shape(type: "circle", size: 18, color: "wheat") + new Label("count").where("count > 4"))
44+
)
45+
46+
Map map = new Map(layers: [layer, outLayer])
47+
map.renderToImage()

0 commit comments

Comments
 (0)