print(f"\nstatistics:\n{numfeatures} from {maxfeatures} geocoded >> {percentage}%\n{missinfeatures} features with missing attributes\n{errorfeatures} features with errors\n")
print(f"""\nstatistics:\n{numfeatures} from {maxfeatures} geocoded >>
{percentage}%\n{missinfeatures} features with missing attributes\n
Funktion zum Update der Datenbank mit den URI aus dem Geocoder.
Funktion zum Update der Datenbank mit den URI aus dem Geocoder.
:param str param_dbid: ID der Schule aus der Datenbank (nicht AREG URI)
:param str param_dbid: ID der Schule aus der Datenbank (nicht AREG URI)
:param str param_uri: AREG URI
:param str param_uri: AREG URI
"""
"""
self.cursor.execute("alter table prototyp_areg.schulen add column if not exists areg_uri varchar;")
self.cursor.execute(f"update prototyp_areg.schulen set areg_uri='{param_uri}' where lokaleID='{param_dbid}';")
defupdate_adress(self,data,param_uri):
sql_alter="""
alter table
prototyp_areg.schulen
add column if not exists
areg_uri varchar;
"""
sql_update=f"""
update
prototyp_areg.schulen
set
areg_uri='{param_uri}'
where
lokaleID='{param_dbid}';
"""
"""
Funktion zum Update der Datenbank mit den neuen Adressdaten aus dem AREG anhand der URI.
:param dict data: GeoJSON aus der AREG API mit den aktuellen Adressdaten
self.cursor.execute(sql_alter)
self.cursor.execute(sql_update)
defupdate_adress(self,data,param_uri:str)->None:
"""
Funktion zum Update der Datenbank mit den neuen Adressdaten aus dem
AREG anhand der URI.
:param dict data: GeoJSON aus der AREG API mit den aktuellen
Adressdaten
:param param_uri: AREG URI zum zuordnen der Adressdaten
:param param_uri: AREG URI zum zuordnen der Adressdaten
"""
"""
geometry=str(data['geometry'])
geometry=str(data['geometry'])
geometry=geometry.replace("'",'"')
geometry=geometry.replace("'",'"')
self.cursor.execute("alter table prototyp_areg.schulen add column if not exists hnr varchar, add column if not exists strasse varchar, add column if not exists plz varchar, add column if not exists ort varchar, add column if not exists geom geometry(Point, 4326);")
sql_alter="""
self.cursor.execute(f"update prototyp_areg.schulen set hnr='{data['properties']['hnr']}' where areg_uri='{param_uri}'")
alter table
self.cursor.execute(f"update prototyp_areg.schulen set strasse='{data['properties']['stn']}' where areg_uri='{param_uri}'")
prototyp_areg.schulen
self.cursor.execute(f"update prototyp_areg.schulen set plz='{data['properties']['plz']}' where areg_uri='{param_uri}'")
add column if not exists
self.cursor.execute(f"update prototyp_areg.schulen set ort='{data['properties']['ort']}' where areg_uri='{param_uri}'")
hnr varchar,
self.cursor.execute(f"update prototyp_areg.schulen set geom=ST_GeomFromGeoJSON('{geometry}') where areg_uri='{param_uri}'")
add column if not exists
strasse varchar,
defclosecursor(self):
add column if not exists
"""
plz varchar,
Funktion zum Commit und Schießen der Datenbankverbindung nachdem alle Änderungen vorgenommen wurden.
add column if not exists
ort varchar,
add column if not exists
geom geometry(Point, 4326);
"""
sql_update=f"""
update
prototyp_areg.schulen
set
hnr='{data['properties']['hnr']}',
strasse='{data['properties']['stn']}',
plz='{data['properties']['plz']}',
ort='{data['properties']['ort']}',
geom=ST_GeomFromGeoJSON('{geometry}')
where
areg_uri='{param_uri}';
"""
self.cursor.execute(sql_alter)
self.cursor.execute(sql_update)
defclosecursor(self)->None:
"""
Funktion zum Commit und Schießen der Datenbankverbindung nachdem alle
Änderungen vorgenommen wurden.
"""
"""
# schließt den cursor
# schließt den cursor
self.db_connection.commit()
self.db_connection.commit()
...
@@ -77,22 +150,28 @@ class DBTools:
...
@@ -77,22 +150,28 @@ class DBTools:
classAPITools:
classAPITools:
"""
"""
Tools für das Arbeiten mit der pygeoAPI.
Tools für das Arbeiten mit der pygeoAPI. Hier sind die Funktionen zum
Hier sind die Funktionen zum aufrufen des Geocoder Prozesses und zum Finden der Adresse anhand der URI
aufrufen des Geocoder Prozesses und zum Finden der Adresse anhand der URI
"""
"""
def__init__(self,param_url):
def__init__(self,param_url):
"""
"""
Festlegen der Base URL der API für die weitere Verwendung in den Funktionen der Klasse.
Festlegen der Base URL der API für die weitere Verwendung in den
Funktionen der Klasse.
:param str param_url: Base URL der API
:param str param_url: Base URL der API
"""
"""
self.base_url=param_url
self.base_url=param_url
defgeocode(self,data:dict):
defgeocode(self,data:dict)->dict:
"""
"""
Funktion zum Aufrufen des Geocoder Prozesses in der API. Bereinigung finden nicht in dieser Funktion oder diesem Skript sondern im Geocoder statt!
Funktion zum Aufrufen des Geocoder Prozesses in der API. Bereinigung
:param data: Dictionary mit den alten Adressdaten
finden nicht in dieser Funktion oder diesem Skript sondern im Geocoder
:type: dict
statt!
:return: Dictionary entweder mit einem "uri" Objekt oder einem "message" Objekt, wenn uri kommt ist alles gut, wenn message kommt dann ist ein fehler aufgetreten
:param dict data: Dictionary mit den alten Adressdaten
:returns: Dictionary entweder mit einem "uri" Objekt oder einem
"message" Objekt, wenn uri kommt ist alles gut, wenn message kommt