Completed
Push — dev ( 85d654...312d71 )
by
unknown
21s queued 16s
created

nuts3_gdf()   A

Complexity

Conditions 1

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 18
rs 9.95
c 0
b 0
f 0
cc 1
nop 0
1
"""
2
Read data from DB and download.
3
"""
4
from pathlib import Path
5
6
from loguru import logger
7
import geopandas as gpd
8
import pandas as pd
9
10
from egon.data import config
11
from egon.data.db import select_geodataframe
12
13
DATASET_CFG = config.datasets()["mobility_hgv"]
14
WORKING_DIR = Path(".", "heavy_duty_transport").resolve()
15
TESTMODE_OFF = (
16
    config.settings()["egon-data"]["--dataset-boundary"] == "Everything"
17
)
18
19
20
def get_data():
21
    """
22
    Load all necessary data.
23
    """
24
    return boundary_gdf(), bast_gdf(), nuts3_gdf()
25
26
27
def boundary_gdf():
28
    """
29
    Get outer boundary from database.
30
    """
31
    srid = DATASET_CFG["tables"]["srid"]
32
33
    gdf = select_geodataframe(
34
        """
35
        SELECT id, geometry FROM boundaries.vg250_lan
36
        ORDER BY id
37
        """,
38
        geom_col="geometry",
39
        index_col="id",
40
    ).to_crs(epsg=srid)
41
42
    return gdf.dissolve()
43
44
45
def bast_gdf():
46
    """
47
    Reads BAST data.
48
    """
49
    sources = DATASET_CFG["original_data"]["sources"]
50
    file = sources["BAST"]["file"]
51
52
    path = WORKING_DIR / file
53
    relevant_columns = sources["BAST"]["relevant_columns"]
54
55
    df = pd.read_csv(
56
        path,
57
        delimiter=r",",
58
        decimal=r",",
59
        thousands=r".",
60
        encoding="ISO-8859-1",
61
        usecols=relevant_columns,
62
    )
63
64
    init_srid = sources["BAST"]["srid"]
65
    final_srid = DATASET_CFG["tables"]["srid"]
66
67
    gdf = gpd.GeoDataFrame(
68
        df[relevant_columns[0]],
69
        geometry=gpd.points_from_xy(
70
            df[relevant_columns[1]],
71
            df[relevant_columns[2]],
72
            crs=f"EPSG:{init_srid}",
73
        ),
74
    ).to_crs(epsg=final_srid)
75
76
    logger.debug("Read in BAST data.")
77
78
    return gdf
79
80
81
def nuts3_gdf():
82
    """Read in NUTS3 geo shapes."""
83
    srid = DATASET_CFG["tables"]["srid"]
84
    sql = """
85
        SELECT nuts as nuts3, geometry FROM boundaries.vg250_krs
86
        WHERE gf = 4
87
        ORDER BY nuts
88
        """
89
90
    gdf = select_geodataframe(
91
        sql, geom_col="geometry", index_col="nuts3"
92
    ).to_crs(epsg=srid)
93
94
    gdf["area"] = gdf.geometry.area
95
96
    logger.debug("Read in NUTS 3 districts.")
97
98
    return gdf
99