Att använda öppen, historisk kartdata

Detta är ett gästinlägg av Leonard Wallentin från Journalism++. Åsikter och kommentarer som nämns nedan reflekterar inte automatiskt åsikterna från Wikimedia Sverige.

 

franska_kolonier_1953
Foto: Rotsee. CC0.

Den här veckan lanserar vi på datajournalistikbyrån Journalism++ ett API för historisk geodata, Thenmap. API:et innehåller administrativa gränser, alltså nationer, län, kommuner och liknande. Allt taget från öppen data. Ett av de uppenbara användningsområdena är förstås att göra kartor, moderna som historiska, men i API:et finns data som skulle kunna användas även för andra typer av visualiseringar. Nedan följer en guide hur du bland annat enkelt använder tjänsten på Wikipedia.

För den som snabbt och enkelt vill göra en koropletkarta på sin sajt, har vi gjort ett javascriptbibliotek, thenmap.js. För att färga kartan kopplar du den till ett Google Spreadsheet-kalkylark. I övrigt kan du kan experimentera med olika inställningar här.

Thenmap levererar geografiska gränser i antingen geojson – eller topojson -format, de båda _de facto_-standarderna för geodata på webben. Det betyder att du enkelt kan importera data till ditt favorit-publiceringsverktyg. Till exempel CartoDB, eller, eftersom du läser den här bloggposten, MediaWiki! Svenskspråkiga Wikipedia har ett tillägg installerat som heter Graph, som bland annat gör det möjligt att dynamiskt bygga (koroplet-)kartor.

Så använder du Thenmap-data på Wikipedia – en teknisk genomgång

Här är en karta över de kommuner där Socialdemokraterna fick mer än 50 procent av rösterna i kommunvalet 1973 (med 1974 års kommungränser, eftersom flera kommuner slogs samman vid årsskiftet). Nedan följer en teknisk genomgång kring hur en gör, men i korthet innebär detta att det kommer finnas fler och bättre kartor på Wikipedia som lätt kan uppdateras.

Hämta data

För att generera kartan behöver vi först hämta 1974 år kommungränser från API:et. Om API:er här tråkar ut dig, kan du [hoppa ner till det färdiga API-anropet (#apicall). API:et är uppbyggt runt olika dataset, där ett, `se-7`, innehåller just svenska kommuner. (Sjuan i namnet kommer från Open Streetmaps numrering av administrativa nivåer). Svenska län heter följaktligen `se-4`, och finska kommuner `fi-8`.) Vidare vill vi ange att det är just geodata vi är intresserade av, genom att specificera en _modul_ att anropa, `geo`. Slutligen behöver vi ange ett datum, här `1974` (synonymt med `1974-01-01`. Alla gränsförändringar 1974 skedde vid nyår, så vi kan välja vilket datum som helst under året.) Nu ser hela vårt API-anrop ut så här.

`v1` anger att det är version ett av API:et vi använder. (Någon annan version finns inte, men det betyder att den dag vi bygger om API:et, kommer äldre tjänster eller instruktioner som den här fortsätta fungera.)

Per default levererar Thenmaps API geodata i geojson-format. För att konvertera till till topojson i stället lägger till till `?geo_type=topojson` i adressen. Vi kan också skicka med namnen på kommunerna, och deras kommunkoder, för att lättare att färga kartan, och så anger vi att namnen ska vara på svenska.

En egenhet hos Thenmap-API:et är att varje geografisk yta kan vara kopplad till fler än en administrativ enhet – och vice versa. Så har t.ex. Brittiska Guyana på 1960-talet, och Guyana efter självständigheten samma gränser, och omvänt så är Sudan för och efter Sydsudans självständighet samma nation, men med olika gränser. Därför innehåller topojson-koden från anropen här ovanför en lista, som i sin tur innehåller objekt med egenskaper som namn och kommunkod. Många externa verktyg kan ha problem med det, så du kan lägga till parametern `geo_flatten_props=true`, för få ett endimensionellt objekt, emd alla egenskaper sida vid sida. Då har vi äntligen vårt färdiga API-anrop.

S-majoritet_1974
Foto: Rotsee. CC0.

Flytta in geodata på Wikipedia

Nu behöver du kopiera in topojson-koden från Thenmap till Wikipedia. (Det går antagligen att skapa Wikipedia-visualiseringar genom att hämta data direkt från Thenmap-API:et. Gör inte det. API:et är inte dimensionerat för stora mängder trafik just nu. Det _kommer_ att krascha.) Topojson-koden ligger inbäddad i en slags container, så här: `{”geo”:`**TOPOJSONKOD**`}`. Du ska med andra ord kopiera ut allt efter `{”geo”:` och för det avslutande `}`. Topojson-koden börjar med `{”type”:”Topology”,”objects”:{”collection”:{”type”:”GeometryCollection”` en massa siffror, följt av `]}`. Klistra in den koden på en wiki-sida. Så här ska det se ut.

Nu kan du använda topojsonkoden tillsammans med Graph-tillägget för att göra kartor. När du ska ange sökväg till geodatat i Graph-mallen, så gör du det så här: `/wiki/Anv%C3%A4ndare:Rotsee/Sverige_1974&action=raw` (om topojson-koden ligger på sidan Anv%C3%A4ndare:Rotsee/Sverige_1974).

Visualiserat exempel

Att göra kartor med graphtillägget är rätt knöligt, och förtjänar ett helt eget blogginlägg, men du kan med fördel kopiera någon annans kod, och modifiera den enligt dina behov. Här är en exempelmall som ritar ut Sveriges kommuner 1974, och färgar dem enligt något mönster: Användare:Rotsee/Kartmall/Sverige_1974

Den använder _Transversal Mercator_-projektion, en vanlig kartprojektion för att återge avlånga länder som Sverige, och tar emot data för att färga kommuner som en parameter som heter `data`. Så här anropas den för att färga kommunerna är Socialdemokraterna hade absolut majoritet 1974 röda:

{{Användare:Rotsee/Kartmall/Sverige 1974|data={”192″:”red”,”319″:”red”,”360″:”red”,”481″:”red”,”483″:”red”,”484″:”red”,”560″:”red”,”561″:”red”,”562″:”red”,”761″:”red”,”1060″:”red”,”1082″:”red”,”1231″:”red”,”1256″:”red”,”1260″:”red”,”1261″:”red”,”1263″:”red”,”1272″:”red”,”1277″:”red”,”1282″:”red”,”1287″:”red”,”1484″:”red”,”1488″:”red”,”1730″:”red”,”1760″:”red”,”1761″:”red”,”1762″:”red”,”1763″:”red”,”1764″:”red”,”1782″:”red”,”1783″:”red”,”1861″:”red”,”1862″:”red”,”1863″:”red”,”1864″:”red”,”1883″:”red”,”1904″:”red”,”1907″:”red”,”1961″:”red”,”1962″:”red”,”1982″:”red”,”1983″:”red”,”2061″:”red”,”2081″:”red”,”2084″:”red”,”2085″:”red”,”2101″:”red”,”2104″:”red”,”2180″:”red”,”2181″:”red”,”2182″:”red”,”2260″:”red”,”2262″:”red”,”2282″:”red”,”2283″:”red”,”2303″:”red”,”2305″:”red”,”2313″:”red”,”2361″:”red”,”2462″:”red”,”2463″:”red”,”2505″:”red”,”2513″:”red”,”2514″:”red”,”2581″:”red”,”2582″:”red”,”2584″:”red”}
}}

Och så så här blir resultatet: Användare:Rotsee/Kommuner där S hade egen majoritet 1974.

Bidra

I Thenmap-API:et finns just nu fyra dataset: Världens nationer sedan 1946, Sveriges kommuner sedan 1974, Sveriges län sedan 1968 och Finlands kommuner sedan 2011. Men API:et kan förstås fyllas med mer data. Det är förberett för att kunna rymma alternativa världsbilder (ska Somaliland ritas ut som en egen nation? Taiwan?), och gränser på olika administrativa nivåer. Däremot saknas ett gränssnitt för att bidra med egna gränser. Om du är intresserad av att hjälpa till, eller har önskemål på vad som ska ligga i databasen, så [mejla gärna oss](mailto:stockholm@jplusplus.org)!

Vi håller på att se över rådatan, som innehåller gränser från flera källor, för att se om vi kan licensiera allt under Open DatabaseLicense, eller om det finns kompatibilitetsproblem någonstans. Säg gärna till också om du har synpunkter på licensiering!

Översättningarna görs automatiskt med WikiData, men enskilda översättningar kan ersättas med manuellt gjorda, där det passar bättre. Även där tar vi gärna emot synpunkter. Tillgängliga språk varierar med dataset. De svenska kommunerna finns till exempel på svenska, engelska, finska och nordsamiska, med svenska som standarspråk.

Vad vi lägger tid på härnäst beror helt och hållet på vilka reaktioner vi får, och hur Thenmaps API faktiskt används, så hör av dig! stockholm@jplusplus.org

En reaktion på ”Att använda öppen, historisk kartdata

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s