Git Product home page Git Product logo

rc-esridump-azure's Introduction

RC-ESRIDUMP-AZURE [REPO BACKUP]

rc-esridump-azure je mini aplikace pro export dat o uzavírkách na silnicích a dálnících ze serverů ŘSD ve formátu GeoJSON. Zdrojová data ŘSD vystavuje ve formě REST API ArcGis serveru na https://geoportal.rsd.cz/arcgis/rest/ a je možné tam najít kromě uzavírek u kupu dalších zajímavostí. A bohužel, kupa dalších dat není veřejně přístupná.

API

Pro vybrané typy uzavírek máme vystaveny REST metody vracející všechna data ve formátu GeoJSONu a obsahujíc průběh(čára na mapě tvořena body) uzavírek a doplňková metadata popisující uzavírku(Kdy, kde a proč uzavírka je).

Typicky vypada výstup takto:

    {"type":"FeatureCollection","features":[
        {"geometry": {
            "type": "LineString", 
            "coordinates": [[14.6651886, 49.5383349], [14.6652364, 49.5385102] ...}, 
            "type": "Feature", 
            "properties": {
                "AlertC3Desc": null, 
                "Description": "D3, mezi km 62,7  a  62.5, ve sm\u011bru Bene\u0161ov, z\u00fa\u017een\u00e1 vozovka na jeden j\u00edzdn\u00ed pruh, nepr\u016fjezdn\u00fd lev\u00fd j\u00edzdn\u00ed pruh, Od 19.11.2016 17:11 Do 31.12.2018 17:11, Ukon\u010den\u00ed d\u00e1lnice, pokra\u010dov\u00e1n\u00ed na I/3. ", 
                "OBJECTID": 5444, 
                "ValidTo": 1546276260000, 
                "ddrType": "CURRENT", 
                "IconNumber": "2", 
                "ROAD_ID": 2665197, 
                "ChainageTo": 62.9, 
                "LocalityDesc": "D3, mezi km 62,7  a  62.5, ve sm\u011bru Bene\u0161ov", "AlertC2Desc": "nepr\u016fjezdn\u00fd lev\u00fd j\u00edzdn\u00ed pruh", 
                "ChainageFrom": 62.92, 
                "RN": "D3", 
                "ValidFrom": 1479575460000, 
                "AlertC1Desc": "z\u00fa\u017een\u00e1 vozovka na jeden j\u00edzdn\u00ed pruh"
            }
        },
        ....

Upozornění

Bohužel u dat silnic druhé a třetí třídy je struktura metadat rozdílná od dálnic a silnic a jednotlivé položky nejsou konzistentní ani mezi sebou.

Dálnice - plánované uzavírky

    curl https://rc-escridump.azurewebsites.net/api/highways-planned?code=wcO1T14hAsWK5bfwYYolZqR13X4V6ZVtp/kHNzkva5iAGeuzP745LQ==

Dálnice - současné uzavírky

    curl https://rc-escridump.azurewebsites.net/api/highways-current?code=6Xasb7xlyX6adMlLTAzWt/stVPb/DAcRLAaW0sA7YJcRHlVw8dqnrg==

Hlavní tahy - plánované uzavírky

    curl https://rc-escridump.azurewebsites.net/api/roads-planned?code=1c4BeBEcYbw5sBb2/coRJJey9iD1uW5GrOjzbtKPnrGqF3co8dNlTg==

Hlavní tahy - současné uzavírky

    curl https://rc-escridump.azurewebsites.net/api/roads-current?code=1nmv/bRrm3DrTYO0QgUL9Zc/a0yHeNog2gBCvKqbEaqggiykKszGBg==

Silnice 2. a 3. třídy - uzavírky

    curl https://rc-escridump.azurewebsites.net/api/roads2and3-all?code=msr5mZHL5ehdBagP9tu0WL6Ly69t8NvQP4XYTKqc97i0Hgi0ff1fSw==

Jak to je udělané

Jak vidíte ve zdrojácích, aplikace je hodně minimalistická a také pěkná úloha na vyzkoušení serverless functions. Nepotřebujeme nikde držet stav, jen pomocí pyesridump uděláme json a vrátíme jako response. Celé to je nasazené jako funkce/lambda před kterou je http trigger/API Gateway, která směruje requesty na jednotlivé funkce.

Ok. Úplně přesně to na serverless nesedí. Jedna z velkých výhod serveless funkcí má být placení jen za CPU čas, který funkce využije. A v našem případě hromadu času čekáme na odpovědi serveru místo toho abychom počítali.U lambda funkcí na AWS narazíme i na timeout API Gateway, který je 29 vteřin. A to je na pyesridump dump málo.

Naštěstí jsou hledně timeoutu Azure Functions úplně v pohodě. A na limity jsme zatím nenarazili. Účtování na Azure Functions je mírně odlišné od AWS, ale tak jako tak je provoz takove funkce, pro naše potřeby, téměř zadarmo.

Azure Functions mají čerstvě podporu pro python funkce a to pro verzi python 3.6 kterou je třeba mít i naistalovanou. Aby to všechno hezky fungovalo je třeba mít nainstalováno:

Návody a ukázky:

Interní cheatsheet:

  • Storage: rcstorage000

  • Resource group: rc-resource-group

  • Vytvoření app:

      az functionapp create --resource-group rc-resource-group --os-type Linux --consumption-plan-location westeurope  --runtime python 
      --name rc-escridump --storage-account  rcstorage000
    
  • Nahrání do azure:

      func azure functionapp publish rc-escridump
    
  • Vytvoření venv:

      python3.6 -m venv .env
    
  • Zapnutí venv:

      source .env/bin/activate
    
  • Vypnutí venv:

      deactivate
    

rc-esridump-azure's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.