Skip to content

Instantly share code, notes, and snippets.

@jachym
Created September 16, 2017 23:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jachym/ff8dfb76eaefde14b9c595ce91e12639 to your computer and use it in GitHub Desktop.
Save jachym/ff8dfb76eaefde14b9c595ce91e12639 to your computer and use it in GitHub Desktop.
Skript pro převod měření síly mobilního signálu na železnici z CSV do GeoJSON
#!/usr/bin/env python3
import csv
import os
import json
def getdata(value):
if value == 'x':
return None
else:
return float(value.replace(",", "."))
def get_features(filename):
with open(filename, newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=';')
skipfirst = True
for row in spamreader:
if skipfirst:
skipfirst = False
continue
(time, lat, lon, tmobile_lte_rsrp, tmobile_lte_sinr, o2_lte_rsrp,
o2_lte_sinr, vodafone_lte_rsrp, vodafone_lte_sinr,
tmobile_gsm, o2_gsm, vodafone_gsm,
tmobile_utms_rscp, tmobile_utms_ecio, o2_utms_rscp, o2_utms_ecio, vodafone_utms_rscp, vodafone_utms_ecio) = row
if not (time and lat and lon):
continue
(time, lat, lon, tmobile_lte_rsrp, tmobile_lte_sinr, o2_lte_rsrp,
o2_lte_sinr, vodafone_lte_rsrp, vodafone_lte_sinr,
tmobile_gsm, o2_gsm, vodafone_gsm) =\
(time, getdata(lat),
getdata(lon),
getdata(tmobile_lte_rsrp),
getdata(tmobile_lte_sinr),
getdata(o2_lte_rsrp),
getdata(o2_lte_sinr),
getdata(vodafone_lte_rsrp),
getdata(vodafone_lte_sinr),
getdata(tmobile_gsm),
getdata(o2_gsm),
getdata(vodafone_gsm))
yield {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": (lon, lat)
},
"properties": {
"time": time,
"lat": lat,
"lon": lon,
"tmobile_lte_rsrp": tmobile_lte_rsrp,
"tmobile_lte_sinr": tmobile_lte_sinr,
"o2_lte_rsrp": o2_lte_rsrp,
"o2_lte_sinr": o2_lte_sinr,
"vodafone_lte_rsrp": vodafone_lte_rsrp,
"vodafone_lte_sinr": vodafone_lte_sinr,
"tmobile_gsm": tmobile_gsm,
"o2_gsm": tmobile_gsm,
"vodafone_gsm": vodafone_gsm
}
}
def main():
filenames = [csv for csv in os.listdir("./") if csv.find(".csv") > 0]
with open("pokryti.json", "w") as pokryti:
outobj = {
"type": "FeatureCollection",
"features":[]
}
for filename in filenames:
for feature in get_features(filename):
outobj["features"].append(feature)
pokryti.write(json.dumps(outobj, indent=2))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment