Geographical search¶
Define a cql2-json filter for:
SDA20=1&if_no_html=1&AVG=20&year=2000&month=6&day=1&hour=0&year2=2000&month2=6&day2=14&hour2=23&lon1=8.0&lat1=44.0&lon2=14.0&lat2=48.0
In [1]:
Copied!
from pathlib import Path
from pystac import Item
import json
import sys
out_dir: Path = Path('.')
cql2_filter = {
"op": "and",
"args": [
{"op": "eq", "args": [{"property": "data_type"}, "SDA20"]},
{"op": "eq", "args": [{"property": "format"}, "csv"]},
{"op": "eq", "args": [{"property": "data_format"}, "daily-average"]},
{
"op": "t_after",
"args": [
{"property": "time"},
{"timestamp": "2000-06-01T00:00:00Z"},
],
},
{
"op": "t_before",
"args": [
{"property": "time"},
{"timestamp": "2000-06-14T23:59:59Z"},
],
},
{
"op": "s_intersects",
"args": [
{"property": "geometry"},
{
"type": "Polygon",
"coordinates": [
[
[8.0, 44.0],
[14.0, 44.0],
[14.0, 48.0],
[8.0, 48.0],
[8.0, 44.0],
]
],
},
],
},
],
}
json.dump(cql2_filter, sys.stdout, indent=2)
from pathlib import Path
from pystac import Item
import json
import sys
out_dir: Path = Path('.')
cql2_filter = {
"op": "and",
"args": [
{"op": "eq", "args": [{"property": "data_type"}, "SDA20"]},
{"op": "eq", "args": [{"property": "format"}, "csv"]},
{"op": "eq", "args": [{"property": "data_format"}, "daily-average"]},
{
"op": "t_after",
"args": [
{"property": "time"},
{"timestamp": "2000-06-01T00:00:00Z"},
],
},
{
"op": "t_before",
"args": [
{"property": "time"},
{"timestamp": "2000-06-14T23:59:59Z"},
],
},
{
"op": "s_intersects",
"args": [
{"property": "geometry"},
{
"type": "Polygon",
"coordinates": [
[
[8.0, 44.0],
[14.0, 44.0],
[14.0, 48.0],
[8.0, 48.0],
[8.0, 44.0],
]
],
},
],
},
],
}
json.dump(cql2_filter, sys.stdout, indent=2)
{
"op": "and",
"args": [
{
"op": "eq",
"args": [
{
"property": "data_type"
},
"SDA20"
]
},
{
"op": "eq",
"args": [
{
"property": "format"
},
"csv"
]
},
{
"op": "eq",
"args": [
{
"property": "data_format"
},
"daily-average"
]
},
{
"op": "t_after",
"args": [
{
"property": "time"
},
{
"timestamp": "2000-06-01T00:00:00Z"
}
]
},
{
"op": "t_before",
"args": [
{
"property": "time"
},
{
"timestamp": "2000-06-14T23:59:59Z"
}
]
},
{
"op": "s_intersects",
"args": [
{
"property": "geometry"
},
{
"type": "Polygon",
"coordinates": [
[
[
8.0,
44.0
],
[
14.0,
44.0
],
[
14.0,
48.0
],
[
8.0,
48.0
],
[
8.0,
44.0
]
]
]
}
]
}
]
}
Execute the search operation¶
In [2]:
Copied!
from pygeofilter_aeronet import aeronet_search
from pygeofilter_aeronet.utils import json_dump
item: Item = aeronet_search(
cql2_filter=cql2_filter,
output_dir=out_dir
)
json_dump(item.to_dict(), pretty_print=True)
from pygeofilter_aeronet import aeronet_search
from pygeofilter_aeronet.utils import json_dump
item: Item = aeronet_search(
cql2_filter=cql2_filter,
output_dir=out_dir
)
json_dump(item.to_dict(), pretty_print=True)
2025-11-18 21:47:56.224 | SUCCESS | pygeofilter_aeronet:aeronet_search:246 - Query on https://aeronet.gsfc.nasa.gov successfully obtained data:
2025-11-18 21:47:56.230 | SUCCESS | pygeofilter_aeronet:aeronet_search:259 - Data saved to to CSV file: /home/runner/work/pygeofilter-aeronet/pygeofilter-aeronet/docs/samples/519d1cb5-081c-4a10-bc56-eca183597622.csv
2025-11-18 21:47:56.244 | SUCCESS | pygeofilter_aeronet:aeronet_search:293 - Data saved to GeoParquet file: /home/runner/work/pygeofilter-aeronet/pygeofilter-aeronet/docs/samples/519d1cb5-081c-4a10-bc56-eca183597622.parquet
{
"type": "Feature",
"stac_version": "1.1.0",
"stac_extensions": [
"https://stac-extensions.github.io/table/v1.2.0/schema.json"
],
"id": "urn:uuid:519d1cb5-081c-4a10-bc56-eca183597622",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
8.6267,
45.3139
],
[
12.5083,
45.3139
],
[
12.5083,
45.80305
],
[
8.6267,
45.80305
],
[
8.6267,
45.3139
]
]
]
},
"bbox": [
8.6267,
45.3139,
12.5083,
45.80305
],
"properties": {
"datetime": "2025-11-18T21:47:56.246128Z"
},
"links": [
{
"rel": "related",
"href": "https://aeronet.gsfc.nasa.gov/cgi-bin/print_web_data_v3?SDA20=1&if_no_html=1&AVG=20&year=2000&month=6&day=1&hour=0&year2=2000&month2=6&day2=14&hour2=23&lon1=8.0&lat1=44.0&lon2=14.0&lat2=48.0",
"type": "text/csv",
"title": "AERONET Web Service search"
}
],
"assets": {
"csv": {
"href": "519d1cb5-081c-4a10-bc56-eca183597622.csv",
"type": "text/csv",
"description": "Search result - CVS Format",
"table:row_count": 25,
"table:columns": [
{
"name": "AERONET_Site",
"col_type": "object"
},
{
"name": "Date_(dd:mm:yyyy)",
"col_type": "object"
},
{
"name": "Time_(hh:mm:ss)",
"col_type": "object"
},
{
"name": "Day_of_Year",
"col_type": "int64"
},
{
"name": "Total_AOD_500nm[tau_a]",
"col_type": "float64"
},
{
"name": "Fine_Mode_AOD_500nm[tau_f]",
"col_type": "float64"
},
{
"name": "Coarse_Mode_AOD_500nm[tau_c]",
"col_type": "float64"
},
{
"name": "FineModeFraction_500nm[eta]",
"col_type": "float64"
},
{
"name": "2nd_Order_Reg_Fit_Error-Total_AOD_500nm[regression_dtau_a]",
"col_type": "float64"
},
{
"name": "RMSE_Fine_Mode_AOD_500nm[Dtau_f]",
"col_type": "float64"
},
{
"name": "RMSE_Coarse_Mode_AOD_500nm[Dtau_c]",
"col_type": "float64"
},
{
"name": "RMSE_FineModeFraction_500nm[Deta]",
"col_type": "float64"
},
{
"name": "Angstrom_Exponent(AE)-Total_500nm[alpha]",
"col_type": "float64"
},
{
"name": "dAE/dln(wavelength)-Total_500nm[alphap]",
"col_type": "float64"
},
{
"name": "AE-Fine_Mode_500nm[alpha_f]",
"col_type": "float64"
},
{
"name": "dAE/dln(wavelength)-Fine_Mode_500nm[alphap_f]",
"col_type": "float64"
},
{
"name": "N[Total_AOD_500nm[tau_a]]",
"col_type": "int64"
},
{
"name": "N[Fine_Mode_AOD_500nm[tau_f]]",
"col_type": "int64"
},
{
"name": "N[Coarse_Mode_AOD_500nm[tau_c]]",
"col_type": "int64"
},
{
"name": "N[FineModeFraction_500nm[eta]]",
"col_type": "int64"
},
{
"name": "N[2nd_Order_Reg_Fit_Error-Total_AOD_500nm[regression_dtau_a]]",
"col_type": "int64"
},
{
"name": "N[RMSE_Fine_Mode_AOD_500nm[Dtau_f]]",
"col_type": "int64"
},
{
"name": "N[RMSE_Coarse_Mode_AOD_500nm[Dtau_c]]",
"col_type": "int64"
},
{
"name": "N[RMSE_FineModeFraction_500nm[Deta]]",
"col_type": "int64"
},
{
"name": "N[Angstrom_Exponent(AE)-Total_500nm[alpha]]",
"col_type": "int64"
},
{
"name": "N[dAE/dln(wavelength)-Total_500nm[alphap]]",
"col_type": "int64"
},
{
"name": "N[AE-Fine_Mode_500nm[alpha_f]]",
"col_type": "int64"
},
{
"name": "N[dAE/dln(wavelength)-Fine_Mode_500nm[alphap_f]]",
"col_type": "int64"
},
{
"name": "Data_Quality_Level",
"col_type": "object"
},
{
"name": "AERONET_Instrument_Number",
"col_type": "int64"
},
{
"name": "AERONET_Site_Name",
"col_type": "object"
},
{
"name": "Site_Latitude(Degrees)",
"col_type": "float64"
},
{
"name": "Site_Longitude(Degrees)",
"col_type": "float64"
},
{
"name": "Site_Elevation(m)",
"col_type": "float64"
},
{
"name": "Unnamed: 34",
"col_type": "float64"
}
]
},
"geoparquet": {
"href": "519d1cb5-081c-4a10-bc56-eca183597622.parquet",
"type": "application/vnd.apache.parquet",
"description": "Search result - GeoParquet Format",
"table:row_count": 25,
"table:columns": [
{
"name": "AERONET_Site",
"col_type": "object"
},
{
"name": "Date_(dd:mm:yyyy)",
"col_type": "object"
},
{
"name": "Time_(hh:mm:ss)",
"col_type": "object"
},
{
"name": "Day_of_Year",
"col_type": "int64"
},
{
"name": "Total_AOD_500nm[tau_a]",
"col_type": "float64"
},
{
"name": "Fine_Mode_AOD_500nm[tau_f]",
"col_type": "float64"
},
{
"name": "Coarse_Mode_AOD_500nm[tau_c]",
"col_type": "float64"
},
{
"name": "FineModeFraction_500nm[eta]",
"col_type": "float64"
},
{
"name": "2nd_Order_Reg_Fit_Error-Total_AOD_500nm[regression_dtau_a]",
"col_type": "float64"
},
{
"name": "RMSE_Fine_Mode_AOD_500nm[Dtau_f]",
"col_type": "float64"
},
{
"name": "RMSE_Coarse_Mode_AOD_500nm[Dtau_c]",
"col_type": "float64"
},
{
"name": "RMSE_FineModeFraction_500nm[Deta]",
"col_type": "float64"
},
{
"name": "Angstrom_Exponent(AE)-Total_500nm[alpha]",
"col_type": "float64"
},
{
"name": "dAE/dln(wavelength)-Total_500nm[alphap]",
"col_type": "float64"
},
{
"name": "AE-Fine_Mode_500nm[alpha_f]",
"col_type": "float64"
},
{
"name": "dAE/dln(wavelength)-Fine_Mode_500nm[alphap_f]",
"col_type": "float64"
},
{
"name": "N[Total_AOD_500nm[tau_a]]",
"col_type": "int64"
},
{
"name": "N[Fine_Mode_AOD_500nm[tau_f]]",
"col_type": "int64"
},
{
"name": "N[Coarse_Mode_AOD_500nm[tau_c]]",
"col_type": "int64"
},
{
"name": "N[FineModeFraction_500nm[eta]]",
"col_type": "int64"
},
{
"name": "N[2nd_Order_Reg_Fit_Error-Total_AOD_500nm[regression_dtau_a]]",
"col_type": "int64"
},
{
"name": "N[RMSE_Fine_Mode_AOD_500nm[Dtau_f]]",
"col_type": "int64"
},
{
"name": "N[RMSE_Coarse_Mode_AOD_500nm[Dtau_c]]",
"col_type": "int64"
},
{
"name": "N[RMSE_FineModeFraction_500nm[Deta]]",
"col_type": "int64"
},
{
"name": "N[Angstrom_Exponent(AE)-Total_500nm[alpha]]",
"col_type": "int64"
},
{
"name": "N[dAE/dln(wavelength)-Total_500nm[alphap]]",
"col_type": "int64"
},
{
"name": "N[AE-Fine_Mode_500nm[alpha_f]]",
"col_type": "int64"
},
{
"name": "N[dAE/dln(wavelength)-Fine_Mode_500nm[alphap_f]]",
"col_type": "int64"
},
{
"name": "Data_Quality_Level",
"col_type": "object"
},
{
"name": "AERONET_Instrument_Number",
"col_type": "int64"
},
{
"name": "AERONET_Site_Name",
"col_type": "object"
},
{
"name": "Site_Latitude(Degrees)",
"col_type": "float64"
},
{
"name": "Site_Longitude(Degrees)",
"col_type": "float64"
},
{
"name": "Site_Elevation(m)",
"col_type": "float64"
},
{
"name": "Unnamed: 34",
"col_type": "float64"
},
{
"name": "geometry",
"col_type": "geometry"
},
{
"name": "datetime",
"col_type": "datetime64[ns]"
}
]
}
}
}
Visualize the results as Data Frame¶
In [3]:
Copied!
from geopandas import read_parquet
from geopandas.geodataframe import GeoDataFrame
geoparquet_file: str = item.get_assets()['geoparquet'].href
geoparquet_data: GeoDataFrame = read_parquet(geoparquet_file)
geoparquet_data
from geopandas import read_parquet
from geopandas.geodataframe import GeoDataFrame
geoparquet_file: str = item.get_assets()['geoparquet'].href
geoparquet_data: GeoDataFrame = read_parquet(geoparquet_file)
geoparquet_data
Out[3]:
| AERONET_Site | Date_(dd:mm:yyyy) | Time_(hh:mm:ss) | Day_of_Year | Total_AOD_500nm[tau_a] | Fine_Mode_AOD_500nm[tau_f] | Coarse_Mode_AOD_500nm[tau_c] | FineModeFraction_500nm[eta] | 2nd_Order_Reg_Fit_Error-Total_AOD_500nm[regression_dtau_a] | RMSE_Fine_Mode_AOD_500nm[Dtau_f] | ... | N[dAE/dln(wavelength)-Fine_Mode_500nm[alphap_f]] | Data_Quality_Level | AERONET_Instrument_Number | AERONET_Site_Name | Site_Latitude(Degrees) | Site_Longitude(Degrees) | Site_Elevation(m) | Unnamed: 34 | geometry | datetime | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Venise | 31:05:2000 | 12:00:00 | 152 | 0.702868 | 0.691315 | 0.011553 | 0.983048 | 0.004935 | 0.201480 | ... | 23 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-05-31 12:00:00 |
| 1 | Venise | 01:06:2000 | 12:00:00 | 153 | 0.240019 | 0.231789 | 0.008230 | 0.950866 | 0.003788 | 0.043439 | ... | 43 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-01 12:00:00 |
| 2 | Venise | 02:06:2000 | 12:00:00 | 154 | 0.409857 | 0.398926 | 0.010930 | 0.972578 | 0.004475 | 0.078353 | ... | 46 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-02 12:00:00 |
| 3 | Venise | 03:06:2000 | 12:00:00 | 155 | 0.569970 | 0.556496 | 0.013475 | 0.976083 | 0.004998 | 0.106529 | ... | 50 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-03 12:00:00 |
| 4 | Venise | 04:06:2000 | 12:00:00 | 156 | 0.505405 | 0.485035 | 0.020370 | 0.953210 | 0.005549 | 0.090719 | ... | 40 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-04 12:00:00 |
| 5 | Venise | 05:06:2000 | 12:00:00 | 157 | 0.475985 | 0.454433 | 0.021552 | 0.937115 | 0.005355 | 0.092959 | ... | 60 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-05 12:00:00 |
| 6 | Venise | 06:06:2000 | 12:00:00 | 158 | 0.509634 | 0.372044 | 0.137591 | 0.749999 | 0.006624 | 0.066462 | ... | 18 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-06 12:00:00 |
| 7 | Venise | 07:06:2000 | 12:00:00 | 159 | 0.245020 | 0.207304 | 0.037716 | 0.842297 | 0.004223 | 0.040453 | ... | 31 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-07 12:00:00 |
| 8 | Venise | 08:06:2000 | 12:00:00 | 160 | 0.194982 | 0.175087 | 0.019896 | 0.894646 | 0.003871 | 0.033336 | ... | 60 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-08 12:00:00 |
| 9 | Venise | 09:06:2000 | 12:00:00 | 161 | 0.289063 | 0.250073 | 0.038990 | 0.860046 | 0.004191 | 0.045663 | ... | 62 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-09 12:00:00 |
| 10 | Venise | 10:06:2000 | 12:00:00 | 162 | 0.329673 | 0.276642 | 0.053031 | 0.847769 | 0.005405 | 0.046985 | ... | 32 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-10 12:00:00 |
| 11 | Venise | 11:06:2000 | 12:00:00 | 163 | 0.322527 | 0.286831 | 0.035697 | 0.888963 | 0.004722 | 0.054790 | ... | 6 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-11 12:00:00 |
| 12 | Venise | 12:06:2000 | 12:00:00 | 164 | 0.428204 | 0.327143 | 0.101061 | 0.771481 | 0.006707 | 0.060043 | ... | 40 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-12 12:00:00 |
| 13 | Venise | 13:06:2000 | 12:00:00 | 165 | 0.450029 | 0.377774 | 0.072255 | 0.839923 | 0.006627 | 0.073435 | ... | 23 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-13 12:00:00 |
| 14 | Venise | 14:06:2000 | 12:00:00 | 166 | 0.437051 | 0.420146 | 0.016905 | 0.960002 | 0.005063 | 0.106180 | ... | 45 | lev20 | 112 | Venise | 45.31390 | 12.5083 | 10.0 | NaN | POINT (12.5083 45.3139) | 2000-06-14 12:00:00 |
| 15 | Ispra | 31:05:2000 | 12:00:00 | 152 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-05-31 12:00:00 |
| 16 | Ispra | 01:06:2000 | 12:00:00 | 153 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-01 12:00:00 |
| 17 | Ispra | 02:06:2000 | 12:00:00 | 154 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-02 12:00:00 |
| 18 | Ispra | 03:06:2000 | 12:00:00 | 155 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-03 12:00:00 |
| 19 | Ispra | 04:06:2000 | 12:00:00 | 156 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-04 12:00:00 |
| 20 | Ispra | 05:06:2000 | 12:00:00 | 157 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-05 12:00:00 |
| 21 | Ispra | 07:06:2000 | 12:00:00 | 159 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-07 12:00:00 |
| 22 | Ispra | 09:06:2000 | 12:00:00 | 161 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-09 12:00:00 |
| 23 | Ispra | 10:06:2000 | 12:00:00 | 162 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-10 12:00:00 |
| 24 | Ispra | 14:06:2000 | 12:00:00 | 166 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | -999.000000 | ... | 0 | lev20 | 80 | Ispra | 45.80305 | 8.6267 | 235.0 | NaN | POINT (8.6267 45.80305) | 2000-06-14 12:00:00 |
25 rows × 37 columns
Visualize results on Map screen¶
In [4]:
Copied!
from folium import (
GeoJson,
LayerControl,
Map
)
from folium.plugins import (
Fullscreen
)
from IPython.display import (
display,
HTML
)
map: Map = Map()
layer_control = LayerControl(position="topright", collapsed=True)
fullscreen = Fullscreen()
style = {"fillColor": "#00000000", "color": "#0000ff", "weight": 1}
footprints: GeoJson = GeoJson(
geoparquet_data.dissolve(by='AERONET_Site').to_json(default=str),
name="Stac Item footprints",
style_function=lambda x: style,
control=True,
)
footprints.add_to(map)
layer_control.add_to(map)
fullscreen.add_to(map)
map.fit_bounds(map.get_bounds()) # type: ignore not to important for the demo
map
from folium import (
GeoJson,
LayerControl,
Map
)
from folium.plugins import (
Fullscreen
)
from IPython.display import (
display,
HTML
)
map: Map = Map()
layer_control = LayerControl(position="topright", collapsed=True)
fullscreen = Fullscreen()
style = {"fillColor": "#00000000", "color": "#0000ff", "weight": 1}
footprints: GeoJson = GeoJson(
geoparquet_data.dissolve(by='AERONET_Site').to_json(default=str),
name="Stac Item footprints",
style_function=lambda x: style,
control=True,
)
footprints.add_to(map)
layer_control.add_to(map)
fullscreen.add_to(map)
map.fit_bounds(map.get_bounds()) # type: ignore not to important for the demo
map
Out[4]:
Make this Notebook Trusted to load map: File -> Trust Notebook