Få FileMaker Pro att hämta GPS-koordinater för gatuadresser (för iPhone 3G?)

Tråden skapades och har fått 15 svar. Det senaste inlägget skrevs .
1

Jag har lekt en liten stund nu med något som heter Geocode. Det är att göra om gatu-adresser till GPS-koordinater. Det visar sig att det inte var speciellt svårt att göra med FileMaker det heller.

Denna nya tråd är svar på denna fråga:

Ursprungligen av agnwik:

Nu en helt annan sak som jag tror kommer att efterfrågas med nya 3G iPhone....om du har en adress i FileMaker, kan man hämta upp GPS kordinaterna på något sätt i Google Earth eller på något annat sätt, och isåfall hur?

... som finns i denna tråd:
Adresser börjar med ett mellanslag - hur får jag bort det?

Damn, intressanta problem är för mig som kattmynta är för katter, går inte att låta bli att lösa...

Först ett par URL'er
Google Maps API - Google Code
Services - Google Maps API - Google Code

Där finns dokumentationen för vad man kan få för info från Google. Man behöver alltså skaffa ett sk Google Maps API Key Har man inte Google konto så får man skaffa det med.

Hur lösningen fungerar:
Jag har slängt ihop en väldans osnygg databas som ser ut som i bilden. Den består av tre fält: gatuadress, ort, land. En webbvisare i FileMaker 9 som visar sedan speciell URL konstruerad enligt dokumentationen ovan och vips, så får jag fram koordinaterna i vad jag förstår är digital form, det är alltså Google Maps som svarar på min sökning och FileMakers webbvisare visar upp resultatet.

Sedan använder jag ett manus som hämtar webbvisarens innehåll och petar in den i ett annat fält. Ur det fältet filtrerar jag sedan ut bara koordinaterna med FileMakers text-funktioner. Sedan petar jag ihop dessa koordinater med en URL och använder resultatet som URL för en annan webbvisare. Den går till en webbtjänst jag råkade hitta som har en sökruta i vilken man kan skriva GPS-koordinater och så dyker det upp en karta.

Om jag orkade läsa resten av dokumentationen på Google skulle jag säkerligen kunna göra även detta hos Google.

Alltså är det möjligt att loopa igenom sin FM-databas, extrahera koordinaterna för sitt adressregister och peta in dessa GPS-koordinater i fält i databasen. Eller så kan man som jag visat i en annan tråd hämta över alla adresser till FileMaker, manipulerar dem där, och skicka tillbaka dem till adressboken.

Man kan också skippa FileMaker helt och göra allting via Applescript som pratar dels med Safari och dels med Adressboken.

Ganska så coolt om jag får säga det själv.

Du ser det hela i bilden nedan.

Frågor på det?

"Frågor på det?"
Ja, hur fungerar din hjärna ?
Du måste ha dubbelt så många hjärnvindlingar som vanliga människor för att kunna "konstruera" alla dessa svar.

Ett gyrus-komplimang:)

  • Medlem
  • Stockholm
  • 2008-07-09 09:07

Hej Taz_1999,
Precis vad jag önskade mig, -nu återstår det att se om JAG fixar det

(Skall jag skicka lite kattmynta, -har själv två katter, som älskar att prata med muspekaren och jaga den på skärmen...)

Försöker att göra en liknade sak för import till adressboken, men söka på Eniro:

http://personer.eniro.se/query?what=wp&lang=&...

Problemet jag har är att det går inte något bra med svenska tecken!
Har du något bra tips på hur man ska kunna få till dom rätta tecknen för Svenska tecken i ett beräkningsfält?

Försökte med ett beräkningsfält i Excel, inte så snyggt!
Men det funkar, men vore roligare att få till i FM.

Citat:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(CONCATENATE("personer.eniro.se/query?what=wp&lang=&ax=&search_word=";A223;"+";B223;"&geo_area=";Q223));"å";"a");"ä";"a");"ö";"o");"é";"e");"è";"e");"ü";"u")

Senast redigerat 2008-07-09 14:45

