File size: 629 Bytes
3d53b81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"""Spatial helpers. NYC works in EPSG:2263 (NY state plane, feet)."""
from __future__ import annotations

from pathlib import Path

import geopandas as gpd

NYC_CRS = "EPSG:2263"  # ft
WGS84 = "EPSG:4326"

DATA = Path(__file__).resolve().parent.parent / "data"


def to_nyc(g: gpd.GeoDataFrame) -> gpd.GeoDataFrame:
    if g.crs is None:
        raise ValueError("layer has no CRS")
    return g.to_crs(NYC_CRS) if g.crs.to_string() != NYC_CRS else g


def load_layer(path: str | Path, layer: str | None = None) -> gpd.GeoDataFrame:
    g = gpd.read_file(path, layer=layer) if layer else gpd.read_file(path)
    return to_nyc(g)