GID_HuggingFace / main /GeoJSON_Bundesländer.py
giho905e's picture
Upload 30 files
84e78bb
raw
history blame
2.07 kB
# Imports --------------------------------------------------------------------------------------------------
# https://huggingface.co/tasks/table-question-answering
from transformers import pipeline
import pandas as pd
import time
import math
import os
# Small snippet to retrieve coordinates from a geojson file
import requests
import json
#Working Directory setzen
os.chdir('C:/Users/Jens_/Documents/Unterlagen/Studium Dresden/2. Semester/GIT06/GID-Project') #muss angepasst werden
# GADM Deutschland Beispielpolygone --------------------------------------------------------------------
# Vorbereitung
# Daten laden
with open('Daten/GeoJSON/gadm41_DEU_1.json', 'r', encoding='utf-8') as json_datei:
daten = json.load(json_datei)
os.close('Daten/GeoJSON/gadm41_DEU_1.json')
table = pd.DataFrame.from_dict(daten["features"])
# Daten in passendes Format bringen (Pandas Data-Frame)
prop = table['properties'] #Properties in die Tabelle integrieren
prop = pd.DataFrame(list(prop))
del table['properties']
table = pd.concat([table, prop], axis = 1)
geom = table["geometry"] # Koordinatenzeilen abspeichern und durch Indexe ersetzen (Berechnungsdauer)
table["geometry"] = [str(i) for i in range(table.shape[0])]
print(table)
# Modell
tqa = pipeline(task="table-question-answering", model="google/tapas-large-finetuned-wtq")
# Frage
question = 'give me the geometry of england'
# Berechnung
t = round(time.time()) # Berechnungszeit messen
i = tqa(table=table, query=question)['cells'][0]
try:
i = int(i)
answer = geom[i]
except:
InterruptedError ('Falsche Spalte (Es wurde kein Index ausgegeben)')
answer = 'answer: ' + i
t = round(time.time())-t
t = str(math.floor(t) // 3600) + "::" + str((t-(math.floor(t) // 360)*360) // 60) + "::" + str((t-(math.floor(t) // 60)*60))
# Überprüfung
print(answer)
table.iloc[i]
print(t) # ~2 sec
#Ziel der Frage, Orte der Frage
# Wie kann man verschiedene BL ausgegeben bekommen (in der Frage angegeben)
# Wie kann man verschiedene "Operationen" (Zwischen, alle, ect.) in der Frage erkennen