Ola Hansen, du får beskriva lite mera vad du försöker göra och vad du använder. Denna tråd handlar ju om FileMaker, men du nämner adressboken. ... Och adressboken har ju inget stöd för att öppna/konstruera URL'er...

Parentes: Du har också sett att din URL innehåller en massa junk på slutet? Tex denna bit? "Eniro Personer - FÖRNAMN EFTERNAMN, ORT"

Nu har jag kikat mera på detta problem och det går faktiskt inte att lösa. Anledningen är att även om man "matar" webbvisaren med åäöÅÄÖ (utan att konvertera dem till URL som man skall) så kommer webbvisaren innan den gör något att konvertera åäöÅÄÖ till sina UNICODE-motsvarigheter och först därefter konvertera resultatet till URL-encoding. Den gör så här:

å blir Ã¥ i Unicode som blir %C3%A5 i URL Encoding.
ä blir à i Unicode som blir %C3%A4 i URL Encoding
ö blir ö i Unicode som blir %C3%B6 i URL Encoding.
osv.

(Referens: HTML URL-encoding Reference )

Detta skulle inte vara någon fara, för egentligen är det korrekt beteende. Men problemet är att Eniro.se och Hitta.se alltså inte har stöd för Unicode i sina URL'er, den konverterar istället åäöÅÄÖ till %E5 %E4 %F6 %C5 %C4 %D6 (vilket också är korrekt).

Att få webbvisaren att göra detta på ett annat sätt fungerar alltså inte. Försöker man att själv mata webbvisaren med sökparametrar där man konverterat åäö till de krumlurer/koder som Eniro vill ha, så tar Webbvisaren och konverterar alla procenttecken till URL-encoding och så blir det tokigt i alla fall. Det går i den här versionen av webbvisaren alltså inte att komma förbi den encoding som webbvisaren gör.

I min lösning för FileMaker för hitta.se som du kan ladda hem här 99.se - Visa inlägg - Att be vänner bekräfta sin adress via .mac? så har jag tänkt på ungefär det här. Det som skickas till Hitta.se är alltså okodad text, som konverteras fel av webbvisaren men då är det "bara" att korrigera och göra en sökning för hand. Man kan ju skriva i webbvisarens fönster som ju är Hitta.se webbsidan och korrera sin sökning där.

Om det var något annat du menade så får du beskriva din fråga mera.

  • Medlem
  • Stockholm
  • 2008-07-09 13:49

Taz: Så du menar att med detta så kommer man kunna se gpskordinaterna direkt i adressboken eller?
För om det är krångligare än så då kommer jag fortsätta att ta fram kordinaterna med Eniro´s sida istället.

Jag menar att om du har fått in dina adresser i FileMaker så kan du sedan ganska lätt hämta GPS-koordinaterna för adresserna och sedan skriva in dem även i Adressboken, till tex Anteckningsfältet. Några rader Applescript tex kan göra det.

Finessen med detta är att GPS-koordinaterna hämtas automatiskt av FileMaker som kan fås att loopa igenom ALLA dina adresser medans du gör något roligare. Men har du bara fyra adresser i adressboken så är nog Eniros sökfunktion mycket bra.

Man kan även skippa FileMaker helt och som jag nämnde och bara jobba med Applescript som plockar fram en adress i taget ur adressboken, slår upp adressen genom att konstruera en URL på ett visst sätt som öppnas i Safari, kopiera sidan i Safari, processa den och plocka ut de bitar (GPS-koordinaterna) man vill ha och avsluta med att skriva dit detta på adressen i Adressboken, tex i Anteckningsfältet. Sedan kan man ju synka sin Adressbok med sin iPhone/iPod osv och då kommer anteckningarna med dit.

I Adressboken i Mac OS X 10.4 så finns inte några speciella fält eller uppgifter för GPS-koordinater men den som frågade nämnde tex iPhone 3G (som jag heller inte har), så jag gissar att detta blir riktigt användbart först när man har en sådan.

Jag har i denna tråd tidigare länkat till inlägg som innehåller nedanstående länk men för att man skall slippa klicka och leta lite så är länken med även här:

Address Book Manipulator - Connecting FileMaker Pro to the Macintosh OS X Address Book

