Skip to content

Instantly share code, notes, and snippets.

@brncsk
Last active August 29, 2015 14:00
Show Gist options
  • Save brncsk/facbbd61b105ec5a36ce to your computer and use it in GitHub Desktop.
Save brncsk/facbbd61b105ec5a36ce to your computer and use it in GitHub Desktop.
Név Terület (km²) Vonalhossz (km) Százalék a teljesből (vonalhossz alapján)
Éva 78925.82 (26.03%) 21345.28 (25.74%) 25.74%
Csaba 64236.13 (21.19%) 18046.72 (21.76%) 21.76%
Ádám 51179.92 (16.88%) 16205.22 (19.54%) 19.54%
Réka 57773.21 (19.06%) 14624.63 (17.63%) 17.63%
Zsani 51055.20 (16.84%) 12711.79 (15.33%) 15.33%
####Összesen
61/61 vízgyűjtő (terület szerint 100.00%; vonalhossz szerint 100.00%)
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Drina 3033.54 1056240.849325700000000
Boszna-felső 2848.23 954542.789753479000000
Krivala 1997.75 807225.300890351000000
Orbász 4088.14 976268.864157110000000
Boszna-közép 2065.31 763490.101915378000000
Morava 6677.58 1766893.324136340000000
Száva-Kolubara 6740.66 2307810.862023290000000
Száva-Drina 1810.23 567372.937091540000000
Karsztvidék 7169.00 673424.500911942000000
Szana 4730.27 1098502.930113960000000
Száva-alsó 3574.43 1295898.022596620000000
Al-Duna 8268.48 1924430.951507720000000
Száva-Boszna 2658.07 1024024.676993690000000
Száva-Orbász 3141.92 1070752.967620740000000
Zsil 16021.14 3230361.155725080000000
Száva-Szana 4029.09 1350180.391889250000000
Száva-Kulpa 6252.82 2211695.086222560000000
Temes 15432.89 3729906.153965350000000
Dráva-Duna-Tisza 18218.50 4806606.705271030000000
Maros-közép 6593.52 1394032.959593710000000
Lónya-Csázma 3894.73 1445806.809684940000000
Száva-Krapina 2409.50 738739.715534335000000
Maros-alsó 5952.01 1104136.156599260000000
Dráva 6089.45 1837651.615163540000000
Maros-Aranyos 5733.46 1331898.273133450000000
Körösök-felső 2707.08 805731.504321156000000
Körösök 8603.13 2460827.485962280000000
Szamos-felső 3296.54 821363.387248294000000
Mura-Rába 8754.62 2729649.630088280000000
Berettyó és Kraszna 6087.87 1554950.580927380000000
Szamos 7646.75 1812874.306002150000000
Csallóköz 3398.11 931242.423904364000000
Ipoly-közép 1860.29 657695.789633072000000
Zsitva 1369.34 476668.268258154000000
Duna-Lajta 7228.53 1660884.108271570000000
Magyarország 92917.45 28023729.117005400000000
Ipoly-felső 1703.92 629379.945069708000000
Duna-Traisen 7387.09 1923592.767545570000000
Tisza 5204.27 1406867.499035260000000
Sajó 4114.38 1222696.955442060000000
Vág-alsó 2977.49 965766.834175608000000
Nyitra-közép 1680.69 566369.143012772000000
Garam 5629.51 1820700.978319660000000
Latorca és Borsava 4633.44 1423066.369299650000000
Nyitra-felső 1127.06 361095.247673492000000
Turóc 1171.39 430254.241095273000000
Morva-alsó 6674.17 1728068.296421150000000
Vág-felső 2258.74 757643.427417467000000
Hernád 4398.86 1367862.169298570000000
Dyje 4788.90 1344115.066454820000000
Vág-közép1 2534.00 709763.527193599000000
Laborc és Ung 4915.51 1263444.057652650000000
Ondava 4161.19 1225883.617683070000000
Poprád 1971.42 709102.661560589000000
Vág-közép2 1975.92 630246.845229649000000
Árva 1996.62 652763.100425991000000
Százava 2333.16 603345.382018478000000
Jihlava 6135.29 1683825.043632740000000
Morva-közép 4941.88 1424036.112389820000000
Odera-Visztula 3054.47 964978.416905526000000
Dunajec 4566.30 1449733.402974410000000
Viszloka-Szan 5529.92 1417788.612699630000000
Dnyeszter 10551.22 2692162.294620100000000
Drina Réka
Boszna-felső Csaba
Krivala Réka
Orbász Ádám
Boszna-közép Zsani
Morava Réka
Száva-Kolubara Réka
Száva-Drina Ádám
Karsztvidék Zsani
Szana Ádám
Száva-alsó Ádám
Al-Duna Réka
Száva-Boszna Ádám
Száva-Orbász Ádám
Zsil Réka
Száva-Szana Ádám
Száva-Kulpa Ádám
Temes Éva
Dráva-Duna-Tisza Éva
Maros-közép Réka
Lónya-Csázma Ádám
Száva-Krapina Ádám
Maros-alsó Éva
Dráva Éva
Maros-Aranyos Réka
Körösök-felső Réka
Körösök Éva
Szamos-felső Zsani
Mura-Rába Csaba
Berettyó és Kraszna Éva
Szamos Zsani
Csallóköz Csaba
Ipoly-közép Ádám
Zsitva Éva
Duna-Lajta Csaba
Magyarország Minta
Ipoly-felső Ádám
Duna-Traisen Csaba
Tisza Zsani
Sajó Ádám
Vág-alsó Csaba
Nyitra-közép Éva
Garam Minta
Latorca és Borsava Éva
Nyitra-felső Éva
Turóc Éva
Morva-alsó Csaba
Vág-felső Csaba
Hernád Éva
Dyje Csaba
Vág-közép1 Csaba
Laborc és Ung Ádám
Ondava Éva
Poprád Zsani
Vág-közép2 Csaba
Árva Ádám
Százava Csaba
Jihlava Csaba
Morva-közép Csaba
Odera-Visztula Zsani
Dunajec Zsani
Viszloka-Szan Zsani
Dnyeszter Zsani
#!/usr/bin/python3
import json
import os
import csv
from functools import reduce
OWNERS_PATH = 'owners.csv'
EXTENTS_PATH = 'extents.csv'
STATS_PATH = '01-vizgyujtok-stats.md'
GEOJSON_PATH = '02-vizgyujtok.geojson'
GIT_COMMIT = 'git commit -a -m "Automatic update."'
GIT_PUSH = 'git push origin master'
STYLEDICT = {
'Éva': '#70b93e',
'Réka': '#ea71ea',
'Zsani': '#00ff99',
'Csaba': '#0066ff',
'Ádám': '#ffcc00',
'Minta': '#cccccc',
'': '#999999'
}
FILL_OPACITY = .6
STROKE_WIDTH = 2
UNOWNED_STROKE_WIDTH = 1
UNOWNED_FILL_OPACITY = 0
TPL_MARKDOWN_STATS = '{}{}\n####Összesen\n**{}/{}** vízgyűjtő ' +\
'(terület szerint **{:.2%}**; vonalhossz szerint **{:.2%}**)'
TPL_TABLE_HEADER = \
'| Név | Terület (km²) | Vonalhossz (km) | Százalék a teljesből (vonalhossz alapján) |\n' + \
'| --- | --- | --- | --- |\n'
TPL_TABLE_ROW = '| **{}** | {:.2f} **({:.2%})** | {:.2f} **({:.2%})** | **{:.2%}** |'
perf = { k: {'byarea': .0, 'byllen': .0}
for k in STYLEDICT.keys() if k not in ['Minta', '']
};
with open(OWNERS_PATH) as f_owners, \
open(EXTENTS_PATH) as f_extents, \
open(GEOJSON_PATH) as f_geojson:
owners = {row[0]: row[1]
for row in csv.reader(f_owners, delimiter=',')}
extents = {row[0]: {'area': float(row[1]), 'llen': float(row[2])}
for row in csv.reader(f_extents, delimiter=',')}
j = json.load(f_geojson)
for f in j['features']:
p = f['properties']
n = p['nev']
o = owners[n]
if o not in ['Minta', '']:
perf[o]['byarea'] += extents[n]['area']
perf[o]['byllen'] += extents[n]['llen']
p['owner'] = o
p['stroke'] = STYLEDICT[o]
p['stroke-opacity'] = 1.0
p['fill'] = STYLEDICT[o]
p['stroke-width'] = STROKE_WIDTH if o else UNOWNED_STROKE_WIDTH
p['fill-opacity'] = FILL_OPACITY if o else UNOWNED_FILL_OPACITY
with open(GEOJSON_PATH, 'w') as f_geojson:
json.dump(j, f_geojson)
with open(STATS_PATH, 'w') as f_stats:
area_sum = reduce(lambda s, i: s + i['byarea'], perf.values(), 0)
llen_sum = reduce(lambda s, i: s + i['byllen'], perf.values(), 0)
perf_sorted = sorted(perf.items(), key=lambda x: -x[1]['byllen'])
owned_extents = {k: v for (k, v) in extents.items()
if owners[k] not in ['', 'Minta']}
all_extents = {k: v for (k, v) in extents.items()
if owners[k] not in ['Minta']}
f_stats.write(TPL_MARKDOWN_STATS.format(
TPL_TABLE_HEADER,
'\n'.join([TPL_TABLE_ROW.format(
k,
v['byarea'], v['byarea'] / area_sum,
v['byllen'] / 1000, v['byllen'] / llen_sum,
v['byllen'] / reduce(lambda s, i: s + i['llen'], all_extents.values(), 0)
) for (k, v) in perf_sorted]),
len(owned_extents), len(all_extents),
reduce(lambda s, i: s + i['area'], owned_extents.values(), 0) /
reduce(lambda s, i: s + i['area'], all_extents.values(), 0),
reduce(lambda s, i: s + i['llen'], owned_extents.values(), 0) /
reduce(lambda s, i: s + i['llen'], all_extents.values(), 0)
))
os.system(GIT_COMMIT)
os.system(GIT_PUSH)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment