Skip to content

Commit

Permalink
Merge pull request #48 from ParkenDD/fix-karlsruhe-koordinates
Browse files Browse the repository at this point in the history
fix karlsruhe koordinates
  • Loading branch information
the-infinity committed Jun 4, 2024
2 parents 4ff70a8 + de5e7dc commit dc4788d
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 20 deletions.
8 changes: 3 additions & 5 deletions src/parkapi_sources/converters/karlsruhe/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from abc import ABC
from pathlib import Path

import pyproj
import requests
from validataclass.exceptions import ValidationError
from validataclass.validators import DataclassValidator
Expand All @@ -19,7 +18,6 @@


class KarlsruheBasePullConverter(PullConverter, ABC):
proj: pyproj.Proj = pyproj.Proj(proj='utm', zone=32, ellps='WGS84', preserve_units=True)
geojson_validator = DataclassValidator(GeojsonInput)
karlsruhe_feature_validator: DataclassValidator

Expand Down Expand Up @@ -62,7 +60,7 @@ def get_static_parking_sites(self) -> tuple[list[StaticParkingSiteInput], list[I

static_parking_site_inputs: list[StaticParkingSiteInput] = []
for feature_input in feature_inputs:
static_parking_site_inputs.append(feature_input.to_static_parking_site_input(self.proj))
static_parking_site_inputs.append(feature_input.to_static_parking_site_input())

return static_parking_site_inputs, import_parking_site_exceptions

Expand All @@ -75,7 +73,7 @@ class KarlsruhePullConverter(KarlsruheBasePullConverter):
name='Stadt Karlsruhe: PKW-Parkplätze',
public_url='https://web1.karlsruhe.de/service/Parken/',
source_url='https://mobil.trk.de:8443/geoserver/TBA/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=TBA%3Aparkhaeuser'
'&outputFormat=application%2Fjson',
'&outputFormat=application%2Fjson&srsName=EPSG:4326',
timezone='Europe/Berlin',
attribution_contributor='Stadt Karlsruhe',
attribution_license='Creative Commons Namensnennung - 4.0 International (CC-BY 4.0)',
Expand Down Expand Up @@ -103,7 +101,7 @@ class KarlsruheBikePullConverter(KarlsruheBasePullConverter):
name='Stadt Karlsruhe: Fahrrad-Abstellanlagen',
public_url='https://web1.karlsruhe.de/service/Parken/',
source_url='https://mobil.trk.de:8443/geoserver/TBA/ows?service=WFS&version=1.0.0&request=GetFeature'
'&typeName=TBA%3Aka_fahrradanlagen&outputFormat=application%2Fjson',
'&typeName=TBA%3Aka_fahrradanlagen&outputFormat=application%2Fjson&srsName=EPSG:4326',
timezone='Europe/Berlin',
attribution_contributor='Stadt Karlsruhe',
attribution_license='Creative Commons Namensnennung - 4.0 International (CC-BY 4.0)',
Expand Down
17 changes: 6 additions & 11 deletions src/parkapi_sources/converters/karlsruhe/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from enum import Enum
from typing import Optional

import pyproj
from validataclass.dataclasses import DefaultUnset, validataclass
from validataclass.helpers import OptionalUnset, UnsetValue
from validataclass.validators import (
Expand Down Expand Up @@ -73,14 +72,12 @@ class KarlsruheFeatureInput:
geometry: GeojsonFeatureGeometryInput = DataclassValidator(GeojsonFeatureGeometryInput)
properties: KarlsruhePropertiesInput = DataclassValidator(KarlsruhePropertiesInput)

def to_static_parking_site_input(self, proj: pyproj.Proj) -> StaticParkingSiteInput:
coordinates = proj(float(self.geometry.coordinates[1]), float(self.geometry.coordinates[0]), inverse=True)

def to_static_parking_site_input(self) -> StaticParkingSiteInput:
return StaticParkingSiteInput(
uid=str(self.properties.id),
name=self.properties.ph_name,
lat=coordinates[1],
lon=coordinates[0],
lat=self.geometry.coordinates[1],
lon=self.geometry.coordinates[0],
address=f'{self.properties.parkhaus_strasse}, {self.properties.parkhaus_plz} {self.properties.parkhaus_gemeinde}',
max_height=None if self.properties.max_durchfahrtshoehe is None else int(self.properties.max_durchfahrtshoehe * 100),
public_url=self.properties.parkhaus_internet,
Expand Down Expand Up @@ -137,16 +134,14 @@ class KarlsruheBikeFeatureInput:
geometry: GeojsonFeatureGeometryInput = DataclassValidator(GeojsonFeatureGeometryInput)
properties: KarlsruheBikePropertiesInput = DataclassValidator(KarlsruheBikePropertiesInput)

def to_static_parking_site_input(self, proj: pyproj.Proj) -> StaticParkingSiteInput:
coordinates = proj(float(self.geometry.coordinates[1]), float(self.geometry.coordinates[0]), inverse=True)

def to_static_parking_site_input(self) -> StaticParkingSiteInput:
address_fragments = [self.properties.standort, self.properties.stadtteil, self.properties.gemeinde]
address = ', '.join([fragment for fragment in address_fragments if fragment is not UnsetValue])
return StaticParkingSiteInput(
uid=str(self.id),
name=self.properties.standort,
lat=coordinates[1],
lon=coordinates[0],
lat=self.geometry.coordinates[1],
lon=self.geometry.coordinates[0],
capacity=self.properties.stellplaetze,
address=address,
public_url=self.properties.link,
Expand Down
2 changes: 1 addition & 1 deletion tests/converters/data/karlsruhe.json

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion tests/converters/data/karlsruhe_bike.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions tests/converters/karlsruhe_bike_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ def test_get_static_parking_sites(karlsruhe_bike_pull_converter: KarlsruheBikePu

static_parking_site_inputs, import_parking_site_exceptions = karlsruhe_bike_pull_converter.get_static_parking_sites()

assert len(static_parking_site_inputs) == 152
assert len(static_parking_site_inputs) == 154
# Lots of missing capacities
assert len(import_parking_site_exceptions) == 435
assert len(import_parking_site_exceptions) == 460

validate_static_parking_site_inputs(static_parking_site_inputs)

Expand Down

0 comments on commit dc4788d

Please sign in to comment.