Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PQ Abfrage Geodaten
#11
Big Grin 
...wurde ja jetzt alles mit dem letzten Code abgedeckt. Selbst:
Json.Document(Web.Contents("https://nominatim.openstreetmap.org/search?format=json&q=Port Moresby%2C+Papua-Neuguinea"))
oder 
Json.Document(Web.Contents("https://nominatim.openstreetmap.org/search?format=json&q=Kingstown%2C+St. Vincent und die Grenadinen"))

Shy

Nur bei Værløse Sogn in Dänemark bin ich mir nicht sicher ob das Ergebnis stimmt....

Mein Computer schlägt mich beim Schachspielen, aber ich bin sicher, dass ich ihn beim Kickboxing schlagen werde.  Cool

Ciao
Ralf
Zitieren
#12
Ich bekomme das echt nicht hin .. mögt Ihr mal drüberschaun, wo mein Fehler ist?

To many Requst ist klar .. sind 30 abfrage .. da werde ich mir ne andere Struktur überlegen aber die Abfrage als solches .. Er sagt mit immer LET kann nicht in list .. ...


Danke und Gruß
Armin


Angehängte Dateien
.xlsx   Geo Abfrage PQ.xlsx (Größe: 39,92 KB / Downloads: 2)
Zitieren
#13
Thumbs Up 
Moin In die Runde,

ich habe mich noch mal intensiver mit der Abfrage beschäftigt, den Aufbau des Abrufes von 30 umgeändert und auch mithilfe einer Umgehend das Ergbnis so hin bekommen, wie ich es hätte .. statt Polska erscheint Polen, statt Maroch jetzt Marokko und Rabat wird sauber dargestellt.. Mein Monk ist nun zufrieden   Smile

hier die Lösung .. falls jemand mal hat 

Ortname und Land als Dynamische Tabelle (Name tableOrt)
dort die Namen Orte und Länder Eintragen.

Abfrage in PQ
let
    Quelle = Excel.CurrentWorkbook(){[Name="tblOrte"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Ort", type text}, {"Land", type text}}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ", "Geo", each fnGeo([Ort],[Land])),
    #"Erweiterte Geo" = Table.ExpandRecordColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Geo", {"lat", "lon"}, {"Geo.lat", "Geo.lon"}),
    #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(#"Erweiterte Geo", "Land Sauber", each if [Land] = "Maroc" then "Marokko"
else if [Land] = "Morocco" then "Marokko"
else if [Land] = "Germany" then "Deutschland"
else if [Land] = "Polska" then "Polen"
else [Land]),
    #"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte2", "Ort Sauber", each if Text.StartsWith([Ort], "Rabat") then "Rabat" else [Ort])
in
    #"Hinzugefügte benutzerdefinierte Spalte1"


dann Funktion fnGeo generieen:


let
    fnGeo = (Ort as text, Land as text) =>

let
    Adresse = Ort & ", " & Land,

    Quelle =
        Function.InvokeAfter(
            () =>
                Json.Document(
                    Web.Contents(
                        "https://nominatim.openstreetmap.org/search",
                        [
                            Query = [
                                format = "json",
                                q = Adresse,
                                addressdetails = "1",
                                limit = "1"
                            ],
                            Headers = [
                                #"User-Agent" = "ExcelGeoTool/1.0"
                            ]
                        ]
                    )
                ),
            #duration(0,0,0,1)
        ),

    ErsterTreffer =
        if List.Count(Quelle) > 0
        then Quelle{0}
        else null,

    AdresseRecord =
        if ErsterTreffer <> null
        then ErsterTreffer[address]
        else null,

    Ortsname =
        if AdresseRecord <> null then
            if Record.HasFields(AdresseRecord, "city") then AdresseRecord[city]
            else if Record.HasFields(AdresseRecord, "town") then AdresseRecord[town]
            else if Record.HasFields(AdresseRecord, "village") then AdresseRecord[village]
            else if Record.HasFields(AdresseRecord, "municipality") then AdresseRecord[municipality]
            else Ort
        else Ort,

    Landname =
        if AdresseRecord <> null and Record.HasFields(AdresseRecord, "country") then
            AdresseRecord[country]
        else
            Land,

    Ergebnis =
        [
            Ort = Ortsname,
            Land = Landname,
            lat =
                if ErsterTreffer <> null
                then ErsterTreffer[lat]
                else null,

            lon =
                if ErsterTreffer <> null
                then ErsterTreffer[lon]
                else null
        ]

in
    Ergebnis,
    #"In Tabelle konvertiert" = #table(1, {{fnGeo}}),
    Column1 = #"In Tabelle konvertiert"{0}[Column1]
in
    Column1



Passt wunderbar :-D
jetzt nur noch schauen, was passiert, wenn es in einem Land mehrere Orte namesgleich gibt, momentan nimmt er denb ersten Trefer ...


mal schauen, wie ich das Abfange.

Ich schließe das Thema erstmal ..
Danke

Gruß Armin
Zitieren
#14
(29.05.2026, 07:31)Luna-Maxx schrieb: ....Passt wunderbar :-D
jetzt nur noch schauen, was passiert, wenn es in einem Land mehrere Orte namesgleich gibt, momentan nimmt er denb ersten Trefer ...

....auch Moin, vielleicht schaust Du ja doch noch rein, obwohl geschlossen. Deshalb nur ganz kurz.

Die Fehlermeldung too many Requests kommt übrigens nicht von PQ, sondern vom Server, von dem Du die Daten ziehst.

Zunächst war mir immer unklar, woher Du die Städtenamen ziehst. Die kannst Du jetzt in die Tabelle Ortsliste eintragen und von dort auch auswählen.
Mehrere Stadttreffer, auch kein Problem.
Wie Du siehst, macht es schon einen Unterschied, wie Du die JSON-Dateien aufrufst.
Hab Dir mal ein paar unterschiedliche Abfragen zum Thema gemacht.
Such Dir das passende aus oder stell Dir das Beste aus allen neu zusammen.


.xlsx   Geo Abfrage PQ4.xlsx (Größe: 36,79 KB / Downloads: 2)

Mein Computer schlägt mich beim Schachspielen, aber ich bin sicher, dass ich ihn beim Kickboxing schlagen werde.  Cool

Ciao
Ralf
Zitieren
#15
Moin nochmal,

ich habe mir deine PQ mal angeschaut .. sieht gut aus. das Mit den Abfrage hab ich mir schon gedacht to many request  sind ja dato ca 30 Abfragen in kurzer Zeit, werde dann wohl kurz immer wieder geblockt.
Ich habe meine Struktur, ähnlich wie Du es gemcht hast, umgebaut, über eine dynmaische Tabelle (tblOrt) die Ortnamen einlesen und dann einen Request abschicken, der die Ortliste durchgeht.
Über verschiedene Funktionen (ISO LänderKürzel, Normalisierung, Maps-Links ) so richtig gut geworden .. Pflegeleicht und weiterverarbeitbar ..

Vielen Dank.

Manchmal benötigt man einfach noch eine andee Sichtweise oder Anschubs ...

Gruß us dem Norden
Armin
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions