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.
- maps4fs/__init__.py +3 -2
- maps4fs/generator/component/dem.py +3 -4
- maps4fs/generator/map.py +2 -1
- {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/METADATA +4 -43
- maps4fs-2.0.3.dist-info/RECORD +27 -0
- maps4fs/generator/dtm/__init__.py +0 -26
- 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-2.0.1.dist-info/RECORD +0 -57
- {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/WHEEL +0 -0
- {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/licenses/LICENSE.md +0 -0
- {maps4fs-2.0.1.dist-info → maps4fs-2.0.3.dist-info}/top_level.txt +0 -0
maps4fs/generator/dtm/srtm.py
DELETED
@@ -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
|
-
}
|
maps4fs/generator/dtm/utils.py
DELETED
@@ -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
|
maps4fs-2.0.1.dist-info/RECORD
DELETED
@@ -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,,
|
File without changes
|
File without changes
|
File without changes
|