maps4fs 2.0.1__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.
Files changed (39) hide show
  1. maps4fs/__init__.py +3 -2
  2. maps4fs/generator/component/dem.py +3 -4
  3. maps4fs/generator/map.py +2 -1
  4. {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/METADATA +4 -43
  5. maps4fs-2.0.3.dist-info/RECORD +27 -0
  6. maps4fs/generator/dtm/__init__.py +0 -26
  7. maps4fs/generator/dtm/arctic.py +0 -74
  8. maps4fs/generator/dtm/baden.py +0 -31
  9. maps4fs/generator/dtm/base/wcs.py +0 -80
  10. maps4fs/generator/dtm/base/wms.py +0 -71
  11. maps4fs/generator/dtm/bavaria.py +0 -113
  12. maps4fs/generator/dtm/canada.py +0 -37
  13. maps4fs/generator/dtm/czech.py +0 -36
  14. maps4fs/generator/dtm/denmark.py +0 -50
  15. maps4fs/generator/dtm/dtm.py +0 -543
  16. maps4fs/generator/dtm/england.py +0 -31
  17. maps4fs/generator/dtm/finland.py +0 -56
  18. maps4fs/generator/dtm/flanders.py +0 -34
  19. maps4fs/generator/dtm/france.py +0 -69
  20. maps4fs/generator/dtm/hessen.py +0 -31
  21. maps4fs/generator/dtm/italy.py +0 -40
  22. maps4fs/generator/dtm/lithuania.py +0 -66
  23. maps4fs/generator/dtm/mv.py +0 -42
  24. maps4fs/generator/dtm/niedersachsen.py +0 -38
  25. maps4fs/generator/dtm/norway.py +0 -41
  26. maps4fs/generator/dtm/nrw.py +0 -30
  27. maps4fs/generator/dtm/rema.py +0 -74
  28. maps4fs/generator/dtm/sachsenanhalt.py +0 -36
  29. maps4fs/generator/dtm/scotland.py +0 -118
  30. maps4fs/generator/dtm/spain.py +0 -33
  31. maps4fs/generator/dtm/srtm.py +0 -122
  32. maps4fs/generator/dtm/switzerland.py +0 -104
  33. maps4fs/generator/dtm/thuringia.py +0 -60
  34. maps4fs/generator/dtm/usgs_wcs.py +0 -35
  35. maps4fs/generator/dtm/utils.py +0 -61
  36. maps4fs-2.0.1.dist-info/RECORD +0 -57
  37. {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/WHEEL +0 -0
  38. {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/licenses/LICENSE.md +0 -0
  39. {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/top_level.txt +0 -0
@@ -1,122 +0,0 @@
1
- """This module contains provider of Shuttle Radar Topography Mission (SRTM) 30m data."""
2
-
3
- # Author: https://github.com/iwatkot
4
-
5
- import gzip
6
- import math
7
- import os
8
- import shutil
9
-
10
- import requests
11
-
12
- from maps4fs.generator.dtm.dtm import DTMProvider
13
-
14
-
15
- class SRTM30Provider(DTMProvider):
16
- """Provider of Shuttle Radar Topography Mission (SRTM) 30m data."""
17
-
18
- _code = "srtm30"
19
- _name = "SRTM 30 m"
20
- _region = "Global"
21
- _icon = "🌎"
22
- _resolution = 30.0
23
-
24
- _url = "https://elevation-tiles-prod.s3.amazonaws.com/skadi/{latitude_band}/{tile_name}.hgt.gz"
25
-
26
- _author = "[iwatkot](https://github.com/iwatkot)"
27
-
28
- # _instructions = "ℹ️ Recommended settings: \nDEM Settings -> Blur Radius: **35**"
29
-
30
- _default_settings = {"DEMSettings": {"blur_radius": 35}}
31
-
32
- def __init__(self, *args, **kwargs):
33
- super().__init__(*args, **kwargs)
34
- self.hgt_directory = os.path.join(self._tile_directory, "hgt")
35
- self.gz_directory = os.path.join(self._tile_directory, "gz")
36
- os.makedirs(self.hgt_directory, exist_ok=True)
37
- os.makedirs(self.gz_directory, exist_ok=True)
38
-
39
- def download_tiles(self):
40
- """Download SRTM tiles."""
41
- north, south, east, west = self.get_bbox()
42
-
43
- tiles = []
44
- # Look at each corner of the bbox in case the bbox spans across multiple tiles
45
- for pair in [(north, east), (south, west), (south, east), (north, west)]:
46
- tile_parameters = self.get_tile_parameters(*pair)
47
- tile_name = tile_parameters["tile_name"]
48
- decompressed_tile_path = os.path.join(self.hgt_directory, f"{tile_name}.hgt")
49
-
50
- if not os.path.isfile(decompressed_tile_path):
51
- compressed_tile_path = os.path.join(self.gz_directory, f"{tile_name}.hgt.gz")
52
- if not self.get_or_download_tile(compressed_tile_path, **tile_parameters):
53
- raise FileNotFoundError(f"Tile {tile_name} not found.")
54
-
55
- with gzip.open(compressed_tile_path, "rb") as f_in:
56
- with open(decompressed_tile_path, "wb") as f_out:
57
- shutil.copyfileobj(f_in, f_out)
58
- tiles.append(decompressed_tile_path)
59
-
60
- return list(set(tiles))
61
-
62
- # region provider specific helpers
63
- def download_tile(self, output_path: str, **kwargs) -> bool:
64
- """Download a tile from the provider.
65
-
66
- Arguments:
67
- output_path (str): Path to save the downloaded tile.
68
-
69
- Returns:
70
- bool: True if the tile was downloaded successfully, False otherwise.
71
- """
72
- url = self.formatted_url(**kwargs)
73
- response = requests.get(url, stream=True, timeout=10)
74
- if response.status_code == 200:
75
- with open(output_path, "wb") as file:
76
- for chunk in response.iter_content(chunk_size=1024):
77
- file.write(chunk)
78
- return True
79
- return False
80
-
81
- def get_or_download_tile(self, output_path: str, **kwargs) -> str | None:
82
- """Get or download a tile from the provider.
83
-
84
- Arguments:
85
- output_path (str): Path to save the downloaded tile.
86
-
87
- Returns:
88
- str: Path to the downloaded tile or None if the tile not exists and was
89
- not downloaded.
90
- """
91
- if not os.path.exists(output_path):
92
- if not self.download_tile(output_path, **kwargs):
93
- return None
94
- return output_path
95
-
96
- def get_tile_parameters(self, *args) -> dict[str, str]:
97
- """Returns latitude band and tile name for SRTM tile from coordinates.
98
-
99
- Arguments:
100
- lat (float): Latitude.
101
- lon (float): Longitude.
102
-
103
- Returns:
104
- dict: Tile parameters.
105
- """
106
- lat, lon = args
107
-
108
- tile_latitude = math.floor(lat)
109
- tile_longitude = math.floor(lon)
110
-
111
- latitude_band = f"N{abs(tile_latitude):02d}" if lat >= 0 else f"S{abs(tile_latitude):02d}"
112
- if lon < 0:
113
- tile_name = f"{latitude_band}W{abs(tile_longitude):03d}"
114
- else:
115
- tile_name = f"{latitude_band}E{abs(tile_longitude):03d}"
116
-
117
- self.logger.debug(
118
- "Detected tile name: %s for coordinates: lat %s, lon %s.", tile_name, lat, lon
119
- )
120
- return {"latitude_band": latitude_band, "tile_name": tile_name}
121
-
122
- # endregion
@@ -1,104 +0,0 @@
1
- """This module contains provider of Switzerland data."""
2
-
3
- import json
4
- import os
5
-
6
- import requests
7
-
8
- from maps4fs.generator.dtm import utils
9
- from maps4fs.generator.dtm.dtm import DTMProvider, DTMProviderSettings
10
-
11
-
12
- class SwitzerlandProviderSettings(DTMProviderSettings):
13
- """Settings for the Switzerland provider."""
14
-
15
- resolution: tuple | str = ("0.5", "2.0")
16
-
17
-
18
- class SwitzerlandProvider(DTMProvider):
19
- """Provider of Switzerland."""
20
-
21
- _code = "switzerland"
22
- _name = "Switzerland"
23
- _region = "CH"
24
- _icon = "🇨🇭"
25
- _resolution = "0.5-2"
26
- _settings = SwitzerlandProviderSettings
27
- _author = "[kbrandwijk](https://github.com/kbrandwijk)"
28
- _is_community = True
29
-
30
- _extents = [(47.8308275417, 45.7769477403, 10.4427014502, 6.02260949059)]
31
-
32
- _url = (
33
- "https://ogd.swisstopo.admin.ch/services/swiseld/"
34
- "services/assets/ch.swisstopo.swissalti3d/search"
35
- )
36
-
37
- def download_tiles(self):
38
- download_urls = self.get_download_urls()
39
- all_tif_files = self.download_tif_files(download_urls, self.shared_tiff_path)
40
- return all_tif_files
41
-
42
- def __init__(self, *args, **kwargs):
43
- super().__init__(*args, **kwargs)
44
- self.shared_tiff_path = os.path.join(self._tile_directory, "shared")
45
- os.makedirs(self.shared_tiff_path, exist_ok=True)
46
-
47
- def get_download_urls(self) -> list[str]:
48
- """Get download URLs of the GeoTIFF files from the USGS API.
49
-
50
- Returns:
51
- list: List of download URLs.
52
- """
53
- urls = []
54
- try:
55
- bbox = self.get_bbox()
56
- north, south, east, west = utils.transform_bbox(bbox, "EPSG:2056")
57
-
58
- params = {
59
- "format": "image/tiff; application=geotiff; profile=cloud-optimized",
60
- "resolution": self.user_settings.resolution, # type: ignore
61
- "srid": 2056,
62
- "state": "current",
63
- }
64
-
65
- data = {
66
- "geometry": json.dumps(
67
- {
68
- "type": "Polygon",
69
- "crs": {"type": "name", "properties": {"name": "EPSG:2056"}},
70
- "coordinates": [
71
- [
72
- [north, east],
73
- [south, east],
74
- [south, west],
75
- [north, west],
76
- [north, east],
77
- ]
78
- ],
79
- }
80
- )
81
- }
82
-
83
- response = requests.post( # pylint: disable=W3101
84
- self.url, # type: ignore
85
- params=params,
86
- data=data,
87
- headers={"Content-Type": "application/x-www-form-urlencoded"},
88
- timeout=60,
89
- )
90
- self.logger.debug("Getting file locations...")
91
-
92
- # Check if the request was successful (HTTP status code 200)
93
- if response.status_code == 200:
94
- # Parse the JSON response
95
- json_data = response.json()
96
- items = json_data["items"]
97
- for item in items:
98
- urls.append(item["ass_asset_href"])
99
- else:
100
- self.logger.error("Failed to get data. HTTP Status Code: %s", response.status_code)
101
- except requests.exceptions.RequestException as e:
102
- self.logger.error("Failed to get data. Error: %s", e)
103
- self.logger.debug("Received %s urls", len(urls))
104
- return urls
@@ -1,60 +0,0 @@
1
- """This module contains provider of Thuringia data."""
2
-
3
- import os
4
- from maps4fs.generator.dtm import utils
5
- from maps4fs.generator.dtm.dtm import DTMProvider
6
-
7
- class ThuringiaProvider(DTMProvider):
8
- """Provider of Thuringia data.
9
- Data is provided by the Kompetenzzentrum Geodateninfrastruktur Thüringen (© GDI-Th) and available
10
- at https://geoportal.thueringen.de/gdi-th/download-offene-geodaten/download-hoehendaten under BY 2.0 license.
11
- """
12
- _code = "thuringia"
13
- _name = "Thüringen DGM1"
14
- _region = "DE"
15
- _icon = "🇩🇪󠁥󠁢󠁹󠁿"
16
- _resolution = 1
17
- _author = "[H4rdB4se](https://github.com/H4rdB4se)"
18
- _is_community = True
19
- _instructions = None
20
- _extents = [(51.5997, 50.2070, 12.69674, 9.8548)]
21
-
22
- def __init__(self, *args, **kwargs):
23
- super().__init__(*args, **kwargs)
24
- self.tiff_path = os.path.join(self._tile_directory, "tiffs")
25
- os.makedirs(self.tiff_path, exist_ok=True)
26
-
27
- def download_tiles(self) -> list[str]:
28
- bbox = self.get_bbox()
29
- west, east, north, south = utils.transform_bbox(bbox, "EPSG:25832")
30
- download_urls = self.get_download_urls(north, south, east, west)
31
- all_tif_files = self.download_tif_files(download_urls, self.tiff_path)
32
- return all_tif_files
33
-
34
- @staticmethod
35
- def get_first_n_digits(value: float, digits: int) -> int:
36
- """Get the first n digits of a number."""
37
- return int(str(value)[:digits])
38
-
39
- def get_download_urls(self, north: float, south: float, east: float, west: float) -> list[str]:
40
- """Calculate all possible tiles within the bounding box.
41
-
42
- Args:
43
- north (float): Northern boundary.
44
- south (float): Southern boundary.
45
- east (float): Eastern boundary.
46
- west (float): Western boundary.
47
-
48
- Returns:
49
- list: List of tile names.
50
- """
51
- urls = []
52
- lat = self.get_first_n_digits(south, 4)
53
- while lat <= self.get_first_n_digits(north, 4):
54
- lon = self.get_first_n_digits(west, 3)
55
- while lon <= self.get_first_n_digits(east, 3):
56
- tile_url = f"https://geoportal.geoportal-th.de/hoehendaten/DGM/dgm_2020-2025/dgm1_32_{lon}_{lat}_1_th_2020-2025.zip"
57
- urls.append(tile_url)
58
- lon += 1
59
- lat += 1
60
- return urls
@@ -1,35 +0,0 @@
1
- """This module contains provider of USGS data."""
2
-
3
- from maps4fs.generator.dtm.base.wcs import WCSProvider
4
- from maps4fs.generator.dtm.dtm import DTMProvider
5
-
6
-
7
- class USGSWCSProvider(WCSProvider, DTMProvider):
8
- """Provider of USGS data."""
9
-
10
- _code = "usgs_wcs"
11
- _name = "USGS"
12
- _region = "USA"
13
- _icon = "🇺🇸"
14
- _resolution = "1-90"
15
- _author = "[kbrandwijk](https://github.com/kbrandwijk)"
16
- _is_community = True
17
- _instructions = None
18
- _is_base = False
19
- _extents = [(50.0, 17.0, -64.0, -162.0)]
20
-
21
- _url = "https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer"
22
- _wcs_version = "1.0.0"
23
- _source_crs = "EPSG:3857"
24
- _tile_size = 1000
25
- _is_multipart = False
26
-
27
- def get_wcs_parameters(self, tile):
28
- return {
29
- "identifier": "DEP3Elevation",
30
- "bbox": (tile[1], tile[0], tile[3], tile[2]),
31
- "crs": "EPSG:3857",
32
- "width": 1000,
33
- "height": 1000,
34
- "format": "GeoTIFF",
35
- }
@@ -1,61 +0,0 @@
1
- """Utility functions for the DTM generator."""
2
-
3
- import numpy as np
4
- from pyproj import Transformer
5
-
6
-
7
- def tile_bbox(
8
- bbox: tuple[float, float, float, float], tile_size: float
9
- ) -> list[tuple[float, float, float, float]]:
10
- """Tile the bounding box into smaller bounding boxes of a specified size.
11
-
12
- Arguments:
13
- bbox (tuple): Bounding box to tile (north, south, east, west).
14
- tile_size (int): Size of the tiles in meters.
15
-
16
- Returns:
17
- list: List of smaller bounding boxes (north, south, east, west).
18
- """
19
- north, south, east, west = bbox
20
- x_coords = np.arange(west, east, tile_size if east > west else -tile_size)
21
- y_coords = np.arange(north, south, tile_size if south > north else -tile_size)
22
- x_coords = np.append(x_coords, east).astype(x_coords.dtype)
23
- y_coords = np.append(y_coords, south).astype(y_coords.dtype)
24
-
25
- x_min, y_min = np.meshgrid(x_coords[:-1], y_coords[:-1], indexing="ij")
26
- x_max, y_max = np.meshgrid(x_coords[1:], y_coords[1:], indexing="ij")
27
-
28
- tiles = np.stack(
29
- [x_min.ravel(), y_min.ravel(), x_max.ravel(), y_max.ravel()], axis=1, dtype=float
30
- )
31
-
32
- return [tuple(tile[i].item() for i in range(4)) for tile in tiles]
33
-
34
-
35
- def transform_bbox(
36
- bbox: tuple[float, float, float, float], to_crs: str
37
- ) -> tuple[float, float, float, float]:
38
- """Transform the bounding box to a different coordinate reference system (CRS).
39
-
40
- Arguments:
41
- bbox (tuple): Bounding box to transform (north, south, east, west).
42
- to_crs (str): Target CRS (e.g., EPSG:4326 for CRS:84).
43
-
44
- Returns:
45
- tuple: Transformed bounding box (north, south, east, west).
46
- """
47
- transformer = Transformer.from_crs("epsg:4326", to_crs)
48
- north, south, east, west = bbox
49
-
50
- # EPSG:4326 is lat, lon, so xx is lat and yy is lon
51
- bottom_left_x, bottom_left_y = transformer.transform(xx=south, yy=west)
52
- top_left_x, top_left_y = transformer.transform(xx=north, yy=west)
53
- top_right_x, top_right_y = transformer.transform(xx=north, yy=east)
54
- bottom_right_x, bottom_right_y = transformer.transform(xx=south, yy=east)
55
-
56
- west = min(bottom_left_y, bottom_right_y)
57
- east = max(top_left_y, top_right_y)
58
- north = min(bottom_left_x, top_left_x)
59
- south = max(bottom_right_x, top_right_x)
60
-
61
- return north, south, east, west
@@ -1,57 +0,0 @@
1
- maps4fs/__init__.py,sha256=EGvLVoRpSt4jITswsGbe1ISVmGAZAMQJcBmTwtyuVxI,335
2
- maps4fs/logger.py,sha256=WDfR14hxqy8b6xtwL6YIu2LGzFO1sbt0LxMgfsDTOkA,865
3
- maps4fs/generator/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
4
- maps4fs/generator/game.py,sha256=g8lMHuuRRmJLSDsQTAMv8p_-qntYMiZKnAqn7ru96i0,11645
5
- maps4fs/generator/map.py,sha256=XEY2wYWl7ABcJ2i1-05t-4mduuGYhE07nscoA_7va_g,16288
6
- maps4fs/generator/qgis.py,sha256=Es8hLuqN_KH8lDfnJE6He2rWYbAKJ3RGPn-o87S6CPI,6116
7
- maps4fs/generator/settings.py,sha256=8UbET3X1IbA7D4DX5HesZ7ijXLdzCCp7B3p3mFCZs8s,7429
8
- maps4fs/generator/statistics.py,sha256=aynS3zbAtiwnU_YLKHPTiiaKW98_suvQUhy1SGBA6mc,2448
9
- maps4fs/generator/component/__init__.py,sha256=s01yVVVi8R2xxNvflu2D6wTd9I_g73AMM2x7vAC7GX4,490
10
- maps4fs/generator/component/background.py,sha256=9CyT5MoQWILFwEGZThZnn3l1UEDI-5Sg0-VUV9TT240,23722
11
- maps4fs/generator/component/config.py,sha256=IP530sapLofFskSnBEB96G0aUSd6Sno0G9ET3ca0ZOQ,3696
12
- maps4fs/generator/component/dem.py,sha256=Bvm3ViA6PpR7RXRAHBj5rgYB9PWy55Qj6PhTMv6dJRI,11953
13
- maps4fs/generator/component/grle.py,sha256=5ftHSg8FwSkabVlStlfG_erGZSOrilU-RUvCobfT1Yw,19539
14
- maps4fs/generator/component/i3d.py,sha256=5703ntFt7EQKFpQWQN5ST_bM08akV3rpSwKZDvkFp6w,24462
15
- maps4fs/generator/component/layer.py,sha256=-br4gAGcGeBNb3ldch9XFEK0lhXqb1IbArhFB5Owu54,6186
16
- maps4fs/generator/component/satellite.py,sha256=OsxoNOCgkUtRzL7Geuqubsf6uoKXAIN8jQvrJ7IFeAI,4958
17
- maps4fs/generator/component/texture.py,sha256=Nc_oOHX3b4vJm8FnNOn3W4EQGFkW0zW0rGzO_0nTJMM,33392
18
- maps4fs/generator/component/base/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
19
- maps4fs/generator/component/base/component.py,sha256=HeNDaToKrS6OLeJepKZA7iQzZQDYy-9QRtv1A73Ire0,22090
20
- maps4fs/generator/component/base/component_image.py,sha256=2NYJgCU8deHl7O2FYFYk38WKZVJygFoc2gjBXwH6vjM,5970
21
- maps4fs/generator/component/base/component_mesh.py,sha256=7CfaEpfj_4P5LfAjFT4L76pTokqf6zmla9__sQNLUpA,8587
22
- maps4fs/generator/component/base/component_xml.py,sha256=V9pGUvHh6UF6BP0qFARqDq9vquoAgq1zJqhOgBoeS_Y,3983
23
- maps4fs/generator/dtm/__init__.py,sha256=CzK8ZdLU5Iv7DrwK5hIQ41zVsLRFgZO-IuRxf-NCVqg,1516
24
- maps4fs/generator/dtm/arctic.py,sha256=LSivLLjtd6TJUaPYvgSYQ4KalMTaY58zFvwivSh45uM,2587
25
- maps4fs/generator/dtm/baden.py,sha256=PQTMEPm9hrO3nKbv_DXA9oNYnGK_0ei41Q_DhtethX0,1041
26
- maps4fs/generator/dtm/bavaria.py,sha256=nH2wTxiIdQgKotauTqD-zztwFgfZzIdym2sjmSqfujM,4295
27
- maps4fs/generator/dtm/canada.py,sha256=XJ_za2LDV9PEV7hmjPnzdwPbpr6ezAR73-HDVaTuKPk,1290
28
- maps4fs/generator/dtm/czech.py,sha256=sT0gwbtEnizVNcZeL7kyDdwmKvB3w8m6UgJR7ZTk1to,1058
29
- maps4fs/generator/dtm/denmark.py,sha256=JFuBRrCJTMXe_vdO3gRCwsnZ3nZOp_Y6671Kq8aXRGM,1591
30
- maps4fs/generator/dtm/dtm.py,sha256=BkjVDig46dA7BHeViouCfcM-J4e40PjaVlD5xD_35GM,18211
31
- maps4fs/generator/dtm/england.py,sha256=3URUm7uLH_RYXcQdDW3Vt09GWKAE8RAy1ZFJB94kXOA,1124
32
- maps4fs/generator/dtm/finland.py,sha256=VpXpvCgzbyKA6VGSa7ikSzE4B-cLfR1_2zOHvS8delc,1870
33
- maps4fs/generator/dtm/flanders.py,sha256=LltmowbS84_DaBHAS9XYoJPMunX6sWGy6zaVACHj5Ro,1039
34
- maps4fs/generator/dtm/france.py,sha256=nk7MBJujBWJJzzy_pE5WsdyBCH16OQ5bnz4MsK-MVIQ,2654
35
- maps4fs/generator/dtm/hessen.py,sha256=DtKBGvahM9fHq5h07M2n6N5X1G5CLDau4HMEe_2LqvY,966
36
- maps4fs/generator/dtm/italy.py,sha256=mMzFtaxQYLF2rEeqX8k9R_LEmTWACFjPXRDY7wjv2Pk,1224
37
- maps4fs/generator/dtm/lithuania.py,sha256=R-KF3okFzxH7eiEh8tuMTwrnRYkKRgRJAjo65FgKm6I,2121
38
- maps4fs/generator/dtm/mv.py,sha256=mpJhu2eDPDdI2J3xaegL6x58WWiiwPVFDOuSLEp_b5I,1364
39
- maps4fs/generator/dtm/niedersachsen.py,sha256=XP1As-XMKS3Xmx0Mz1_8kxEQqGoGF3KKlrIpm_5VGYo,1275
40
- maps4fs/generator/dtm/norway.py,sha256=PzYFJOx3Y6tuhir2Hy8BDSoI9FzQu01__dEzWrQXM1g,1285
41
- maps4fs/generator/dtm/nrw.py,sha256=5udFCDFplLbQGoEwzwZz4hLPKTaR3hjDvA8gcbyh_7w,960
42
- maps4fs/generator/dtm/rema.py,sha256=arLE12yE92EWmWysNUTtdEzwcNiCBtEBmnfnryOriRY,2589
43
- maps4fs/generator/dtm/sachsenanhalt.py,sha256=UvLrQVxJX30BqtNbKZyR6EJc-vS5fLyanh6fntjYj2k,1144
44
- maps4fs/generator/dtm/scotland.py,sha256=kUGPNjn3mQPOU9sgK3k-uwumPG2wrRFLaDMyPMh06Jw,4819
45
- maps4fs/generator/dtm/spain.py,sha256=A5QScsrd_bkVlf2n9ZfXBL9z_YoXpLsm_5FWs-5nd_o,1021
46
- maps4fs/generator/dtm/srtm.py,sha256=INn3Kpfmo2nLPCDko1sFk9_ZinWW3e8I9S-TX0fMHoY,4327
47
- maps4fs/generator/dtm/switzerland.py,sha256=Jn3qYVEps_K6cH-9rMfB_zoXMxhzWQKPnlKkSE-TehE,3549
48
- maps4fs/generator/dtm/thuringia.py,sha256=iiIGdEZPIQJ-8tcaTeqYTvNHFmM_hFwzos4J8SW55kA,2353
49
- maps4fs/generator/dtm/usgs_wcs.py,sha256=X8VxdhyH0-EciGE_X-KgrAM6sVLTGssYIhtebOj8MPI,1021
50
- maps4fs/generator/dtm/utils.py,sha256=I-wUSA_J85Xbt8sZCZAVKHSIcrMj5Ng-0adtPVhVmk0,2315
51
- maps4fs/generator/dtm/base/wcs.py,sha256=lQAp_gVz9_XUmtyobJkskiefQpuJH4o1Vwb3CSQ0lQA,2510
52
- maps4fs/generator/dtm/base/wms.py,sha256=6Va2UMhg_s0TMOfMhxrPbsiAPiw6-vXBglnaij032I0,2264
53
- maps4fs-2.0.1.dist-info/licenses/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
54
- maps4fs-2.0.1.dist-info/METADATA,sha256=gN6kKoaRpc8RY63LVOEVud4zXG3tDqqd3NFHdUu4lyg,47725
55
- maps4fs-2.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
- maps4fs-2.0.1.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
57
- maps4fs-2.0.1.dist-info/RECORD,,