Swecos blogg om geografisk IT

Läste nyligen om ett nytt svenskt initiativ kallat Rabble. Rabble erbjuder en Iphone app där man kan hitta extra erbjudanden i Stockholm. Just nu är det begränsat till Stockholm.  Det fungerar ungefär så här att man öppnar appen och vips får man en lista på erbjudanden sorterade i utifrån närhet. Just nu när jag skriver detta sitter jag hemma i Tyresö och får ett erbjudande om gratis Whopper om jag köper en Whopper Meal på Burger King i Farsta Centrum. Det är bara 10 kilometer bort.

Visa erbjudanden i närheten

Det här är en föraning om vad som komma skall. LBA (Location Based Advertisement) börjar ta sina första steg. Google och Apple har redan grunderna för att kunna skapa avancerade tjänster och annonsnätverken gör sig redo. Troligen kommer utvecklingen att gå mot att annonserna visas i andras appar – dvs en utvecklare kan finansiera sin app med reklam. Poängen blir då att appar kan bli gratis och reklamköparen når sin målgrupp i ett medium (app) som de väljer att använda. Samma typ av utveckling se i banner annonser och sponsrade sökord på Internet. Finns det något skäl att tro att det mobila mediet har andra marknadsmässiga grunder?

För användaren kan den här typen av reklam vara både plåga eller guld värd.  Men jag ser framför mig att jag leker en regnig dag med en av mina favo appar och att då få erbjudande om att handla inomhus är lockande. Eller en solig dag och en uteservering erbjuder något kallt och gott att dricka. Reklmanen kan bli mycket mer relevant för mig som användare än vad den är idag. Och det gynnar både köpare och säljare.

När positionen finns via telefonens GPS blir det mycket enkelt att filtrera erbjudanden utifrån väder information från SMHI, köravstånd med bil etc.  Det är sånt som vi GIS folk har jobbat med i åratal och förstår både de tekniska och marknadsmässiga aspekterna av.

Prolog
Vi på Sweco är nordens största leverantörsoberoende konsultföretag inom geografisk IT.

Sweco föreslår alltid lösningar, ofta helt baserade på standarder inom geografisk IT, som medför största möjliga kund- och verksamhetsnytta oberoende av vad GIS-programvaran råkar heta, eller vilken programvarufamilj som den tillhör. Vi är inte religiösa vad gäller val av programvara.

Valet av arkitektur och/eller plattform har varit och är stundtals en väldigt infekterad fråga. Jag  förordar inte någonting före någonting annat. Erfarenhet har visat att bästa receptet för lycka och framgång heter plocka-russinen-från-kakan. Nu är ju inte verkligheten så enkel att det bara är att följa den vägen, däremot så är den åtminstone ett slags rätte-snöre för mig. De ortodoxa mjukvarufanatikerna är mer bromsklossar än positivister i ett projekt. När man hamnar i den situationen där ett vägval skall göras, tänk de på samtliga för- respektive nackdelar som du bara kan komma på. Lista dem, ge dem olika poäng, kolla på sammanställningen och du har då fått en fingervisning om rekommenderat vägval.

Du kommer få ta del av fem favoriter, länkar som jag ofta besöker, som handlar om just Open Source GIS.

Diskussion
Lätt val

Valet av mjukvaru-arkitektur är otroligt lätt, speciellt om du är en ortodox mjukvarufanatiker, då är egentligen valet klart på förhand.
Svårt val
Valet av mjukvaru-arkitektur är absolut inte lätt, speciellt inte om du vill vara öppensinning och beakta både Open Source och kommersiella lösningar, eftersom du har en önskan att varje ingående del i systemet skall vara så bra som möjligt.

Idag är det extra skönt att vara leverantörsoberoende, eftersom utvecklingen av nya programvaror baserade på standards är rasande snabb. För Sweco, liksom säkert för många kunder och användare av geografisk information, är det helt omöjligt att förutse vilka som kommer att vara ”de stora drakarna” inom GI-området i framtiden.

