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.
Files changed (40) hide show
  1. maps4fs/__init__.py +3 -2
  2. maps4fs/generator/component/dem.py +1 -2
  3. maps4fs/generator/map.py +2 -1
  4. {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/METADATA +4 -44
  5. maps4fs-2.0.3.dist-info/RECORD +27 -0
  6. maps4fs/generator/dtm/__init__.py +0 -27
  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/generator/dtm/wales.py +0 -123
  37. maps4fs-2.0.2.dist-info/RECORD +0 -58
  38. {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/WHEEL +0 -0
  39. {maps4fs-2.0.2.dist-info → maps4fs-2.0.3.dist-info}/licenses/LICENSE.md +0 -0
  40. {maps4fs-2.0.2.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,123 +0,0 @@
1
- """This module contains provider of Wales data."""
2
-
3
- import os
4
- from math import floor, ceil
5
-
6
- import requests
7
- from pyproj import Transformer
8
-
9
- from maps4fs.generator.dtm.dtm import DTMProvider
10
-
11
-
12
- class WalesProvider(DTMProvider):
13
- """Provider of Wales data."""
14
-
15
- _code = "wales"
16
- _name = "Wales 1M"
17
- _region = "UK"
18
- _icon = "🏴󠁧󠁢󠁷󠁬󠁳󠁿󠁧󠁢󠁷󠁬󠁳󠁿"
19
- _resolution = 1
20
- _author = "[garnshared](https://github.com/garnshared)"
21
- _is_community = True
22
- _instructions = None
23
- _is_base = False
24
- _extents = [(55.87708724246775, 49.85060473351981, 2.0842821419111135, -7.104775741839742)]
25
-
26
- _url = "https://datamap.gov.wales/geoserver/ows" # pylint: disable=line-too-long
27
- _wms_version = "1.1.1"
28
- _source_crs = "EPSG:27700"
29
- _size = 1000
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 tile catalogue.
43
-
44
- Returns:
45
- list: List of download URLs.
46
- """
47
- urls = []
48
-
49
- transformer = Transformer.from_crs("EPSG:4326", "EPSG:27700", always_xy=True)
50
-
51
-
52
- # Make the GET request
53
- north, south, east, west = self.get_bbox()
54
-
55
- # Transform the coordinates
56
- west_transformed, south_transformed = transformer.transform(west, south)
57
- east_transformed, north_transformed = transformer.transform(east, north)
58
-
59
- # Helper function to snap coordinate to nearest 1000 grid
60
- def snap_to_grid(value, func):
61
- return int(func(value * 0.001) * 1000)
62
-
63
- # Snap bounding box coordinates to a 1000-unit grid
64
- x_min = snap_to_grid(west_transformed, floor)
65
- y_min = snap_to_grid(south_transformed, floor)
66
- x_max = snap_to_grid(east_transformed, ceil)
67
- y_max = snap_to_grid(north_transformed, ceil)
68
-
69
- # Calculate the number of tiles in x and y directions
70
- x_tiles = abs(x_max - x_min) // 1000
71
- y_tiles = abs(y_max - y_min) // 1000
72
-
73
-
74
- for x_tile in range(x_tiles):
75
- for y_tile in range(y_tiles):
76
- b_west = x_min + 1000 * (x_tile + 1) - 855
77
- b_south = y_min + 1000 * (y_tile + 1) - 855
78
- b_east = b_west + 145
79
- b_north = b_south + 145
80
-
81
- try:
82
- params = {
83
- "service": "WMS",
84
- "version": self._wms_version,
85
- "request": "GetFeatureInfo",
86
- "exceptions": "application/json",
87
- "layers": "geonode:welsh_government_lidar_tile_catalogue_2020_2023",
88
- "query_layers": "geonode:welsh_government_lidar_tile_catalogue_2020_2023",
89
- "styles": "",
90
- "x": 51,
91
- "y": 51,
92
- "height": 101,
93
- "width": 101,
94
- "srs": self._source_crs,
95
- "bbox": f"{b_west},{b_south},{b_east},{b_north}",
96
- "feature_count": 10,
97
- "info_format": "application/json",
98
- "ENV": "mapstore_language:en"
99
- }
100
-
101
- response = requests.get(# pylint: disable=W3101
102
- self.url, # type: ignore
103
- params=params, # type: ignore
104
- timeout=60
105
- )
106
-
107
- self.logger.debug("Getting file locations from Welsh Government WMS GetFeatureInfo...")
108
-
109
- # Check if the request was successful (HTTP status code 200)
110
- if response.status_code == 200:
111
- json_data = response.json()
112
- features = json_data.get("features", [])
113
- for feature in features:
114
- dtm_link = feature.get("properties", {}).get("dtm_link")
115
- if dtm_link:
116
- urls.append("https://"+dtm_link)
117
- else:
118
- self.logger.error("Failed to get data. HTTP Status Code: %s", response.status_code)
119
- except Exception as e:
120
- self.logger.error("Failed to get data. Error: %s", e)
121
-
122
- self.logger.debug("Received %s urls", len(urls))
123
- return urls
@@ -1,58 +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=PTgvSlG-lg7RJ4lq4TEf7mQBNSwBpiyStTaJzJjMHJs,11949
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=UmCNfcU6i5H68bapMhZw7QgxjYLXBlUI337rOWUR-gE,1570
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=rmfq3n1NiH5tx4ghrU9WmcXttaNWi0dye7VO5JB-_p4,18212
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/wales.py,sha256=J-fpP4Ofnjgrpr3OTMyOGxG4KK7dt9OcfbOZBzj250Y,4752
52
- maps4fs/generator/dtm/base/wcs.py,sha256=lQAp_gVz9_XUmtyobJkskiefQpuJH4o1Vwb3CSQ0lQA,2510
53
- maps4fs/generator/dtm/base/wms.py,sha256=6Va2UMhg_s0TMOfMhxrPbsiAPiw6-vXBglnaij032I0,2264
54
- maps4fs-2.0.2.dist-info/licenses/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
55
- maps4fs-2.0.2.dist-info/METADATA,sha256=3d9n2XeZKNp40kqYbycfqHssCTuI6paWRacNhQ-VtNs,47878
56
- maps4fs-2.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
57
- maps4fs-2.0.2.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
58
- maps4fs-2.0.2.dist-info/RECORD,,