Py.Cafe

giswqs/

solara-geemap

Using geemap with Solara

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import ee
import geemap
import solara
import pycafe
 
os.environ["EARTHENGINE_TOKEN"] = pycafe.get_secret("EARTHENGINE_TOKEN")
geemap.ee_initialize()

zoom = solara.reactive(4)
center = solara.reactive((40, -100))

class Map(geemap.Map):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.add_ee_data()

    def add_ee_data(self):

        counties = ee.FeatureCollection("WM/geoLab/geoBoundaries/600/ADM0")
        fc = counties.filter(ee.Filter.eq("shapeName", "Taiwan"))

        dem = ee.Image("USGS/SRTMGL1_003")
        landsat7 = ee.Image("LANDSAT/LE7_TOA_5YEAR/1999_2003").select(
            ["B1", "B2", "B3", "B4", "B5", "B7"]
        )

        vis_params = {
            "min": 0,
            "max": 4000,
            "palette": ["006633", "E5FFCC", "662A00", "D8D8D8", "F5F5F5"],
        }

        self.add_layer(
            landsat7,
            {"bands": ["B4", "B3", "B2"], "min": 20, "max": 200, "gamma": 2.0},
            "Landsat 7",
        )
        self.add_layer(dem, vis_params, "SRTM DEM")
        self.add_layer(fc, {}, "Taiwan")
        self.add("inspector")
        self.center_object(fc, 8)        

@solara.component
def Page():
    solara.lab.theme.dark = False
    with solara.Column(style={"min-width": "500px"}):
        Map.element(
            zoom=zoom.value,
            on_zoom=zoom.set,
            center=center.value,
            on_center=center.set,
            scroll_wheel_zoom=True,
            height="900px"
        )