En trend är att det idag finns mängder med intressant öppen källkodsprogramvara färdig att använda. För oss spelar det som sagt inte någon roll vad leverantören heter. Det är heller inte så att vi i första hand ser öppen källkodsprogramvara som intressant att utvärdera för att den är gratis. Nej, det som är riktigt spännande är att dessa programvaror ofta är oerhört kraftfulla, samt att de till 100 procent är baserade på befintliga standarder. Ofta är utvecklingstiden för att skräddarsy en slutanvändarlösning helt jämförbar med utvecklingstider i traditionella GIS-programvarufamiljer.

Jag vill dela med mig med fem bra länkar angående Öppen källkod och GIS, jag brukar besöka dessa ganska ofta, dels för att få nya infallsvinklar och även för att hålla mig lite uppdaterad över vad som händer och vad som är på gång. När det gäller Öppen källkod, oavsett inriktning så sker ju utvecklingen i en hög fart, rejält mycket högre än de kommersiella alternativen.

Jag tycker det är viktigt att man inte kategoriserar Öppen källkod och kommersiell kod i grupperna bra/dålig eller dålig/bra.
En erfaren arkitekt skall kunna värdera motsvarigheterna i de bägge lägren och välja det som för ändamålet passar bäst.

Epilog
Friheten att välja – bra eller dåligt ?!
Kanske du tycker frågeställningen är underlig, bra eller dålig. Är det inte så att om du har möjlighet till valfrihet så brukar man säga att det är bra.
Jag är inte så säker på det.
Vad gör man med valfrihet om man inte har kunskapen att vikta och värdera olika alternativ med/mot varandra?!
Vad innebär valfriheten om du har en/flera ortodoxa mjukvarufanatiker i ditt team?!

Som du förhoppningsvis förstår du min syn på valfriheten, för oss på Sweco Position innebär den stora möjligheter, vi väljer det som är bäst för kunden!
Besök gärna de fem intressanta länkarna nedan, det är fem favoriter som jag ofta besöker, det är sammanställningar över GIS Öppen källkod, dels projekt och dels produkter.

Länkar
20-tal Open Source webbGIS-produkter
Open Source GIS
Open Source Desktop GIS projects
En kartläggning av webbaserade open-source GIS-lösningar
Open Source GIS Applications

Dagens hälsning från Anders
Anders och den Franska Bulldoggen Bosse
(Anders till vänster och Bosse den Franska Bulldoggen till höger)

Joomlaföreningen Sverige bildades 2008 på uppdrag av deltagarna på Joomladay Sweden 2007.
På Joomladagen hölls det första konstituerande mötet och föreningens första styrelse valdes av deltagarna.
Joomlaföreningen ingår i Open Source Matters program för erkända Joomla! Users Groups som består av
grupper och föreningar runt om i världen vilka verkar för att sprida kunskap och socialt utbyte mellan användarna.

Länkar
Joomlaföreningen Sverige
Open Source Matters
Joomladay Sverige
Joomla! Users Groups


Dagens hälsning från Anders
Anders och den Franska Bulldoggen Bosse
(Anders till vänster och Bosse den Franska Bulldoggen till höger)

Nu finns release 1.5.20 släppt.
Här kan du ladda ner den  Joomla 1.5.20
Det svenska språkpaketet för backend och frontend kan du ladda ner Språkpaket 1.5.20

Dagens hälsning från Anders
Anders och den Franska Bulldoggen Bosse
(Anders till vänster och Bosse den Franska Bulldoggen till höger)

Prolog

Välkommen till fortsättningen av Open Source och möjligheterna med Cygwin.
Här fortsätter artikelserien om SED. Detta är del 3.
SED del 1 och del 2 har varit på en teoretisk- och introduktionsnivå.
Lite koncept och syntax har visats.

Om du följer artikeln “Open Source – Take me to the (promi)SED land ! Del 1.” så får du en introduktion och en inblick i  denna artikelserie.

