Geoportal med CartoDB

af Niels Kjøller Hansen
niha07@frederiksberg.dk
linkedin.com/in/nielskjoller
@nkjoller

Link til præsentation

http://lab.kjlr.dk/slides/geoportal-med-cartodb/

Kan I huske de gamle dage?

  • Langsom opstart
  • Lange svartider
  • Timeout hvis du henter kaffe

Simpel kortvisning

  • Små, leaflet-baserede kort
  • Data er tilet på forhånd
  • Begrænset adgang til data

Teknologien bagved

  • En webserver til HTML/JavaScript
  • En tilestream-server til servere tiles
  • TileMill derhjemme til at lave tiles

CartoDB - en mere avanceret service

  • En PostGIS-database i skyen
  • Mange typer visualisering
  • Nem redigering af data
  • Design grafisk og publicer nemt

Link

CartoDBs kort - stadig kortvisning

  • Begrænset funktionalitet
  • Maks fem datalag

Hvad kan det strækkes til?

  • Mange temaer?
  • Partshøring?
  • Konfliktsøgning?

  • API'er! Mange!

Grundeksemplet

Skift leaflet.js ud med CartoDB.js

Tilføj visualisering som et lag

cartodb.createLayer(map, 
     'http://minkonto.cartodb.com/api/v2/viz/.../viz.json'
  ).addTo(map)

Temastyring

  • En konfigurationsfil med liste over lag
  • Et brugerflade-element
  • Noget kode til at sætte det sammen

Temastyring - eksempel

Udviklet af Septima P/S

Temastyring - konfiguration

    "layers": [{
        "name": "Trafik",
        "configType": "visualization",
        "url": "http://frederiksberg.cartodb.com/api/v2/viz/609c3544-6403-11e4-9b01-0e853d047bba/viz.json"
    },{
        "name": "Planer",
        "configType": "visualization",
        "url": "http://frederiksberg.cartodb.com/api/v2/viz/ab19b698-5f47-11e4-b1c0-0e018d66dc29/viz.json"
    },{
        "name": "Cykelstier",
        "configType": "table",
        "user_name": "frederiksberg",
        "type": "CartoDB",
        "sublayers": [{
            "sql": "SELECT * FROM cykelstier",
            "cartocss": "#cykelstier{line-color:#F00;line-width:10;line-opacity:0.5;}"
        }]
    }]

Lag direkte fra data

cartodb.createLayer(map, {
                      user_name: 'minkonto',
                      type:'cartodb',
                      sublayers:[{
                        sql: "SELECT * FROM adgangsadresser",
                        cartocss: '#adgangsadresser { marker-fill: #F0F0F0;}'
                      }]
                    }).addTo(map)

Hov! Var det SQL?

sql: "SELECT * FROM adgangsadresser"

Adgang til data

Ja, det kan man godt!

https://minkonto.cartodb.com/api/v2/sql?q=SELECT * FROM adgangsadresser

Test det! (100 rækker)

Adgang til data - avanceret

Fx. vælg punkter inden for et polygon

https://minkonto.cartodb.com/api/v2/sql?q=SELECT * FROM adgangsadresser a 
                                          WHERE ST_Within(a.geom,
                                          ST_GeomFromText('POLYGON(...)'))

(selvfølgelig stadig på én linje)

Partshøring

  • Vælg adresser med et værktøj
  • Vis de valgte adresser
  • Slå ejer/beboere/virksomheder op

Partshøring - eksempel

Hjemmestrikket

Konfliktsøgning

  • Nogle lag der skal tjekkes for
  • Selve søgningen
  • Rapport-generator
  • Konfliktsøgning - Eksempel

    GC2Conflict udviklet af Mapcentia ApS

    Vi skal ud og samle de her ting sammen, så øh, hjælp os :-)

    Datahåndtering

    • Opret tabel direkte i CartoDB
    • Import af fil (GeoJSON/KML)
    • OGR
    • Redigering i QGIS

    OGR (fra GDAL 2.0+)

    ogr2ogr --config CARTODB_API_KEY apikey0a0a10a0010aafdeeeeaccd453295aa3a3e
        -f CartoDB "CartoDB:minkonto" en_geometri-fil.shp -t_srs "EPSG:4326" 
        -nln nytnavn
    

    Tak!

    Niels Kjøller Hansen
    niha07@frederiksberg.dk
    linkedin.com/in/nielskjoller
    @nkjoller

    Link til præsentation:
    http://lab.kjlr.dk/slides/geoportal-med-cartodb/