Kg[ddlmZddlmcmZddlZddlmZm Z ddl m Z m Z ddl mZddlZdZGddZd Zd Zd Zd Zy) ) BeautifulSoupN)soup_to_segmentSegment)soup_to_station_on_lineStation_on_line)get_pagec |d}|d}|d}|d}d}tj|}tj|}tj|} tj|} d|ztjtjtj || z dz dztj |tj | ztj | |z dz dzzzz} | S)Nrgn#@)mathradiansasinsqrtsincos) c1c2latd1longd1latd2longd2Rlat1long1lat2long2ds ?/home/thomas/Documents/TrainMap/data_retrieval/retrieve_line.pydistance_coordsr s UE UF qEE UFA << D LL E << D LL E !DIIdii$t)Q 7 :488D>$((SW.;XY]YaYachincnpqbqYrtuYu;u uv wwA Ic.eZdZdZdZedZdZy)Linec.||_||_||_y)N)numbersegmentsstations_on_line)selfr$r%r&s r__init__z Line.__init__s   0r ctjd|jd}|j}|d}|d}g}|D]A}|j t |j dt |j dfC|S)Nz ../data/gpx/z.gpxr latlon)ETparser$getrootappendfloatattrib)r'gpx_tree gpx_element trk_elementtrkseg_elementcoords trkpt_elements rverticesz Line.verticess88l4;;-t<=&&( !!n $Q+M MM5!5!5e!<=eMDXDXY^D_>`a b,r ct|jd}|d}g}|D]&}|jtj|(|d}g}|D]&}|jt j|(||||S)Nr$rr )intr1r/rfromXMLr) cls line_elementr$segments_elementr%segment_elementstations_on_line_elementr&station_on_line_elements rr;z Line.fromXML's\((23'?/O OOGOOO< = 0#/? '? #  # #O$;$;segmentr@station_on_lines rrGz Line.toXML3szz&) &)$++&6 H%::j1}}G  # #GMMO 4%,-#%::.@#A #44O $ + +O,A,A,C D 545r N)__name__ __module__ __qualname__r(r8 classmethodr;rGr rr"r"s%1 6 6 r r"c d|S)Nz.https://www.stationsweb.nl/lijnlijst.asp?lijn=rN)r$s rstationsweb_urlrPBs ;F8 DEr cjg}|jdD]}|jt||S)Ntr)findAllr/r)segments_tabler% segment_soups rtable_to_segmentsrVEs3H&..t4  565 r cg}d}|jdD]*}|rd}t|}|dk7r|j|d},|S)NFrRT)rSrr/)stations_on_line_tabler&evenstation_on_line_souprIs rtable_to_stations_on_liner[Ks_ D 6 > >t D D 12FG D  # #O 4!E r c 2tt|}t|jd}|j d} |d}|d}t}t|}t|||}|S#t dt|dt |d|YTxYw)Nz html.parsertablez The following url had an issue: z!, and the table array has length z and has the following contents ) rrPrtextrSprintlenrVr[r") r$stationsweb_pagestationsweb_souptablesrTrXr%r&lines r retrieve_linerg]s 78$%5%:%:MJ  % %g .Fb$AY 0H01GH x 0 1D Lb 01H0IIjknoukvjwxXY_X`a bs A,,(B)bs4rxml.etree.cElementTreeetree cElementTreer,requestsrHrrrIrr stationswebrtimerr"rPrVr[rgrNr rrosB##,D  ''RF $r