I föregående artikel fick du följa med och se vad SED kan användas till. Denna artikel skall ta oss ett steg vidare. Artikelserien kommer stegvis att öka i svårighetsgrad men också i nyttograd.

Jag har jobbat en hel del under årens lopp med information som skall in i en databas, ofta har jag fått informationen i text-format.
Ungefär 11 gånger av 10 så måste innehållet i filen “tvättas” eller på annat sätt justeras.
I enkla fall kan man öppna filen i en text-editor som tex Notepad++, Notepad, Wordpad, VI eller Emacs och göra en sök-och-ersätt.
Om strukturen på informationen är komplex och filen i sig är stor, då är det inte lika lätt att använda ovan nämnda editorer pga begränsningar i verktyget.

Jag har försökt öppna en fil som var 3 GB stor i Notepad, utan större framgång, applikationen hängde sig rejält. När jag däremot körde den i min Cygwin-emulator och använde mig av SED så gick det alldeles utmärkt.

SED löser detta utan problem.

SED är också användbart tex om man gör en sökning i en databas där resultatet senare skall användas för att tex skapa ny sql-kod.

Jag kan nog inte trycka för mycket på betydelsen av SED, dels för mig personligen men dels för andra användare av SED.
För min egen del så är SED det kommando som jag utan tvekan använder mest i Unix, om jag inte har tillgång till en Unix-maskin, ja då kan jag ju använda Cygwin.

Till dig läsare vill jag bara säga “follow me to the (promi)SED land …”

Diskussion/Exempel

I del 2 i artikelserien fick vi en introduktion till reguljära uttryck (Regular expression).
Reguljära uttryck är en av de viktigaste delarna att lära sig när det gäller SED, tyvärr så är svårighetsgraden för de flesta ganska så hög, dvs det uppfattas av många som en hög tröskel att ta sig över.

Vi skall titta på ett exempel som har en ganska komplex struktur.

Vårt exempel ser ut enligt följande:

File / Database Object      :  Procedure->JourneyPattern_Refresh
Status                      : 17 SQL Scanned
Valid SQL                   : 6
Problematic SQL             : 3
Complex SQL                 : 0
Simple SQL                  : 3
File Size (Bytes)           : 10704
Started At                  : 8/24/2010 11:36:17 AM
Processing Time (HH:MM:SS)  : 00:00:14

Vår exempel fil har 363 textstycken enligt ovan struktur.
Det som skiljer sig åt är det som står till höger om respektive kolon :
I vissa fall är det lika värden och i andra fall är det olika.
Det vi vet garanterat i vårt fall är att värdet till höger om

File / Database Object      :  Procedure->

garanterat är unikt.

De tre första styckena ser ut som följer:

File / Database Object      :  Procedure->JourneyPattern_Refresh
Status                      : 17 SQL Scanned
Valid SQL                   : 6
Problematic SQL             : 3
Complex SQL                 : 0
Simple SQL                  : 3
File Size (Bytes)           : 10704
Started At                  : 8/24/2010 11:36:17 AM
Processing Time (HH:MM:SS)  : 00:00:14

File / Database Object      :  Procedure->diiStopPoint_Select
Status                      : 12 SQL Scanned
Valid SQL                   : 11
Problematic SQL             : 10
Complex SQL                 : 0
Simple SQL                  : 1
File Size (Bytes)           : 13925
Started At                  : 8/24/2010 11:36:50 AM
Processing Time (HH:MM:SS)  : 00:00:14

File / Database Object      : Procedure->StopPoint_SaveVersion
Status                      : 12 SQL Scanned
Valid SQL                   : 12
Problematic SQL             : 1
Complex SQL                 : 3
Simple SQL                  : 8
File Size (Bytes)           : 7618
Started At                  : 8/24/2010 11:42:10 AM
Processing Time (HH:MM:SS)  : 00:00:04

