Skip to content

Commit 009d4e9

Browse files
committed
Add example for creating a geopackage database from natural earth data.
1 parent d9fd754 commit 009d4e9

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import geoscript.layer.ImageTileRenderer
2+
import geoscript.layer.Layer
3+
import geoscript.layer.Pyramid
4+
import geoscript.layer.TileGenerator
5+
import geoscript.layer.TileRenderer
6+
import geoscript.style.Fill
7+
import geoscript.style.Stroke
8+
import geoscript.workspace.Directory
9+
import geoscript.workspace.GeoPackage
10+
11+
import static geoscript.GeoScript.download
12+
import static geoscript.GeoScript.unzip
13+
14+
// Download data from natural earth
15+
File dataDir = new File("naturalearth")
16+
[
17+
[name: "countries", url: "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip"],
18+
[name: "ocean", url: "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/physical/ne_110m_ocean.zip"],
19+
[name: "places", url: "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_populated_places.zip"],
20+
[name: "rivers", url: "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/physical/ne_110m_rivers_lake_centerlines.zip"],
21+
[name: "states", url: "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_1_states_provinces.zip"]
22+
23+
].each { Map item ->
24+
println "Downloading ${item.name} from ${item.url}..."
25+
unzip(download(new URL(item.url), new File(dataDir, "${item.name}.zip"), overwrite: false))
26+
}
27+
28+
// Add Shapefiles to a GeoPackage
29+
Directory directory = new Directory("naturalearth")
30+
31+
File file = new File("data.gpkg")
32+
if (file.exists()) {
33+
file.delete()
34+
}
35+
GeoPackage geopackage = new GeoPackage(file)
36+
37+
[
38+
"ne_110m_admin_0_countries": "countries",
39+
"ne_110m_ocean": "ocean",
40+
"ne_110m_populated_places": "places",
41+
"ne_110m_rivers_lake_centerlines": "rivers",
42+
"ne_110m_admin_1_states_provinces": "states"
43+
].each { String name, String alias ->
44+
println "Adding ${name} as ${alias}"
45+
geopackage.add(directory.get(name), alias)
46+
new Directory(new File("shapefiles")).add(directory.get(name), alias)
47+
}
48+
49+
// Generate Tiles
50+
Layer countries = geopackage.get("countries")
51+
countries.style = new Fill("#ffffff") + new Stroke("#b2b2b2", 0.5)
52+
Layer ocean = geopackage.get("ocean")
53+
ocean.style = new Fill("#a5bfdd")
54+
55+
TileGenerator generator = new TileGenerator(verbose: true)
56+
57+
// world
58+
geoscript.layer.GeoPackage gpkg = new geoscript.layer.GeoPackage(file, "world", Pyramid.createGlobalGeodeticPyramid(origin: Pyramid.Origin.TOP_LEFT))
59+
TileRenderer renderer = new ImageTileRenderer(gpkg, [ocean, countries])
60+
println "Generating world global geodetic tiles..."
61+
generator.generate(gpkg, renderer, 0, 3)
62+
63+
64+
gpkg = new geoscript.layer.GeoPackage(file, "world_mercator", Pyramid.createGlobalMercatorPyramid(origin: Pyramid.Origin.TOP_LEFT))
65+
renderer = new ImageTileRenderer(gpkg, [ocean, countries])
66+
println "Generating world_mercator global mercator tiles..."
67+
generator.generate(gpkg, renderer, 0, 3)

0 commit comments

Comments
 (0)