# script zum geocoden der schulen und zuweisen der URI aus dem AREG from script_helper import DBTools, APITools from configparser import ConfigParser if __name__ == '__main__': print("geocoding dataset now") # datenbank mit den schuldaten conn_config = ConfigParser() conn_config.read("db_conn.cfg") conn_str = f"host={conn_config['connection']['host']} port={conn_config['connection']['port']} dbname={conn_config['connection']['dbname']} user={conn_config['connection']['user']} password={conn_config['connection']['pwd']}" url = r"https://chat.gdi-sh.de/aregapi/" # logfile = r"geocoder.log" my_db = DBTools(conn_str) my_api = APITools(url) schulen = my_db.select_adress() adresse = {} maxfeatures = len(schulen) numfeatures = 0 errorfeatures = 0 missinfeatures = 0 log = [] for item in schulen: adresse["hnr"] = item[1] adresse["stn"] = item[2] adresse["plz"] = item[3] adresse["ort"] = item[4] areg_response = my_api.geocode(adresse) if areg_response.get("uri") is not None: areg_uri = areg_response.get("uri") my_db.update_uri(str(item[0]), areg_uri) numfeatures += 1 else: areg_response_key = list(areg_response.keys()) if areg_response_key[0] == "MISSING": missinfeatures += 1 if areg_response_key[0] == "ERROR": errorfeatures += 1 # log.append(areg_response_key[0] + ": " + areg_response.get(areg_response_key[0]) + f" | betroffene schule: {adresse['hnr']}\t{adresse['stn']}\t{adresse['plz']}\t{adresse['ort']}") print(areg_response_key[0] + ": " + areg_response.get(areg_response_key[0]) + f" | betroffene schule: [{item[0]}]\t{adresse['hnr']}; {adresse['stn']}; {adresse['plz']}; {adresse['ort']}") my_db.closecursor() # sorgt auf dem cloudserver fuer fehler wegen permission # with open(logfile, "w", encoding='utf-8') as out: # for item in log: # out.write(item) percentage = round((numfeatures * 100) / maxfeatures, 2) print(f"\nstatistics:\n {numfeatures} from {maxfeatures} geocoded >> {percentage}%\n {missinfeatures} features with missing attributes\n {errorfeatures} features with errors\n") print("geocoding dataset finished, closing programm")