När vi är klar så vill vi ha ett resultat som ser ut så här:

File / Database Object      :  Procedure->JourneyPattern_Refresh
File / Database Object      :  Procedure->diiStopPoint_Select
File / Database Object      :  Procedure->StopPoint_SaveVersion

Vi måste således göra en/flera operationer som tar bort samtliga rader som börjar med

Status                      :
Valid SQL                   :
Problematic SQL             :
Complex SQL                 :
Simple SQL                  :
File Size (Bytes)           :
Started At                  :
Processing Time (HH:MM:SS)  :

Vi kan formulera vårt arbete på följande sätt:
Ta bort samtliga rader i filen som börjar med “Status”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Valid SQL”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Problematic SQL”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Complex SQL”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Simple SQL”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “File Size”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Started At”. Spara filen.
Tag därefter bort samtliga rader i filen som börjar med “Processing Time”. Spara filen.
eller på följande sätt:
Tag bort samtliga rader som börjar med “Status” och ta bort alla rader fram till och med de rader som börjar med “Processing Time”. Spara filen.

Första sättet är det absolut enklaste sättet, det kräver inte särskilt mycket SED kunskap. Däremot innefattar den flera steg, som i sin tur kan krångla.
Det andra sättet är betydligt mer komplicerat, kräver mer SED kunskap, innefattar mindre steg.

Vi skall titta på bägge metoder.

Antag att vår fil heter resultat_fil.txt, den har 3634 rader.

FÖRSTA METODEN:
Vi använder oss av
sed ‘/pattern/d’
som innebär att man tar bort samtliga rader som uppfyller pattern.
Detta måste göras för varje rad som uppfyller pattern, dvs har vi ett mönster med 8 unika strängar så måste vi således göra detta 8 gånger.
(Vårt exempel har 8 unika strängar vars rader vi skall ta bort)

1) sed ‘/Status/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller ordet “Status” borttagen.

3) sed ‘/Valid SQL/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
4) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Valid SQL” borttagen.

5) sed ‘/Problematic SQL/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
6) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Problematic SQL” borttagen.

7) sed ‘/Complex SQL/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
8 ) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Complex SQL” borttagen.

9) sed ‘/Simple SQL/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
10) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Complex SQL” borttagen.

11) sed ‘/File Size/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
12) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Complex SQL” borttagen.

13) sed ‘/Started At/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
14) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Complex SQL” borttagen.

15) sed ‘/Processing Time/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
16) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader som innehåller strängen “Complex SQL” borttagen.

17) KLART, nu är filen städad och de önskade raderna är borttagna.

ANDRA METODEN:
Vi använder oss av
sed ‘/pattern_1/,/pattern_2/d’
som innebär att man tar bort samtliga rader mellan pattern_1 och pattern_2, samt raderna som innehåller pattern_1, samt raderna som innehåller pattern_2.
Detta görs endast en gång, dvs har vi ett mönster med 8 unika strängar så måste vi således göra detta 1 gång genom att definiera starten på mönstret respektive slutet på mönstrat.

1) sed ‘/Status/,/Processing Time/d’  resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
Nu är samtliga rader borttagna mellan pattern_1 och pattern_2, samt raden som innehåller pattern_1, samt raden som innehåller pattern_2.
3) KLART, nu är filen städad och de önskade raderna är borttagna.

STÄDNINGEN FORTSÄTTER:
Gemensamt för de två metoderna vi sett ovan är att vi skall fortsätta städa i filen.
Vi vill inte ha tomma rader i filen, vi måste alltså ta bort de tomma raderna.
Vi vill inte ha något mellanslag/tab/mellanrum i början av respektive rad, vi måste alltså ta bort mellanslag/tab/mellanrum i början av respektive rad.
Vi vill inte ha något mellanslag/tab/mellanrum i slutet av respektive rad, vi måste alltså ta bort mellanslag/tab/mellanrum i slutet av respektive rad.

Ta bort tomma rader

