import bpy
import json
from shapely.geometry import Point
from pyproj import Proj, transform

routes_file = "/your data path/data/public-transportation/zurich/geo/geojson/routes.json"
stops_file = "/your data path/data/public-transportation/zurich/geo/geojson/stops.json"

r = open(routes_file)
s = open(stops_file)
jr = json.load(r)
js = json.load(s)

routes = jr.get("features")
stops = js.get("features")

stopNames = {}
bID = 0         # Bucheggplatz ID
bP = Point()    # Bucheggplatz Coordinates

pWorld = Proj(init='epsg:4326') # WGS84  = "World Coordinate System Lat/Lon"
pCH = Proj(init='epsg:21781')   # CH1903

for s in stops:
    name = s.get("properties").get("stopName")
    if "Buchegg" in name:
        bID = s.get("properties").get("stopNumber")
        bCO = s.get("geometry").get("coordinates")
        bCO = transform(pWorld, pCH, bCO[0], bCO[1], 0) 
        break
        
bLines = []     # Bucheggplatz Lines
for r in routes:
    fr = r.get("properties").get("FromStopID")
    to = r.get("properties").get("ToStopID")
    if bID in [fr,to]:
        bLines.append(r)

for line in bLines:
    verts = []
    edges = []
    
    coords= line.get("geometry").get("coordinates")
    name  = line.get("properties").get("LineEFA")
    for co in coords:
        c = transform(pWorld, pCH, co[0],co[1],0)
        verts.append((c[0]-bCO[0], c[1]-bCO[1],0))
    for i in range(1,len(verts)):
        edges.append((i-1, i))
    print(verts)
    m = bpy.data.meshes.new(name)
    m.from_pydata(verts,edges,[])
    o = bpy.data.objects.new(name,m)
    bpy.context.scene.objects.link(o)