Kul med öppna data

API:er, datakällor och GIS

Dagordning

Vem är jag?

Vad är ett API och var bor de?

      Vaffö dådå?

      Detta är ju inte raketforskning, eller?

      Enkelheten själv, om rätt utfört

      Jaha, det låter ju bra.. Nu då?

      Exempel på anrop

Licenser, villkor, huh?

Britta tipsar!

Praktisk demonstration

Diskussion och applåder

Daniel Modig

Webbutvecklare, framtidsivrare och mycket hängiven allt inom öppna data och öppen källkod.

 

Driver företaget Ikoncept AB med fokus på smarta webblösningar för systematisering och lagring.

 

Bästa mat:    Pyttipanna

Bästa låt:       Jan Johansen - Se på mig

Bästa djur:    Igelkott

Bästa färg:    Orange

Bästa API:      thecatapi.com

Vad är ett API och var bor de?

Ett API eller applikationsprogrammeringsgränssnitt, av engelskans application programming interface, är en specifikation av hur olika applikationsprogram kan använda och kommunicera med en specifik programvara [...]

Wikipedia säger:

Alltså, ett sätt att hämta ut strukturerad data ur ett system.

 

Men.. Hur, och varför?

 

Vaffö dådå?

Tillgänglighet

Kommunikation

Attraktivitet

Service

Öppenhet

Det är ju inte raketforskning... eller?

Kraftkälla

Anslutning

Konsument

Enkelheten själv, om rätt utfört

Datakälla

Server

API

Autentisering kan ske på olika sätt. Standardiserade protokoll som SAML, OAuth används, men vanligast är en saltad API-nyckel eller ingen säkerhet alls.

Jaha, det låter ju bra.. Nu då?

De flesta webbaserade API:er använder XML (RSS, Atom) eller JSON som responsformat, via HTTP-anrop.

 

Metoderna bygger på olika tekniker där REST kanske är den vanligaste, men även SOAP och WSDL förekommer.

 

Många API:er levererar också färdiga klientbibliotek för att hantera API-anslutningar helt smärtfritt i olika bibliotek.

REST-vadå?

... inte vara beroende av ett enda protokoll

... inte använda egna modifikationer av protokoll

... klart och tydligt beskriva innehållet och metadatan i tjänsten

... vara direkt åtkomligt utifrån en bas-URL utan krusiduller

Ett REST-API bör

REpresentational State Transfer

Ex. på anrop:


    http://www.smhi.se/produktportal-1.0/geosearch?lang=swe&q=%25sverige&limit=35

SMHI - geosökningstjänst

Stockholm, STOCKHOLM, Sverige|2673730
Göteborg, GÖTEBORG, Sverige|2711537
Malmö, MALMÖ, Sverige|2692969
Uppsala, UPPSALA, Sverige|2666199
Kista, NORRTÄLJE, Sverige|2599629
Västerås, VÄSTERÅS, Sverige|2664454
Örebro, ÖREBRO, Sverige|2686657
Linköping, LINKÖPING, Sverige|2694762
Helsingborg, HELSINGBORG, Sverige|2706767
Huddinge, HUDDINGE, Sverige|2704620
Jönköping, JÖNKÖPING, Sverige|2702979
Norrköping, NORRKÖPING, Sverige|2688368
Lund, LUND, Sverige|2693678
Umeå, UMEÅ, Sverige|602150
Gävle, GÄVLE, Sverige|2712414
Borås, BORÅS, Sverige|2720501
Södertälje, SÖDERTÄLJE, Sverige|2676176
...

Respons (Plain text)

Ex. på anrop:


    http://nominatim.openstreetmap.org/search?countrycodes=SE&format=json&q=Malmö

OSM Nominatim (namndatabas för OSM)

[{
    "place_id": "138291",
    "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright",
    "osm_type": "node",
    "osm_id": "26804505",
    "boundingbox": [55.4452931, 55.7652931, 12.8401566, 13.1601566],
    "lat": "55.6052931",
    "lon": "13.0001566",
    "display_name": "Malmö, Malmö kommun, Skåne, Götaland, Sverige",
    "class": "place",
    "type": "city",
    "importance": 0.75124775731483,
    "icon": "http:\/\/nominatim.openstreetmap.org\/images\/mapicons\/poi_place_city.p.20.png"
}, {
...

Respons (JSON)

Ex. på anrop:

http://services.arcgis.com/hrh7HJqpzvUrwY6X/arcgis/rest/services/kommungränser/
FeatureServer/0/query?where=KNKOD%3D1280&geometryType=esriGeometryEnvelope
&returnGeometry=true&outSR=4326&returnIdsOnly=false&returnCountOnly=false
&returnExtentOnly=false&returnZ=false&returnM=false&f=pgeojson

ArcGIS Open Data - Kommungränser

{
  "type" : "FeatureCollection", 
  "crs" : 
  {
    "type" : "name", 
    "properties" : 
    {
      "name" : "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
  }, 
  "features" : [
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Polygon", 
        "coordinates" : 
        [
          [
            [12.9761437792901, 55.6048993756903], 
            [13.0059339567491, 55.6174088749801], 
            [13.0461037719378, 55.624196633238], 
            [13.0542545112407, 55.6361420485312], 
            [13.0728190733028, 55.624588528838], 
            [13.0907707632434, 55.6104848679559], 
            [13.1197799264693, 55.6113218038202], 
            [13.1290976701681, 55.6152905211358], 
            [13.1460567735068, 55.6039966965072], 
            [13.1472971786029, 55.571361668768], 
            [13.1183921827504, 55.5615387468372], 
            [13.1347438646342, 55.5451115986135], 
            [13.1059425468785, 55.5271646778542], 
            [13.0542671768689, 55.5253760752654], 
            [13.0450584600401, 55.5141521504136], 
            [12.9367914482927, 55.5049404037011], 
            [12.9154268541328, 55.5311442988119], 
            [12.9085313416046, 55.5559537444425], 
            [12.9073266077567, 55.5744545118843], 
            [12.9258544895288, 55.5863307611378], 
            [12.9761437792901, 55.6048993756903]
          ]
        ]
      }, 
      "properties" : null
    }
  ]
}
...

Respons (GeoJSON)

Ex. på anrop:

http://bredbandskartan.pts.se/Map/WS/WMS.ashx/wms?SERVICE=WMS&REQUEST=GetMap
&VERSION=1.1.1&LAYERS=municipality_grid_aggregation_view&STYLES=municipality_fiber
&FORMAT=image%2Fpng&TRANSPARENT=true&HEIGHT=256&WIDTH=256&SRS=EPSG%3A3857
&BBOX=1252344.2714243277,7514065.628545966,1878516.4071364915,8140237.764258131

PTS - Bredbandskartan

Respons (image/png)

Licenser, villkor, huh?

Tillåter licensen på API:et och dess

data den användning du tänkt dig?

 

Läs alltid noggrant igenom de

villkor och licenstexter som är

knutna till ett API eller en datakälla.

 

Vanligast är att användandet regleras i kommersiella sammanhang, och att det i andra syften kan vara helt fritt att använda. 

 

För att skydda sina egna API:er finns den eminenta tjänsten Svensk API-Licens som stöd. 

Britta tipsar!

Britta tipsar

Britta tipsar

Kommunkampen

En praktisk demonstration

Kommunkampen

Mashup av följande API:er/datakällor

STARTA KOMMUNKAMPEN

Diskussion & applåder

Kul med öppna data

By Daniel Modig

Kul med öppna data

  • 2,107