1) sed ‘/^$/d’ resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
3) KLART, nu är samtliga tomma rader borttagna.

Ta bort mellanslag/tab/mellanrum i början av respektive rad
1) sed ’s/^[ \t]*//’  resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
3) KLART, nu är samtliga mellanslag/tab/mellanrum i början av respektive rad borta.

Ta bort mellanslag/tab/mellanrum i slutet av respektive rad
1) sed ’s/[ \t]*$//’   resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
3) KLART, nu är samtliga mellanslag/tab/mellanrum i slutet av respektive rad borta.

Kombinera de tre operationerna
En av SED:s egenskaper är att man bland annat kan kombinera ihop operationer till en enda operation.
Vilket för oss skulle innebära att vi gör en körning istället för tre körningar.

Ett sätt att lösa detta är att använda sig av en skript-fil som input till SED.

Operationen för respektive anrop ser ut som följer:

Beskrivning Syntax
Ta bort tomma rader /^$/d
Ta bort mellanslag/tab/mellanrum i början av respektive rad s/^[ \t]*//
Ta bort mellanslag/tab/mellanrum i slutet av respektive rad s/[ \t]*$//

För att kombinera ihop två eller fler operationer så kan man skapa en text-fil där man anger respektive operation på en egen rad, dvs om man har tre operationer då kommer vår text-fil att ha tre rader osv.

Jag skapar en text-fil som heter bulk_script.txt
med följande tre rader:
/^$/d
s/^[ \t]*//
s/[ \t]*$//

Syntaxen för SED med en skript-fil ser ut som följer:
sed -f  SCRIPT_FILE < ORIGINAL_FILE > RESULT_FILE

Ta bort tomma rader samt ta bort mellanslag/tab/mellanrum i slutet av respektive rad samt ta bort mellanslag/tab/mellanrum i början av respektive rad
1) sed -f bulk_script.txt < resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
3) KLART, nu är tomma rader borta samt mellanslag/tab/mellanrum i slutet av respektive rad borta och alla mellanslag/tab/mellanrum i början av respektive rad borta.

Nu kör vi med en skript-fil för allt vi skulle göra
Skript-filens möjligheter med SED gör att vi på ett effektivt sätt kan förenkla körningarna och få en bättre överblivk vad som händer samt en bättre förståelse för den kronologiska följden.
Vårt sista exempel i denna artikel skall visa oss hur vi kan göra samtliga operationer vid en och endast en körning.
Vi skall rensa bort mönstret som finns i vår ursprungsfil.
Vi skall ta bort tomma rader.
Vi skall ta bort mellanslag/tab/mellanrum i början av respektive rad.
Vi skall ta bort mellanslag/tab/mellanrum i slutet av respektive rad.

Det skall vi göra med hjälp av en skript-fil och dessutom göra detta på en och endast en körning.

Vår skript-fil som heter bulk_script.txt innehåller följande:
/Status/,/Processing Time/d
/^$/d
s/^[ \t]*//
s/[ \t]*$//

Vår sista körning kommer nu att se ut så här:
1) sed -f bulk_script.txt < resultat_fil.txt > resultat_fil.txt.tmp
Resultatet av denna körning sparas i en temporär fil som jag kallar resultat_fil.txt.tmp
2) mv resultat_fil.txt.tmp resultat_fil.txt
Skriv över orginalfilen resultat_fil.txt med innehållet i resultat_fil.txt.tmp
3) KLART.

När man jobbar med flera steg i en text-fil så är det klokt att dela upp arbetet i mindre steg och dessutom använda sig av en skript-fil.
Det finns flera fördelar med det arbetssättet.
Den kraftfullaste är att man får en mycket bra översikt samt att förändringar kan göras på ett enklare sätt eftersom man har den kronologiska ordningen i filen.

Epilog