Den lösningen kan alltså synkronisera din Adressbok med en databas i FileMaker. Ser du några möjligheter nu?

  • Medlem
  • Stockholm
  • 2008-07-09 14:08

Absolut, speciellt då jag har sådär en 200 adresser redan.
Dock har jag inte provat på filemaker ännu... kanske dags.
*suck* Jag som haft sån lugn och problemfri datortillvaro sen jag skaffade mac... så kommer du och presenterar sådana här roliga grejer att pilla med. FY DIG!

Haha, who's the man?

Jag kom ju faktiskt på HUR man kan gå runt Webbvisarens begränsning i att den konverterar alla svenska krumelurer till Unicode-krumelurer först och sedan till URL-krumelurer.

Jag har nu en fungerande lösning som fungerar så här:

Jag skapade ett nytt fält: "HTML_Kod".

Jag skapade ett beräkningsfält som innehåller en bättre URL till Eniro, beräkningen ser ut så här:

Substitute(("http://personer.eniro.se/query?what=wp&lang=&..." & Sökfält 1  &  "&geo_area=" & Sökfält 2); 
[" ";"+"];
["å";"%E5"];
["ä";"%E4"];
["ö";"%F6"];
["Å";"%C5"];
["Ä";"%C4"];
["Ö";"%D6"];
["é";"%E9"];
["È";"%C8"];
["ü";"%FC"];
["Ü";"%DC"])

Funktionen konverterar alltså åäö till rätt URL-krumelurer. Den gör en lite manuell URL-encoding alltså.

Sedan har jag ett till webbvisare, den beräkning som den webbvisaren visar ser ut så här:

"data:text/html, " & Kontaktpersoner::HTML_Kod

Avslutningsvis så skapade jag ett snabbt script (som man kan lägga tex på en knapp eller göra som en del i ett manus) för att hämta den fiffiga URL'en som har den URL-encoding som Eniro privatpersonersök vill ha, öppna den i Safari, kopiera HTML-koden som webbsidan har, klistra in den HTML-koden i rätt fält i FileMaker och vips så visas sökresultatet Webbvisaren. Ganska coolt om jag får säga det själv.

Scriptet ser ut så här:

tell application "FileMaker Pro Advanced"
	activate
	tell document "Kontaktpersoner"
		go to layout "Formulär, visningsläge"
		set TheURL to cell "URL_Eniro_c" of current record
	end tell
end tell

tell application "Safari"
	activate
	set URL of document 1 to TheURL
	delay 3
	set theSource to source of document 1
end tell

tell application "FileMaker Pro Advanced"
	activate
	tell document "Kontaktpersoner"
		go to layout "Formulär, visningsläge"
		
		set cell "HTML_Kod" of current record to theSource
	end tell
end tell

Länkar och sådant fungerar inget vidare i denna webbvisare men det ser jag som ett mindre problem. Man kan ju skapa en knapp på hela webbvisaren så hamnar man på motsvarande webbsida som ju redan är öppen i Safaria.

Så alltså kan man konstruera ett arbetsflöde som fungerar som så att om namn, adressen, eller orten innehåller ÅÄÖ så skall man gå vägen över Safari, göra sökningen, hämta källa, visa den i FileMaker. Är allt rätt kan man kopiera de uppgifter man vill där. Annars krävs ett klick för att komma tillbaka till Safari och göra nya sökningar.

Om namn, adress, ort är utan åäö så fungerar ju de webbvisare som redan finns.

Ursprungligen av Taz_1999:

Haha, who's the man?

Jag kom ju faktiskt på HUR man kan gå runt Webbvisarens begränsning i att den konverterar alla svenska krumelurer till Unicode-krumelurer först och sedan till URL-krumelurer.

Substitute(("http://personer.eniro.se/query?what=wp&lang=&..." & Sökfält 1  &  "&geo_area=" & Sökfält 2); 
[" ";"+"];
["å";"%E5"];
["ä";"%E4"];
["ö";"%F6"];
["Å";"%C5"];
["Ä";"%C4"];
["Ö";"%D6"];
["é";"%E9"];
["È";"%C8"];
["ü";"%FC"];
["Ü";"%DC"])

