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