Du har nu fått en fortsättning på SED, det här är del 3 i artikelserien om “Open Source – Take me to the (promi)SED land”.
Jag hoppas att speciellt denna artikel, dvs den tredje artikeln om SED har fått dig att inse kraften i SED. Jag läste på en webb-sida om SED där man förklarade varför just SED är förhållandevis okänt, även för den inbitne Unix/Linux-fantasten. Förklaringen var ganska enkel, det handlade kort och gott om dokumentationen. Prova vid Unix/Linux-prompten skriva “man sed” (dvs visa manual-sidan för SED), troligtvis blir du mer förvirrad nu än vad du kanske är i vanliga fall. Den dokumentation man kan hitta om SED är till största del erfarenheter och exempel-kod från personer som på egen hand gjort dessa lathundar. Om man föredrar mer formell dokumentation, ja då är du hänvisad till SED:s manual-sidor, med allt vad det innebär.

Artikelserien om “Open Source – Take me to the (promi)SED land” kommer att fortsätta med en fjärde avslutande del, där vi fortsätter i samma anda som denna artikel, dvs det finns ett exempel med en informations-fil som vi skall jobba med.

Vi har nu läst och följt med i tre artiklar om SED, där svårigheten har ökat hela tiden. Min förhoppning med denna artikelserie är att du skall få en känsla och en förståelse över SED och inte just bara mekaniska kunskaper där du kopierar färdiga operationer. Kopieringen av färdiga operationer är viktigt men för att underlätta för dig framöver så är det ännu bättre om du kan få med dig en känsla och bättre förståelse.

Därför skriver jag denna artikelserie.

Jag kan inte låta bli att återigen trycka på att SED är oerhört kraftfullt och hjälper dig rejält.

Welcome to the (promi)SED land !

Länkar
Notepad++
Open Source – Take me to the (promi)SED land ! Del 1.
Reguljära uttryck (Regular Expression)
Using the SED editor in Linux
AWK: The Linux Administrators’ Wisdom Kit
Cygwin

Dagens hälsning från Anders
Anders och den Franska Bulldoggen Bosse
(Anders till vänster och Bosse den Franska Bulldoggen till höger)


Computer Sweden presenterade den 26:e augusti i år en kort artikel om öppna program som blivit prisade.

Årets Bossies Award delas ut i fyra kategorier:
1) Applikationer
2) Utvecklingsprodukter
3) Plattformar
4) Nätverksprogram

Vinnare i kategorien applikationer är affärssystemet Openbravo ERP.
Bland utvecklingsprodukterna vinner Googles språk Go
I kategorin plattformar och mellanprogram är vinnaren mobiloperativet Android.
Bland nätverksprogrammen lyfts övervakningsprodukterna Hyperic HQ fram.

Länkar
Bossie Award
Openbravo ERP
Google Go
Android
Hyperic HQ


Dagens hälsning från Anders
Anders och den Franska Bulldoggen Bosse
(Anders till vänster och Bosse den Franska Bulldoggen till höger)

Open Street Map växer så att det knakar, kolla gärna deras statistik över tillväxten. Bara sedan jag stack på semester i mitten av juni till nu i mitten av augusti verkar det som om antalet ökat med 30-40.000. Många av dessa är personer som engagerar sig och vill skapa bra kartor. Tittar man på kartorna över de större städerna så är de ju riktigt riktigt bra! Inte nog med att Open Street Map erbjuder kartdata som är uppdaterat och bra. Nu finns Google MapMaker som möjliggör för vem som helst att editera kartdata världen över – och det är uppdaterat direkt när någon annan har verifierat att det är ok. Kartografens värld håller på att ändras – mycket snabbt.