Funktionen konverterar alltså åäö till rätt URL-krumelurer. Den gör en lite manuell URL-encoding alltså.

Lite OT, men inte hade jag en aning om att man kan använda Substitute på det viset! Jag har gjort nästade substitute förut, e.g.

Substitute(Substitute("text2"; "söktext2";"ersättningstext2"); "söktext1";"ersättningstext1")

Riktigt knöligt som ni kan se! Nu har jag lärt mig något nytt!

/CX

Skapa vCard

Din Substitute kod liknar mycket den jag gjorde i Excel

Du undrade vad jag var ute efter, var hur man kunde göra det i FM i stället!
Vet att det var Adressboken jag frågade om.

Vad jag gjorde var att exportera alla kontakter som text, gjorde lite beräkningsfält i Excel.
Exporterade till text.
Skapade nya vCard som jag importerade i i Adressboken. (Ersatte dom tidigare)
Var jag var ute var om man kunde skapa hela flödet i FM, import, beräkningar, skapa nya vCard osv.
Överkurs kanske, men ska titta mer på dina tips!
Nackdelen med substitue i Excel är man bara kan ha nio värden som ska ersättas.

Så här var tanken det ska se ut, fungerar på mitt vis med.
Klickar jag på länken så söker det på Eniro.
Var mest på skoj för egen del!

Här är lite fler krumelurer:

%C9 %C8 %C7 %C6 %C5 %C4 %C3 %C2 %C1 %C0
É È Ç Æ Å Ä Ã Â Á À

%D9 %D8 %D7 %D6 %D5 %D4 %D3 %D2 %D1 %D0
Ù Ø × Ö Õ Ô Ó Ò Ñ Ð

%E9 %E8 %E7 %E6 %E5 %E4 %E3 %E2 %E1 %E0
é è ç æ å ä ã â á à

%F9 %F8 %F7 %F6 %F5 %F4 %F3 %F2 %F1 %F0
ù ø ÷ ö õ ô ó ò ñ ð
%FC
ü

%4F%6C%61%20%48
Ola H

Är det det enda du behöver, en URL i adressboken som fungerar och söker hos Eniro? Det var väl inte riktigt så du presenterade problemet i din fråga?

Jag har nu skapat ett Applescript som tossar igenom hela adressboken och lägger in en Eniro-URL på varje post i den.

Men något händer med adressboken när man kör det scriptet. Jag förstår inte vad, så jag postar det inte här.

Jag måste också passa på att ställa en fråga som ligger nära ämnet.

Går det att koppla en databas till t.ex. Google Maps för se vem eller vad i databasen som ligger närmast det man söker på? Genom att t.ex. söka på Stockholm kan man få alla som bor i Stockholm först, sedan Södertälje, Västerås, Örebro, Göteborg etc.

Ja det gör det. Det torde vara en fråga om att först lagra koordinaterna för de olika adresserna man har och sedan jämföra vilka som ligger inom numeriskt minsta värdet och sortera på det helt enkelt? Man tar helt enkelt och omvandlar grader, timmar, minuter, sekunder till siffror i decimala talsystemet, subtraherar utgångsadressen siffror från de olika måladressernas siffror. Har du runt 10.000 adresser borde du kunna få svar på några sekunder.

Säg till om du behöver mera hjälp.

  • Medlem
  • Örebro
  • 2009-10-14 17:24

Har lattjat lite med detta med hjälp av Yahoo.

Genom att skicka en fråga:

"http://local.yahooapis.com/MapsService/V1/geo..." & Personer::Postnummer & "&state=Sweden"

Så får man ett smidigt XML-svar.

<ResultSet xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/Geo...

<Result precision="zip">
<Latitude>59.332329</Latitude>
<Longitude>18.065090</Longitude>
<Address/>
<City>10012 Stockholm</City>
<State>Sweden</State>
<Zip/>
<Country>SE</Country>
</Result>
</ResultSet>

Detta är en sökning på postnummer, men det går givetvis att göra med adresser också.

Yahoo! Maps Web Services - Geocoding API

Skaffa ett Yahoo App ID: https://developer.apps.yahoo.com/wsregapp/index.php

1
Bevaka tråden