Skip to content

Commit ed26819

Browse files
added GeoTIFFTileLayer (#28)
* added GeoTIFFTileLayer * ApiKey * Update Playwright Snapshots --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 6e6212a commit ed26819

File tree

10 files changed

+166
-623
lines changed

10 files changed

+166
-623
lines changed

Diff for: examples/introduction.ipynb

+19-604
Large diffs are not rendered by default.

Diff for: ipyopenlayers/Map.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ class Layer(Widget):
2424
_view_module = Unicode(module_name).tag(sync=True)
2525
_view_module_version = Unicode(module_version).tag(sync=True)
2626

27-
class TileLayer(Layer):
27+
class RasterTileLayer(Layer):
2828

29-
_model_name = Unicode('TileLayerModel').tag(sync=True)
30-
_view_name = Unicode('TileLayerView').tag(sync=True)
29+
_model_name = Unicode('RasterTileLayerModel').tag(sync=True)
30+
_view_name = Unicode('RasterTileLayerView').tag(sync=True)
3131

3232
url = Unicode('https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png').tag(sync=True)
3333

@@ -39,6 +39,10 @@ class GeoJSON(Layer):
3939
style = Dict({}).tag(sync=True)
4040
visible = Bool(True).tag(sync=True)
4141

42+
class GeoTIFFTileLayer(Layer):
43+
_model_name = Unicode('GeoTIFFTileLayerModel').tag(sync=True)
44+
_view_name = Unicode('GeoTIFFTileLayerView').tag(sync=True)
45+
sources = List(Dict).tag(sync=True)
4246

4347
class HeatmapLayer(Layer):
4448
_view_name = Unicode('HeatmapLayerView').tag(sync=True)

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"ts-jest": "^29.1.2",
8181
"ts-loader": "^9.5.1",
8282
"typescript": "~5.3.3",
83-
"webpack": "^5.90.0",
83+
"webpack": "^5.93.0",
8484
"webpack-cli": "^5.1.4"
8585
},
8686
"devDependenciesComments": {

Diff for: src/geotifflayer.ts

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright (c) QuantStack
2+
// Distributed under the terms of the Modified BSD License.
3+
import { DOMWidgetModel, ISerializers } from '@jupyter-widgets/base';
4+
import WebGLTileLayer from 'ol/layer/WebGLTile.js';
5+
import GeoTIFF from 'ol/source/GeoTIFF.js';
6+
import { MODULE_NAME, MODULE_VERSION } from './version';
7+
import { LayerModel, LayerView } from './layer';
8+
9+
export class GeoTIFFTileLayerModel extends LayerModel {
10+
defaults() {
11+
return {
12+
...super.defaults(),
13+
_model_name: GeoTIFFTileLayerModel.model_name,
14+
_model_module: GeoTIFFTileLayerModel.model_module,
15+
_model_module_version: GeoTIFFTileLayerModel.model_module_version,
16+
_view_name: GeoTIFFTileLayerModel.view_name,
17+
_view_module: GeoTIFFTileLayerModel.view_module,
18+
_view_module_version: GeoTIFFTileLayerModel.view_module_version,
19+
source: [],
20+
};
21+
}
22+
23+
static serializers: ISerializers = {
24+
...DOMWidgetModel.serializers,
25+
// Add any extra serializers here
26+
};
27+
28+
static model_name = 'GeoTIFFTileLayerModel';
29+
static model_module = MODULE_NAME;
30+
static model_module_version = MODULE_VERSION;
31+
static view_name = 'GeoTIFFTileLayerView';
32+
static view_module = MODULE_NAME;
33+
static view_module_version = MODULE_VERSION;
34+
}
35+
36+
export class GeoTIFFTileLayerView extends LayerView {
37+
render() {
38+
super.render();
39+
this.sourcesChanged();
40+
this.model.on('change:sources', this.sourcesChanged, this);
41+
}
42+
43+
create_obj() {
44+
const sources = this.model.get('sources').map((source: any) => ({
45+
url: source.url,
46+
}));
47+
48+
this.obj = this.tileLayer = new WebGLTileLayer({
49+
source: new GeoTIFF({
50+
sources: sources,
51+
}),
52+
});
53+
}
54+
55+
sourcesChanged() {
56+
const newSources = this.model.get('sources').map((source: any) => ({
57+
url: source.url,
58+
}));
59+
60+
if (newSources) {
61+
const newSource = new GeoTIFF({
62+
sources: newSources,
63+
});
64+
this.tileLayer.setSource(newSource);
65+
}
66+
}
67+
68+
tileLayer: WebGLTileLayer;
69+
}

Diff for: src/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,3 @@
22
// Distributed under the terms of the Modified BSD License.
33
export * from './version';
44
export * from './widget';
5-
export * from './tilelayer';
6-
export * from './basecontrol';

Diff for: src/tilelayer.ts renamed to src/rastertilelayer.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import { MODULE_NAME, MODULE_VERSION } from './version';
88
import { MapView } from './widget';
99
import { LayerModel, LayerView } from './layer';
1010

11-
export class TileLayerModel extends LayerModel {
11+
export class RasterTileLayerModel extends LayerModel {
1212
defaults() {
1313
return {
1414
...super.defaults(),
15-
_model_name: TileLayerModel.model_name,
16-
_model_module: TileLayerModel.model_module,
17-
_model_module_version: TileLayerModel.model_module_version,
18-
_view_name: TileLayerModel.view_name,
19-
_view_module: TileLayerModel.view_module,
20-
_view_module_version: TileLayerModel.view_module_version,
15+
_model_name: RasterTileLayerModel.model_name,
16+
_model_module: RasterTileLayerModel.model_module,
17+
_model_module_version: RasterTileLayerModel.model_module_version,
18+
_view_name: RasterTileLayerModel.view_name,
19+
_view_module: RasterTileLayerModel.view_module,
20+
_view_module_version: RasterTileLayerModel.view_module_version,
2121
};
2222
}
2323

@@ -26,15 +26,15 @@ export class TileLayerModel extends LayerModel {
2626
// Add any extra serializers here
2727
};
2828

29-
static model_name = 'TileLayerModel';
29+
static model_name = 'RasterTileLayerModel';
3030
static model_module = MODULE_NAME;
3131
static model_module_version = MODULE_VERSION;
32-
static view_name = 'TileLayerView';
32+
static view_name = 'RasterTileLayerView';
3333
static view_module = MODULE_NAME;
3434
static view_module_version = MODULE_VERSION;
3535
}
3636

37-
export class TileLayerView extends LayerView {
37+
export class RasterTileLayerView extends LayerView {
3838
map_view: MapView;
3939

4040
render() {

Diff for: src/widget.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ export * from './zoomslider';
2828
export * from './fullscreen';
2929
export * from './scaleline';
3030
export * from './mouseposition';
31-
export * from './tilelayer';
31+
export * from './rastertilelayer';
3232
export * from './heatmap';
33+
export * from './geotifflayer';
3334

3435
const DEFAULT_LOCATION = [0.0, 0.0];
3536

Loading
Loading

Diff for: yarn.lock

+58-2
Original file line numberDiff line numberDiff line change
@@ -2779,6 +2779,15 @@ __metadata:
27792779
languageName: node
27802780
linkType: hard
27812781

2782+
"acorn-import-attributes@npm:^1.9.5":
2783+
version: 1.9.5
2784+
resolution: "acorn-import-attributes@npm:1.9.5"
2785+
peerDependencies:
2786+
acorn: ^8
2787+
checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95
2788+
languageName: node
2789+
linkType: hard
2790+
27822791
"acorn-jsx@npm:^5.3.2":
27832792
version: 5.3.2
27842793
resolution: "acorn-jsx@npm:5.3.2"
@@ -3857,6 +3866,16 @@ __metadata:
38573866
languageName: node
38583867
linkType: hard
38593868

3869+
"enhanced-resolve@npm:^5.17.0":
3870+
version: 5.17.0
3871+
resolution: "enhanced-resolve@npm:5.17.0"
3872+
dependencies:
3873+
graceful-fs: ^4.2.4
3874+
tapable: ^2.2.0
3875+
checksum: 1066000454da6a7aeabdbe1f433d912d1e39e6892142a78a37b6577aab27e0436091fa1399d857ad87085b1c3b73a0f811c8874da3dbdc40fbd5ebe89a5568e6
3876+
languageName: node
3877+
linkType: hard
3878+
38603879
"entities@npm:^4.2.0, entities@npm:^4.4.0":
38613880
version: 4.5.0
38623881
resolution: "entities@npm:4.5.0"
@@ -4981,7 +5000,7 @@ __metadata:
49815000
ts-jest: ^29.1.2
49825001
ts-loader: ^9.5.1
49835002
typescript: ~5.3.3
4984-
webpack: ^5.90.0
5003+
webpack: ^5.93.0
49855004
webpack-cli: ^5.1.4
49865005
languageName: unknown
49875006
linkType: soft
@@ -8382,7 +8401,7 @@ __metadata:
83828401
languageName: node
83838402
linkType: hard
83848403

8385-
"webpack@npm:^5.76.1, webpack@npm:^5.90.0":
8404+
"webpack@npm:^5.76.1":
83868405
version: 5.91.0
83878406
resolution: "webpack@npm:5.91.0"
83888407
dependencies:
@@ -8419,6 +8438,43 @@ __metadata:
84198438
languageName: node
84208439
linkType: hard
84218440

8441+
"webpack@npm:^5.93.0":
8442+
version: 5.93.0
8443+
resolution: "webpack@npm:5.93.0"
8444+
dependencies:
8445+
"@types/eslint-scope": ^3.7.3
8446+
"@types/estree": ^1.0.5
8447+
"@webassemblyjs/ast": ^1.12.1
8448+
"@webassemblyjs/wasm-edit": ^1.12.1
8449+
"@webassemblyjs/wasm-parser": ^1.12.1
8450+
acorn: ^8.7.1
8451+
acorn-import-attributes: ^1.9.5
8452+
browserslist: ^4.21.10
8453+
chrome-trace-event: ^1.0.2
8454+
enhanced-resolve: ^5.17.0
8455+
es-module-lexer: ^1.2.1
8456+
eslint-scope: 5.1.1
8457+
events: ^3.2.0
8458+
glob-to-regexp: ^0.4.1
8459+
graceful-fs: ^4.2.11
8460+
json-parse-even-better-errors: ^2.3.1
8461+
loader-runner: ^4.2.0
8462+
mime-types: ^2.1.27
8463+
neo-async: ^2.6.2
8464+
schema-utils: ^3.2.0
8465+
tapable: ^2.1.1
8466+
terser-webpack-plugin: ^5.3.10
8467+
watchpack: ^2.4.1
8468+
webpack-sources: ^3.2.3
8469+
peerDependenciesMeta:
8470+
webpack-cli:
8471+
optional: true
8472+
bin:
8473+
webpack: bin/webpack.js
8474+
checksum: c93bd73d9e1ab49b07e139582187f1c3760ee2cf0163b6288fab2ae210e39e59240a26284e7e5d29bec851255ef4b43c51642c882fa5a94e16ce7cb906deeb47
8475+
languageName: node
8476+
linkType: hard
8477+
84228478
"whatwg-mimetype@npm:^2.3.0":
84238479
version: 2.3.0
84248480
resolution: "whatwg-mimetype@npm:2.3.0"

0 commit comments

Comments
 (0)