diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ec0b4e..31f69da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2025-04-30 +- [BY]: Latitude and Longitude were swapped in the database. This has been fixed. +- [NW]: Latitude and Longitude were swapped in the database. This has been fixed. + ## 2025-04-22 - [HH]: The data now includes the location information from the WFS, filling the `location` field in the database for the city of Hamburg for the first time diff --git a/jedeschule/spiders/bayern.py b/jedeschule/spiders/bayern.py index 317576f..bad6241 100644 --- a/jedeschule/spiders/bayern.py +++ b/jedeschule/spiders/bayern.py @@ -35,7 +35,7 @@ def parse_resource(self, response, feature): for entry in school: if entry.tag == "{http://gdi.bayern/brbschul}geometry": - lat, lon = entry.findtext( + lon, lat = entry.findtext( "gml:Point/gml:pos", namespaces=namespaces ).split(" ") data_elem["lat"] = lat diff --git a/jedeschule/spiders/nordrhein_westfalen.py b/jedeschule/spiders/nordrhein_westfalen.py index 3b58377..17ba712 100644 --- a/jedeschule/spiders/nordrhein_westfalen.py +++ b/jedeschule/spiders/nordrhein_westfalen.py @@ -44,7 +44,7 @@ def normalize(item: Item) -> School: source_crs = item.get("EPSG") if source_crs == "null": source_crs = "EPSG:25832" - transformer = Transformer.from_crs(source_crs, "EPSG:4326") + transformer = Transformer.from_crs(source_crs, "EPSG:4326", always_xy=True) lon, lat = transformer.transform(right, high) return School( diff --git a/test_changes.py b/test_changes.py index 935601d..bd0b328 100644 --- a/test_changes.py +++ b/test_changes.py @@ -15,35 +15,39 @@ def fetch_data(school_id): return response.json() -def sort_dict(data): - return {key: value for key, value in sorted(data.items(), key=lambda k: k[0])} - - def get_clean_item(data): - return set( - { + return { key: value for key, value in data.items() if value is not None and key != "update_timestamp" } - ) -def compare_schools(new_school, old_school): - new_school = sort_dict(new_school) - old_school = sort_dict(old_school) +def dict_diff(dict1, dict2): + all_keys = set(dict1.keys()) | set(dict2.keys()) + + differences = {} + for key in all_keys: + val1 = dict1.get(key, None) + val2 = dict2.get(key, None) + if val1 != val2: + differences[key] = (val1, val2) + + return differences + + +def compare_schools(new_school, old_school): new_values = get_clean_item(new_school) old_values = get_clean_item(old_school) - differences = new_values ^ old_values - if not differences: + differences = dict_diff(new_values, old_values) + if len(differences) == 0: print(" no changes \n") return - print(f"Difference: {differences}") - print(f"Old: {old_school}") - print(f"New: {new_school}") + print(f"Difference found:") + print(json.dumps(differences, indent=2)) def main():