maps4fs 2.0.2__py3-none-any.whl → 2.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- maps4fs/__init__.py +3 -2
- maps4fs/generator/component/dem.py +1 -2
- maps4fs/generator/map.py +2 -1
- {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/METADATA +4 -44
- maps4fs-2.0.3.dist-info/RECORD +27 -0
- maps4fs/generator/dtm/__init__.py +0 -27
- maps4fs/generator/dtm/arctic.py +0 -74
- maps4fs/generator/dtm/baden.py +0 -31
- maps4fs/generator/dtm/base/wcs.py +0 -80
- maps4fs/generator/dtm/base/wms.py +0 -71
- maps4fs/generator/dtm/bavaria.py +0 -113
- maps4fs/generator/dtm/canada.py +0 -37
- maps4fs/generator/dtm/czech.py +0 -36
- maps4fs/generator/dtm/denmark.py +0 -50
- maps4fs/generator/dtm/dtm.py +0 -543
- maps4fs/generator/dtm/england.py +0 -31
- maps4fs/generator/dtm/finland.py +0 -56
- maps4fs/generator/dtm/flanders.py +0 -34
- maps4fs/generator/dtm/france.py +0 -69
- maps4fs/generator/dtm/hessen.py +0 -31
- maps4fs/generator/dtm/italy.py +0 -40
- maps4fs/generator/dtm/lithuania.py +0 -66
- maps4fs/generator/dtm/mv.py +0 -42
- maps4fs/generator/dtm/niedersachsen.py +0 -38
- maps4fs/generator/dtm/norway.py +0 -41
- maps4fs/generator/dtm/nrw.py +0 -30
- maps4fs/generator/dtm/rema.py +0 -74
- maps4fs/generator/dtm/sachsenanhalt.py +0 -36
- maps4fs/generator/dtm/scotland.py +0 -118
- maps4fs/generator/dtm/spain.py +0 -33
- maps4fs/generator/dtm/srtm.py +0 -122
- maps4fs/generator/dtm/switzerland.py +0 -104
- maps4fs/generator/dtm/thuringia.py +0 -60
- maps4fs/generator/dtm/usgs_wcs.py +0 -35
- maps4fs/generator/dtm/utils.py +0 -61
- maps4fs/generator/dtm/wales.py +0 -123
- maps4fs-2.0.2.dist-info/RECORD +0 -58
- {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/WHEEL +0 -0
- {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/licenses/LICENSE.md +0 -0
- {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/top_level.txt +0 -0
@@ -1,34 +0,0 @@
|
|
1
|
-
"""This module contains provider of Flanders data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class FlandersProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of Flanders data."""
|
9
|
-
|
10
|
-
_code = "flanders"
|
11
|
-
_name = "Flanders DHM II"
|
12
|
-
_region = "BE"
|
13
|
-
_icon = "🇧🇪"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_is_base = False
|
18
|
-
_extents = [(51.5150730375579684, 50.6694992827160817, 5.9444417082210812, 2.5170092434134252)]
|
19
|
-
|
20
|
-
_url = "https://geo.api.vlaanderen.be/el-dtm/wcs"
|
21
|
-
_wcs_version = "1.0.0"
|
22
|
-
_source_crs = "EPSG:4258"
|
23
|
-
_tile_size = 0.02
|
24
|
-
|
25
|
-
def get_wcs_parameters(self, tile: tuple[float, float, float, float]) -> dict:
|
26
|
-
return {
|
27
|
-
"identifier": "EL.GridCoverage.DTM",
|
28
|
-
"bbox": tile,
|
29
|
-
"format": "GeoTIFF",
|
30
|
-
"crs": "EPSG:4258",
|
31
|
-
"width": 1000,
|
32
|
-
"height": 1000,
|
33
|
-
"timeout": 600,
|
34
|
-
}
|
maps4fs/generator/dtm/france.py
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
"""This module contains provider of France data."""
|
2
|
-
|
3
|
-
import os
|
4
|
-
import rasterio
|
5
|
-
from maps4fs.generator.dtm import utils
|
6
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
7
|
-
|
8
|
-
|
9
|
-
class FranceProvider(DTMProvider):
|
10
|
-
"""Provider of France data."""
|
11
|
-
|
12
|
-
_code = "france"
|
13
|
-
_name = "France RGE Alti 2.0"
|
14
|
-
_region = "FR"
|
15
|
-
_icon = "🇫🇷"
|
16
|
-
_resolution = 1
|
17
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
18
|
-
_is_community = True
|
19
|
-
|
20
|
-
_url = "https://data.cquest.org/ign/rgealti/repack/cog/RGEALTI_2-0_1M_COG_LAMB93-IGN69_FXX.vrt"
|
21
|
-
_is_base = False
|
22
|
-
# no extents, because it also has a few colonies throughout the world
|
23
|
-
_extents = [
|
24
|
-
(51.2, 41.333, 9.55, -5.225), # France
|
25
|
-
(8.6038842, 1.1710017, -61.414905, -56.4689543), # Guyana
|
26
|
-
(16.5144664, 15.8320085, -61.809764, -61.0003663), # Guadeloupe
|
27
|
-
(14.8787029, 14.3948596, -61.2290815, -60.8095833), # Martinique
|
28
|
-
(-12.6365902, -13.0210119, 45.0183298, 45.2999917), # Mayotte
|
29
|
-
(-20.8717136, -21.3897308, 55.2164268, 55.8366924), # Reunion
|
30
|
-
(18.1375569, 17.670931, -63.06639, -62.5844019), # Saint Barthelemy
|
31
|
-
(18.1902778, 17.8963535, -63.3605643, -62.7644063), # Saint Martin
|
32
|
-
(47.365, 46.5507173, -56.6972961, -55.9033333), # Saint Pierre and Miquelon
|
33
|
-
]
|
34
|
-
|
35
|
-
def download_tiles(self) -> list[str]:
|
36
|
-
with rasterio.open(
|
37
|
-
self.url,
|
38
|
-
crs="EPSG:2154",
|
39
|
-
) as vrt_src:
|
40
|
-
# Get bbox in EPSG:2154 in the right order
|
41
|
-
bbox = self.get_bbox()
|
42
|
-
bbox = utils.transform_bbox(bbox, "EPSG:2154")
|
43
|
-
bbox = (bbox[0], bbox[3], bbox[1], bbox[2])
|
44
|
-
|
45
|
-
# read the window of data from the vrt
|
46
|
-
dst_window = vrt_src.window(*bbox)
|
47
|
-
data = vrt_src.read(1, window=dst_window)
|
48
|
-
width, height = data.shape[0], data.shape[1]
|
49
|
-
|
50
|
-
# define the transform for the new raster telling where it is in the world
|
51
|
-
transform = rasterio.transform.from_bounds(*bbox, width=width, height=height)
|
52
|
-
|
53
|
-
# write it to a temporary file following the standard DTMProvider interface
|
54
|
-
file_name = "_".join(map(str, bbox)) + ".tif"
|
55
|
-
file_path = os.path.join(self._tile_directory, file_name)
|
56
|
-
with rasterio.open(
|
57
|
-
file_path,
|
58
|
-
"w",
|
59
|
-
driver="GTiff",
|
60
|
-
crs="EPSG:2154",
|
61
|
-
width=width,
|
62
|
-
height=height,
|
63
|
-
transform=transform,
|
64
|
-
count=1,
|
65
|
-
dtype=data.dtype,
|
66
|
-
) as dst:
|
67
|
-
dst.write(data, indexes=1)
|
68
|
-
|
69
|
-
return [file_path]
|
maps4fs/generator/dtm/hessen.py
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
"""This module contains provider of Hessen data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class HessenProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of Hessen data."""
|
9
|
-
|
10
|
-
_code = "hessen"
|
11
|
-
_name = "Hessen DGM1"
|
12
|
-
_region = "DE"
|
13
|
-
_icon = "🇩🇪"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_is_base = False
|
18
|
-
_extents = [(51.66698, 49.38533, 10.25780, 7.72773)]
|
19
|
-
|
20
|
-
_url = "https://inspire-hessen.de/raster/dgm1/ows"
|
21
|
-
_wcs_version = "2.0.1"
|
22
|
-
_source_crs = "EPSG:25832"
|
23
|
-
_tile_size = 1000
|
24
|
-
|
25
|
-
def get_wcs_parameters(self, tile: tuple[float, float, float, float]) -> dict:
|
26
|
-
return {
|
27
|
-
"identifier": ["he_dgm1"],
|
28
|
-
"subsets": [("N", str(tile[0]), str(tile[2])), ("E", str(tile[1]), str(tile[3]))],
|
29
|
-
"format": "image/gtiff",
|
30
|
-
"timeout": 600,
|
31
|
-
}
|
maps4fs/generator/dtm/italy.py
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
"""This module contains provider of Italy data."""
|
2
|
-
|
3
|
-
from owslib.util import Authentication
|
4
|
-
|
5
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
6
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
7
|
-
|
8
|
-
|
9
|
-
class ItalyProvider(WCSProvider, DTMProvider):
|
10
|
-
"""Provider of Italy data."""
|
11
|
-
|
12
|
-
_code = "italy"
|
13
|
-
_name = "Italy Tinitaly/1.1"
|
14
|
-
_region = "IT"
|
15
|
-
_icon = "🇮🇹"
|
16
|
-
_resolution = 10
|
17
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
18
|
-
_is_community = True
|
19
|
-
_instructions = None
|
20
|
-
_is_base = False
|
21
|
-
_extents = [(47.15570815704503, 35.177652867276855, 19.720144130809693, 6.527697471770745)]
|
22
|
-
|
23
|
-
_url = "http://tinitaly.pi.ingv.it/TINItaly_1_1/wcs"
|
24
|
-
_wcs_version = "2.0.1"
|
25
|
-
_source_crs = "EPSG:32632"
|
26
|
-
_tile_size = 10000
|
27
|
-
|
28
|
-
def get_wcs_instance_parameters(self):
|
29
|
-
settings = super().get_wcs_instance_parameters()
|
30
|
-
settings["auth"] = Authentication(
|
31
|
-
verify=False,
|
32
|
-
)
|
33
|
-
return settings
|
34
|
-
|
35
|
-
def get_wcs_parameters(self, tile):
|
36
|
-
return {
|
37
|
-
"identifier": ["TINItaly_1_1__tinitaly_dem"],
|
38
|
-
"subsets": [("E", str(tile[1]), str(tile[3])), ("N", str(tile[0]), str(tile[2]))],
|
39
|
-
"format": "image/tiff",
|
40
|
-
}
|
@@ -1,66 +0,0 @@
|
|
1
|
-
"""This module contains provider of Lithuania data."""
|
2
|
-
|
3
|
-
from typing import List
|
4
|
-
|
5
|
-
import requests
|
6
|
-
|
7
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
8
|
-
from maps4fs.generator.dtm.utils import tile_bbox
|
9
|
-
|
10
|
-
|
11
|
-
class LithuaniaProvider(DTMProvider):
|
12
|
-
"""Provider of Lithuania data."""
|
13
|
-
|
14
|
-
_code = "lithuania"
|
15
|
-
_name = "Lithuania"
|
16
|
-
_region = "LT"
|
17
|
-
_icon = "🇱🇹"
|
18
|
-
_resolution = 1.0
|
19
|
-
_author = "[Tox3](https://github.com/Tox3)"
|
20
|
-
_is_community = True
|
21
|
-
_is_base = False
|
22
|
-
_extents = [
|
23
|
-
(
|
24
|
-
56.4501789128452,
|
25
|
-
53.8901567283941,
|
26
|
-
26.8198345671209,
|
27
|
-
20.9312456789123,
|
28
|
-
)
|
29
|
-
]
|
30
|
-
_max_tile_size = 4096
|
31
|
-
_url = (
|
32
|
-
"https://utility.arcgis.com/usrsvcs/servers/fef66dec83c14b0295180ecafa662aa0/"
|
33
|
-
"rest/services/DTM_LT2020/ImageServer/exportImage"
|
34
|
-
)
|
35
|
-
|
36
|
-
def download_tiles(self) -> List[str]:
|
37
|
-
"""Download DTM tiles for Lithuania."""
|
38
|
-
bbox = self.get_bbox()
|
39
|
-
grid_size = max(1, self.size // self._max_tile_size)
|
40
|
-
tile_size = (self.size / grid_size) / 111000 # Convert to degrees
|
41
|
-
|
42
|
-
raw_tiles = tile_bbox(bbox, tile_size)
|
43
|
-
# Fix coordinate swapping from utils.tile_bbox
|
44
|
-
tiles = [(t[1], t[3], t[0], t[2]) for t in raw_tiles] # Reorder N,S,E,W correctly
|
45
|
-
|
46
|
-
download_urls = []
|
47
|
-
for i, (north, south, east, west) in enumerate(tiles):
|
48
|
-
params = {
|
49
|
-
"f": "json",
|
50
|
-
"bbox": f"{west},{south},{east},{north}",
|
51
|
-
"bboxSR": "4326",
|
52
|
-
"imageSR": "3346",
|
53
|
-
"format": "tiff",
|
54
|
-
"pixelType": "F32",
|
55
|
-
"size": f"{self._max_tile_size},{self._max_tile_size}",
|
56
|
-
}
|
57
|
-
|
58
|
-
response = requests.get(
|
59
|
-
self.url, params=params, verify=False, timeout=60 # type: ignore
|
60
|
-
)
|
61
|
-
data = response.json()
|
62
|
-
if "href" not in data:
|
63
|
-
raise RuntimeError(f"No image URL in response for tile {i}")
|
64
|
-
download_urls.append(data["href"])
|
65
|
-
|
66
|
-
return self.download_tif_files(download_urls, self._tile_directory)
|
maps4fs/generator/dtm/mv.py
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
"""This module contains provider of Mecklenburg-Vorpommern data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider, DTMProviderSettings
|
5
|
-
|
6
|
-
|
7
|
-
class MecklenburgVorpommernProviderSettings(DTMProviderSettings):
|
8
|
-
"""Settings for the Mecklenburg-Vorpommern provider."""
|
9
|
-
|
10
|
-
dataset: dict | str = {
|
11
|
-
"mv_dgm": "Mecklenburg-Vorpommern DGM1",
|
12
|
-
"mv_dgm5": "Mecklenburg-Vorpommern DGM5",
|
13
|
-
"mv_dgm25": "Mecklenburg-Vorpommern DGM25",
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
class MecklenburgVorpommernProvider(WCSProvider, DTMProvider):
|
18
|
-
"""Provider of Mecklenburg-Vorpommern data."""
|
19
|
-
|
20
|
-
_code = "mv"
|
21
|
-
_name = "Mecklenburg-Vorpommern"
|
22
|
-
_region = "DE"
|
23
|
-
_icon = "🇩🇪"
|
24
|
-
_resolution = "1-25"
|
25
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
26
|
-
_is_community = True
|
27
|
-
_instructions = None
|
28
|
-
_is_base = False
|
29
|
-
_settings = MecklenburgVorpommernProviderSettings
|
30
|
-
_extents = [(54.8, 53, 14.5, 10.5)]
|
31
|
-
|
32
|
-
_url = "https://www.geodaten-mv.de/dienste/dgm_wcs"
|
33
|
-
_wcs_version = "2.0.1"
|
34
|
-
_source_crs = "EPSG:25833"
|
35
|
-
_tile_size = 1000
|
36
|
-
|
37
|
-
def get_wcs_parameters(self, tile):
|
38
|
-
return {
|
39
|
-
"identifier": [self.user_settings.dataset],
|
40
|
-
"subsets": [("x", str(tile[1]), str(tile[3])), ("y", str(tile[0]), str(tile[2]))],
|
41
|
-
"format": "image/tiff",
|
42
|
-
}
|
@@ -1,38 +0,0 @@
|
|
1
|
-
"""This module contains provider of Niedersachsen data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wms import WMSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class NiedersachsenProvider(WMSProvider, DTMProvider):
|
8
|
-
"""Provider of Niedersachsen data."""
|
9
|
-
|
10
|
-
_code = "niedersachsen"
|
11
|
-
_name = "Lower Saxony DGM1"
|
12
|
-
_region = "DE"
|
13
|
-
_icon = "🇩🇪"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_instructions = (
|
18
|
-
"Warning: The Niedersachsen DGM1 data is provided as 8-bit Cloud Optimized GeoTIFF "
|
19
|
-
"(whole meters only). You will need to use blur ('Blur Radius' under 'DEM Settings') "
|
20
|
-
"to smooth the data."
|
21
|
-
)
|
22
|
-
_is_base = False
|
23
|
-
_extents = [(54.148101, 51.153098, 11.754046, 6.505772)]
|
24
|
-
|
25
|
-
_url = "https://opendata.lgln.niedersachsen.de/doorman/noauth/dgm_wms"
|
26
|
-
_source_crs = "EPSG:25832"
|
27
|
-
_tile_size = 2000
|
28
|
-
_wms_version = "1.3.0"
|
29
|
-
|
30
|
-
def get_wms_parameters(self, tile):
|
31
|
-
return {
|
32
|
-
"layers": ["ni_dgm1_grau"],
|
33
|
-
"srs": "EPSG:25832",
|
34
|
-
"bbox": (tile[1], tile[0], tile[3], tile[2]),
|
35
|
-
"size": (2000, 2000),
|
36
|
-
"format": "image/tiff",
|
37
|
-
"transparent": False,
|
38
|
-
}
|
maps4fs/generator/dtm/norway.py
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
"""This module contains provider of Norway data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class NorwayProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of Norway data."""
|
9
|
-
|
10
|
-
_code = "norway"
|
11
|
-
_name = "Norway Topobathy"
|
12
|
-
_region = "NO"
|
13
|
-
_icon = "🇳🇴"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_instructions = None
|
18
|
-
_is_base = False
|
19
|
-
_extents = [
|
20
|
-
(72.1016879476356962, 57.2738836442695103, 33.3365910058243742, -2.0075617181675725)
|
21
|
-
]
|
22
|
-
|
23
|
-
_instructions = (
|
24
|
-
"This is a topobathy dataset which means it includes water depth information as well. "
|
25
|
-
"You do not have to manually set a water depth to get realistic water depths in your map."
|
26
|
-
)
|
27
|
-
|
28
|
-
_url = "https://wms.geonorge.no/skwms1/wcs.hoyde-dtm-nhm-topobathy-25833"
|
29
|
-
_wcs_version = "1.0.0"
|
30
|
-
_source_crs = "EPSG:25833"
|
31
|
-
_tile_size = 1000
|
32
|
-
|
33
|
-
def get_wcs_parameters(self, tile):
|
34
|
-
return {
|
35
|
-
"identifier": "nhm_dtm_topobathy_25833",
|
36
|
-
"bbox": (tile[1], tile[0], tile[3], tile[2]),
|
37
|
-
"crs": "EPSG:25833",
|
38
|
-
"width": 1000,
|
39
|
-
"height": 1000,
|
40
|
-
"format": "tiff",
|
41
|
-
}
|
maps4fs/generator/dtm/nrw.py
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
"""This module contains provider of NRW data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class NRWProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of NRW data."""
|
9
|
-
|
10
|
-
_code = "NRW"
|
11
|
-
_name = "North Rhine-Westphalia DGM1"
|
12
|
-
_region = "DE"
|
13
|
-
_icon = "🇩🇪"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_is_base = False
|
18
|
-
_extents = [(52.6008271, 50.1506045, 9.5315425, 5.8923538)]
|
19
|
-
|
20
|
-
_url = "https://www.wcs.nrw.de/geobasis/wcs_nw_dgm"
|
21
|
-
_wcs_version = "2.0.1"
|
22
|
-
_source_crs = "EPSG:25832"
|
23
|
-
_tile_size = 1000
|
24
|
-
|
25
|
-
def get_wcs_parameters(self, tile: tuple[float, float, float, float]) -> dict:
|
26
|
-
return {
|
27
|
-
"identifier": ["nw_dgm"],
|
28
|
-
"subsets": [("y", str(tile[0]), str(tile[2])), ("x", str(tile[1]), str(tile[3]))],
|
29
|
-
"format": "image/tiff",
|
30
|
-
}
|
maps4fs/generator/dtm/rema.py
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
"""This module contains provider of Antarctic data."""
|
2
|
-
|
3
|
-
import os
|
4
|
-
|
5
|
-
import requests
|
6
|
-
|
7
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
8
|
-
|
9
|
-
|
10
|
-
class REMAProvider(DTMProvider):
|
11
|
-
"""Provider of Antarctic data."""
|
12
|
-
|
13
|
-
_code = "rema"
|
14
|
-
_name = "REMA Antarctica"
|
15
|
-
_region = "Global"
|
16
|
-
_icon = "🌍"
|
17
|
-
_resolution = 2
|
18
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
19
|
-
_is_community = True
|
20
|
-
|
21
|
-
_extents = [(-53.5443873459092, -53.5443873459092, 179.99698443265999, -180)]
|
22
|
-
|
23
|
-
_instructions = (
|
24
|
-
"This provider source includes 2 meter DEM data for the entire Antarctic region below 53 "
|
25
|
-
"degrees South. The tiles are very big, around 1 GB each, so downloading and processing "
|
26
|
-
"them can take a long time."
|
27
|
-
)
|
28
|
-
|
29
|
-
_url = "https://stac.pgc.umn.edu/api/v1/collections/rema-mosaics-v2.0-2m/items"
|
30
|
-
|
31
|
-
def download_tiles(self):
|
32
|
-
download_urls = self.get_download_urls()
|
33
|
-
all_tif_files = self.download_tif_files(download_urls, self.shared_tiff_path)
|
34
|
-
return all_tif_files
|
35
|
-
|
36
|
-
def __init__(self, *args, **kwargs):
|
37
|
-
super().__init__(*args, **kwargs)
|
38
|
-
self.shared_tiff_path = os.path.join(self._tile_directory, "shared")
|
39
|
-
os.makedirs(self.shared_tiff_path, exist_ok=True)
|
40
|
-
|
41
|
-
def get_download_urls(self) -> list[str]:
|
42
|
-
"""Get download URLs of the GeoTIFF files from the OGC API.
|
43
|
-
|
44
|
-
Returns:
|
45
|
-
list: List of download URLs.
|
46
|
-
"""
|
47
|
-
urls = []
|
48
|
-
|
49
|
-
try:
|
50
|
-
# Make the GET request
|
51
|
-
north, south, east, west = self.get_bbox()
|
52
|
-
response = requests.get( # pylint: disable=W3101
|
53
|
-
self.url, # type: ignore
|
54
|
-
params={
|
55
|
-
"bbox": f"{west},{south},{east},{north}",
|
56
|
-
"limit": "100",
|
57
|
-
},
|
58
|
-
timeout=60,
|
59
|
-
)
|
60
|
-
self.logger.debug("Getting file locations from REMA OGC API...")
|
61
|
-
|
62
|
-
# Check if the request was successful (HTTP status code 200)
|
63
|
-
if response.status_code == 200:
|
64
|
-
# Parse the JSON response
|
65
|
-
json_data = response.json()
|
66
|
-
items = json_data["features"]
|
67
|
-
for item in items:
|
68
|
-
urls.append(item["assets"]["dem"]["href"])
|
69
|
-
else:
|
70
|
-
self.logger.error("Failed to get data. HTTP Status Code: %s", response.status_code)
|
71
|
-
except requests.exceptions.RequestException as e:
|
72
|
-
self.logger.error("Failed to get data. Error: %s", e)
|
73
|
-
self.logger.debug("Received %s urls", len(urls))
|
74
|
-
return urls
|
@@ -1,36 +0,0 @@
|
|
1
|
-
"""This module contains provider of Sachsen-Anhalt data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class SachsenAnhaltProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of Sachsen-Anhalt data."""
|
9
|
-
|
10
|
-
_code = "sachsen-anhalt"
|
11
|
-
_name = "Sachsen-Anhalt"
|
12
|
-
_region = "DE"
|
13
|
-
_icon = "🇩🇪"
|
14
|
-
_resolution = 1
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_is_base = False
|
18
|
-
_extents = [
|
19
|
-
(53.0769416826493412, 50.8927195980075453, 13.3232545527125836, 10.5092298520646867)
|
20
|
-
]
|
21
|
-
|
22
|
-
_url = "https://www.geodatenportal.sachsen-anhalt.de/wss/service/ST_LVermGeo_DGM1_WCS_OpenData/guest" # pylint: disable=line-too-long
|
23
|
-
_wcs_version = "1.0.0"
|
24
|
-
_source_crs = "EPSG:4326"
|
25
|
-
_tile_size = 0.02
|
26
|
-
|
27
|
-
def get_wcs_parameters(self, tile: tuple[float, float, float, float]) -> dict:
|
28
|
-
return {
|
29
|
-
"identifier": "1",
|
30
|
-
"bbox": tile,
|
31
|
-
"format": "GeoTIFF",
|
32
|
-
"crs": "EPSG:4326",
|
33
|
-
"width": 1000,
|
34
|
-
"height": 1000,
|
35
|
-
"timeout": 600,
|
36
|
-
}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
"""This module contains provider of Scotland data."""
|
2
|
-
|
3
|
-
import os
|
4
|
-
|
5
|
-
import requests
|
6
|
-
|
7
|
-
from maps4fs.generator.dtm.dtm import DTMProvider, DTMProviderSettings
|
8
|
-
|
9
|
-
|
10
|
-
class ScotlandProviderSettings(DTMProviderSettings):
|
11
|
-
"""Settings for the Scotland provider."""
|
12
|
-
|
13
|
-
dataset: dict | str = {
|
14
|
-
"scotland-gov/lidar/phase-1/dtm": "LiDAR for Scotland Phase I DTM",
|
15
|
-
"scotland-gov/lidar/phase-2/dtm": "LiDAR for Scotland Phase II DTM",
|
16
|
-
"scotland-gov/lidar/phase-3/dtm": "LiDAR for Scotland Phase III DTM",
|
17
|
-
"scotland-gov/lidar/phase-4/dtm": "LiDAR for Scotland Phase IV DTM",
|
18
|
-
"scotland-gov/lidar/phase-5/dtm": "LiDAR for Scotland Phase V DTM",
|
19
|
-
"scotland-gov/lidar/phase-6/dtm": "LiDAR for Scotland Phase VI DTM",
|
20
|
-
"scotland-gov/lidar/hes/hes-2010/dtm": (
|
21
|
-
"HES LiDAR Data Stirling City and surrounding area (2010) DTM"
|
22
|
-
),
|
23
|
-
"scotland-gov/lidar/hes/hes-2010s10/dtm": (
|
24
|
-
"LiDAR for Historic Environment Scotland Scottish Ten Project (2010) DTM"
|
25
|
-
),
|
26
|
-
"scotland-gov/lidar/hes/hes-2016-2017/dtm": (
|
27
|
-
"LiDAR for Historic Environment Scotland Projects (2016-2017 sub project 4) DTM"
|
28
|
-
),
|
29
|
-
"scotland-gov/lidar/hes/hes-2016/dtm": (
|
30
|
-
"LiDAR for Historic Environment Scotland Projects (2016) DTM"
|
31
|
-
),
|
32
|
-
"scotland-gov/lidar/hes/hes-2017/dtm": (
|
33
|
-
"LiDAR for Historic Environment Scotland Projects (2017) DTM"
|
34
|
-
),
|
35
|
-
"scotland-gov/lidar/hes/hes-2017sp3/dtm": (
|
36
|
-
"LiDAR for Historic Environment Scotland Project (2017 Sub Project 3) DTM"
|
37
|
-
),
|
38
|
-
"scotland-gov/lidar/hes/hes-luing/dtm": (
|
39
|
-
"LiDAR for Historic Environment Scotland Projects Isle of Luing DTM"
|
40
|
-
),
|
41
|
-
"scotland-gov/lidar/outerheb-2019/dtm/25cm": "LiDAR for Outer Hebrides 2019 - 25cm DTM",
|
42
|
-
"scotland-gov/lidar/outerheb-2019/dtm/50cm": "LiDAR for Outer Hebrides 2019 - 50cm DTM",
|
43
|
-
}
|
44
|
-
|
45
|
-
|
46
|
-
class ScotlandProvider(DTMProvider):
|
47
|
-
"""Provider of Scotland."""
|
48
|
-
|
49
|
-
_code = "scotland"
|
50
|
-
_name = "Scotland LiDAR"
|
51
|
-
_region = "UK"
|
52
|
-
_icon = "🏴"
|
53
|
-
_resolution = "variable"
|
54
|
-
_settings = ScotlandProviderSettings
|
55
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
56
|
-
_is_community = True
|
57
|
-
_instructions = (
|
58
|
-
"Coverage for Scotland is very limited. "
|
59
|
-
"Make sure to check the [coverage map](https://remotesensingdata.gov.scot/data#/map)."
|
60
|
-
)
|
61
|
-
_extents = [
|
62
|
-
(60.2151105070992756, 54.5525982243521881, -1.1045617513147328, -6.7070796770431951)
|
63
|
-
]
|
64
|
-
|
65
|
-
_url = "https://srsp-catalog.jncc.gov.uk/search/product"
|
66
|
-
|
67
|
-
def download_tiles(self):
|
68
|
-
download_urls = self.get_download_urls()
|
69
|
-
all_tif_files = self.download_tif_files(download_urls, self.shared_tiff_path)
|
70
|
-
return all_tif_files
|
71
|
-
|
72
|
-
def __init__(self, *args, **kwargs):
|
73
|
-
super().__init__(*args, **kwargs)
|
74
|
-
self.shared_tiff_path = os.path.join(self._tile_directory, "shared")
|
75
|
-
os.makedirs(self.shared_tiff_path, exist_ok=True)
|
76
|
-
|
77
|
-
def get_download_urls(self) -> list[str]:
|
78
|
-
"""Get download URLs of the GeoTIFF files from the USGS API.
|
79
|
-
|
80
|
-
Returns:
|
81
|
-
list: List of download URLs.
|
82
|
-
"""
|
83
|
-
urls = []
|
84
|
-
try:
|
85
|
-
# Make the GET request
|
86
|
-
(north, south, east, west) = self.get_bbox()
|
87
|
-
response = requests.post( # pylint: disable=W3101
|
88
|
-
self.url, # type: ignore
|
89
|
-
json={
|
90
|
-
"collections": (
|
91
|
-
[self.user_settings.dataset] if self.user_settings else [] # type: ignore
|
92
|
-
),
|
93
|
-
"footprint": (
|
94
|
-
f"POLYGON(({west} {south}, {west} {north}, "
|
95
|
-
f"{east} {north}, {east} {south}, {west} {south}))"
|
96
|
-
),
|
97
|
-
"offset": 0,
|
98
|
-
"limit": 100,
|
99
|
-
"spatialop": "intersects",
|
100
|
-
},
|
101
|
-
timeout=60,
|
102
|
-
)
|
103
|
-
self.logger.debug("Getting file locations from JNCC...")
|
104
|
-
|
105
|
-
# Check if the request was successful (HTTP status code 200)
|
106
|
-
if response.status_code == 200:
|
107
|
-
# Parse the JSON response
|
108
|
-
json_data = response.json()
|
109
|
-
items = json_data["result"]
|
110
|
-
for item in items:
|
111
|
-
urls.append(item["data"]["product"]["http"]["url"])
|
112
|
-
# self.download_tif_files(urls)
|
113
|
-
else:
|
114
|
-
self.logger.error("Failed to get data. HTTP Status Code: %s", response.status_code)
|
115
|
-
except requests.exceptions.RequestException as e:
|
116
|
-
self.logger.error("Failed to get data. Error: %s", e)
|
117
|
-
self.logger.debug("Received %s urls", len(urls))
|
118
|
-
return urls
|
maps4fs/generator/dtm/spain.py
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
"""This module contains provider of Spain data."""
|
2
|
-
|
3
|
-
from maps4fs.generator.dtm.base.wcs import WCSProvider
|
4
|
-
from maps4fs.generator.dtm.dtm import DTMProvider
|
5
|
-
|
6
|
-
|
7
|
-
class SpainProvider(WCSProvider, DTMProvider):
|
8
|
-
"""Provider of Spain data."""
|
9
|
-
|
10
|
-
_code = "spain"
|
11
|
-
_name = "Spain"
|
12
|
-
_region = "ES"
|
13
|
-
_icon = "🇪🇸"
|
14
|
-
_resolution = 5
|
15
|
-
_author = "[kbrandwijk](https://github.com/kbrandwijk)"
|
16
|
-
_is_community = True
|
17
|
-
_is_base = False
|
18
|
-
_extents = [
|
19
|
-
(43.9299999999999997, 27.6299999999999990, 4.9400000000000004, -18.2100000000000009)
|
20
|
-
]
|
21
|
-
|
22
|
-
_url = "https://servicios.idee.es/wcs-inspire/mdt"
|
23
|
-
_wcs_version = "2.0.1"
|
24
|
-
_source_crs = "EPSG:25830"
|
25
|
-
_tile_size = 1000
|
26
|
-
|
27
|
-
def get_wcs_parameters(self, tile: tuple[float, float, float, float]) -> dict:
|
28
|
-
return {
|
29
|
-
"identifier": ["Elevacion25830_5"],
|
30
|
-
"subsets": [("y", str(tile[0]), str(tile[2])), ("x", str(tile[1]), str(tile[3]))],
|
31
|
-
"format": "GEOTIFFINT16",
|
32
|
-
"timeout": 600,
|
33
|
-
}
|