Samtidigt sitter ett antal personer på svenska Lantmäteriet och skapar kartdata – till största delen för skattemedel. Jag satte mig därför ner och tittade i Lantmäteriets årsredovisning. Enligt den så säljer Lantmäteriet geografiska data, inkl. ortofoton för 83,4 miljoner kronor per år. Av dessa kommer 34,3 miljoner från övriga statliga organ och kommuner, dvs skattepengar skyfflas runt mellan olika allmänna organ. Staten har alltså intäkter om 49 miljoner per år för försäljning av geografisk information. Tyvärr kunde jag inte läsa ut hur mycket av dessa 49 miljoner går i försäljningskostnader eller med säkerhet läsa ut hur mycket det kostar att producera det geografiska datat.  Men utan att veta kan jag gissa att försäljningskostnaden för det geografiska datat inte ligger under 15-30% av intäkterna. Så då kan vi reducera 49 miljoner till 34-41 miljoner. Så staten “tjänar” maximalt 34-41 miljoner på kartdata. Geografiska data kostar mycket pengar att skapa, mycket mer än dessa 49 miljoner i intäkter. I stort sätt alla kommuner levererar geografisk information till Lantmäteriet. Den sammanlagda kostnaden per år för den geografiska infrastrukturen uppgår till mångdubbelt högre summa. Kanske vet ingen i Sverige hur hög totalkostnaden är.  Att då försvara en inkomst ynka 49 miljoner förefaller inte så klokt.

I USA och Storbrittanien har politker insett att geografiska data framtagna för skattemedel bör vara tillgängliga för företag som vill göra något med det. Det skapar stora affärsmöjligheter. En studie i Storbrittanien visar på stora samhällsvinster genom att släppa data fria. De som gynnas av dyra geografiska data är de stora företagen. För de små företagen blir kostnaden för data en allt för stor affärsrisk. Det är inte utan anledning som de största karttjänsterna i Sverige (och Europa) nu flyttar till USA, när Google och Bing Maps tar marknadsandelar på kartmarknaden.

I somras har EU direktivet kallat PSI trätt i kraft. Enligt den lagen skall alla myndigheter göra sitt data tillgängligt för allmänheten på maskinläsbar form, utan onödiga avgifter. Tyvärr verkar detta inte gälla geografisk information. I Storbritannien har de första stegen mot fria geografiska data tagits. Sedan en tid tillbaka är grunddata fria i USA. Svenska ULI (Utvecklingsrådet för Landskapsinformation har en vision om att geografiska data skall vara fria 2014. Om OSM kommer att ha samma tillväxt av användare framtill 2014 blir de flera miljoner kartografer. Eller om Google MapMaker blir populärt så kommer Lantmäteriet i stort att tappa sin roll som leverantör av geografiska data. Vill vi att den bästa kartografiska databasen över Sverige ägs av Google? Varför vänta till 2014?  I Internet tid är det en mycket lång tid . Om man blickar 4 år tillbaka till 2006, var Google Maps helt nytt!

Hos Open Street Map kan jag inte se hur många registrerade användare finns i Sverige. Men jag övertygad om att om OSM:s kartografer och Lantmäteriets ALLA kartografer samarbetar så kunde man skapa de allra bästa kartorna i hela världen. Det finns en möjlighet att skapa en enastående geografisk infrastruktur genom att Lantmäteriet, kommuner och andra slår ihop sina data och nyttjar teknik liknande Open Street Map och säpper geografiska data fria.

“Early bird”: Om du bokar din konferensplats denna vecka (senast 20:e Augusti) – så sparar du några kronor.

Föredragen: Föredragslistan börjar ta form och det blir användarpresentationer från Norge, Sverige, Danmark och Finland! Ämnena varierar men naturligtvis blir det en del INSPIRE och FME Server i kombination med Open Source. Du hittar program och kan läsa mer om föredragen på denna sida.

(Självklart ser vi också fram mot underhållande presentationer från Dale Lutz).

Lightning talks: Är du själv intresserad av att framföra något? Det kommer att erbjudas möjlighet till korta presentationer sk lightning talks. Man får egentligen prata om vad som helst och kan även anmäla sig under själva konferensen. Har du redan en ide’ ? Hör av dig.

Hitta dit: Har du FME? Pröva detta!

Väl mött på http://fmedagarna.se !

Att söka längs en rutt är ju jätte enkelt. Det är bara att ta rutt geometrin, skapa en buffer runt den och sen en union med ett POI lager. Det vet ju varenda GIS utbildad. Men varför har inte de stora kartjänsterna det här i sina tjänster?  Till det finns några anledningar.

  1. Prestanda. Det är rätt knepigt att få en “sök längs rutt” snabb på webben, för att den är serialiserad. Först måste rutten räknas, sen buffern och sist unionen. Och då har det hela tagit sån tid att användaren gått nån annanstans. Det finns självklart lite sätt att bluffa användaren genom att leverera först rutten och sen sökresultatet, då upplever användaren inte att det är så svårt.
  2. Landet/storstad problemet. Om du söker hotell längs vägen så finns massor och åter massor inom 2km från motorvägen inuti städerna, men inga på landet. Det behövs en mekanism för att fixa till detta, så att bufferten är bredare på landet än i staden.
  3. Tiden problemet. Om man planerar sin rutt på webben så gör man det ofta innan man skall åka och behlöver då kunna ange tiden för när man skal åka, äta, sova eller liknande.

Men nu börjar det röra på sig lite. Microsoft har i BING lagt till buffer sökningar se Johannes Kebecks blog. Google har en halvmesyr lösning för detta som finns beskriven här.

I dagarna stötte jag även på en längs med vägen tjänst hos vackertväder.se. Man anger bara varifrån man åker och vart man skall och upp får man en bild som här nedan.

Enligt mitt tycke en rätt så nyttig tjänst. Den är ganska användarvänlig och enkel att använda – och ger mig faktiskt en ganska stor nytta när jag skall åka. Och vackerväder.se har löst tidsfrågan alldeles galant, man får en lista med tider där man kan enkelt ser hur vädret ändras längs med sträckan. Bra jobbat tycker jag.

Eniros kartor hade ett tag sökning längs med väg, men det var få användare som hittade till den eftersom länkarna låg avsides. För den vanliga utvecklaren är det  enkelt att få snabba sök längs med väg. Tricket är “bara” att skicka geometrin till PostgreSQL med PostGIS. Jag var inblandad i ett projekt där det gjordes och efter ganska liten prestanda optimering på Postgres hade man riktigt bra prestanda på buffer och union sökningar på långa rutter (>1000km), då mättes tiden för buffer och union i några hundra millisekunder. Vilket faktiskt räcker för att ge användaren en sök längs med väg tjänst som upplevs som snabb.

“Sök längs med väg” tjänsterna är bland de mest nyttiga som finns som tillägg till ruttjänster. Som Vackertväder gjort – klockrent och enkelt sätt att planera resan.  Och med bättre tjänster så kan ruttplanerarna bli riktiga reseplanerare. Där kan man planera hela resan – inklusive att planera för vädret. Vid en privat resa för ett tag sen så var Google Maps det primära planerings verktyget, men det brister just när det kommer till att binda ihop sökinfo och rutt.

Jag hoppas att Eniro och Hitta tar upp kampen på “sök längs med väg” med Bing och Google och gör riktigt nyttiga tjänster.

Microsoft presenterar i denna video sin konkurrent till Google Streetview. Vad det verkar så ser konceptet mycket lovande ut. Betydligt mer intuitiv navigering för användaren än vad dagens streetview lösningar har idag. Ännu är detta inte lanserat men jag ser med spänning fram emot att titta på Stockholms gator!

I de flesta Streetview tillämpningar upplever jag just navigationen i bilderna som den knepiga punkten. Som användare tappar jag lätt bort mig och hittar inte dit jag vill. Detta gäller alla de tillämpningar jag sett hittils, tex Eniro eller Hitta. Bildmaterialet är helt fantastiskt och ger en riktigt bra bild av hur det ser ut.

Därför blir det intressant att se om Microsoft lyckats hitta ett bättre sätt att navigera i bilderna.