Rozkłady jazdy w postaci plików CSV
Rozkłady jazdy w postaci plików CSV
Nie wiem, czy w dobrym miejscu piszę ten post, ale jak wspominałem w jednym poście, posiadam przeze mnie stworzone narzędzie do pobierania rozkładów jazdy autobusów/tramwajów z KZK GOP.
Jako, że zauważyłem, że robicie rozkłady z obsadami w plikach Excela, to w ramach pomocy udostępniam Wam folder z rozkładami w formacie CSV, który łatwo się importuje do Excela.
https://www.dropbox.com/sh/k9lf2s03diip ... AkMsmf3Taa
Postaram się w ramach możliwości jak najczęściej aktualizować.
Ostatnia aktualizacja: 9.12.2014 (Wszystkiego, co było)
Jeśli macie jakieś pytania, dajcie znać, bo nie weryfikuję poprawności wgrania się rozkładów (nie licząc jakiś bardzo rażących błędów)
Jako, że zauważyłem, że robicie rozkłady z obsadami w plikach Excela, to w ramach pomocy udostępniam Wam folder z rozkładami w formacie CSV, który łatwo się importuje do Excela.
https://www.dropbox.com/sh/k9lf2s03diip ... AkMsmf3Taa
Postaram się w ramach możliwości jak najczęściej aktualizować.
Ostatnia aktualizacja: 9.12.2014 (Wszystkiego, co było)
Jeśli macie jakieś pytania, dajcie znać, bo nie weryfikuję poprawności wgrania się rozkładów (nie licząc jakiś bardzo rażących błędów)
Ostatnio zmieniony 09 gru 2014, 17:48 przez polaque, łącznie zmieniany 15 razy.
Re: Rozkłady jazdy w postaci plików CSV
Nie potrzebujemy rozkładów docelowo w XSL. Dane rozkładu trzymamy niekiedy po to, aby móc zachować wiele arkuszy w jednym pliku. Na potrzeby skryptu plik XLS jest zapisany do CSV automatycznie. Dzięki za pomocpolaque pisze:Jako że zauważyłem, że robicie rozkłady z obsadami w plikach Excela, to w ramach pomocy udostępniam Wam folder z rozkładami w formacie CSV, który łatwo się importuje do Excela.
Na dniach odezwę się do Ciebie ws. bazy danych.
Ale tak swoją drogą, dałem w CSV, by łatwo można było wyciągać dane, bo dla mnie wygenerowanie tych kilkudziesięciu CSV to kilka sekund.
A z bazą to nie ma sprawy.
Poza tym, dzięki pliku csv zauważyłem dziwactwo na stronie kzk gop z T16 i przystankiem Św. Jana, który jest dwa razy na kierunku i zawiera rozkłady pokrywające się w sporym stopniu.
A z bazą to nie ma sprawy.
Poza tym, dzięki pliku csv zauważyłem dziwactwo na stronie kzk gop z T16 i przystankiem Św. Jana, który jest dwa razy na kierunku i zawiera rozkłady pokrywające się w sporym stopniu.
-
- Posty: 594
- Rejestracja: 16 mar 2013, 14:38
- Lokalizacja: Katowice
Ale to nie działa tak. Najpierw musisz sobie zrobić narzędzie, które Ci przetworzy i zapisze rozkład w bazie, by móc robić jakieś zapytania.musicus pisze:OK, stworzyłem sobie pustą bazę MySQL, ale jakie mam teraz wpisać zapytanie?polaque pisze:No, jak masz pobraną i przygotowaną bazę, np. SQLite czy MySQL, to wystarczy odpowiednie zapytanie i zapisanie do CSV.
Mam informacje (wpisuje tu by nie robić nowego postu)
Zrobiłem od nowa skrypt do pobierania od bazy rozkładów tramwajowych
Z racji tego że nie zawsze będę mógł aktualizować a może się to komuś przyda udostępniam skrypcik w Pythonie do tworzenia i pobierania danych z kzkgopu:
https://gist.github.com/sylwke3100/1daa5d17253ddd378588
Cały proces zajmuje ok 30 - 40 (przynajmniej u mnie) i generuje bazę danych w formacie db
Dla obecnej ilości tramwajów (ok 30) baza ma ok 9,5 MB
Jak macie jakieś pytania to zapraszam do zadawania.
Zrobiłem od nowa skrypt do pobierania od bazy rozkładów tramwajowych
Z racji tego że nie zawsze będę mógł aktualizować a może się to komuś przyda udostępniam skrypcik w Pythonie do tworzenia i pobierania danych z kzkgopu:
https://gist.github.com/sylwke3100/1daa5d17253ddd378588
Cały proces zajmuje ok 30 - 40 (przynajmniej u mnie) i generuje bazę danych w formacie db
Dla obecnej ilości tramwajów (ok 30) baza ma ok 9,5 MB
Jak macie jakieś pytania to zapraszam do zadawania.
Czuję tu sporo ironii.Penny pisze:Pokłon po pas za prostą konstrukcję bazy, a przede wszystkim za naprawdę optymalne i rzeczowe parsowanie frontendu. Przyglądnę się temu i na pewno zapytam.
Baza zawiera wszystko, co powinno być (miasta, przystanki, numery tramwajów, rozkład, typ rozkładu[np. Robocze])
Optymalne to napewno nie jest, ale aż takim specem nie jestem od Pythona, więc zrobiłem wszystko po najmniejszej dla mnie linii oporu.
Tak jeszcze, jakby były jakieś problemy, to zaktualizowałem plik bazy pod tym linkiem, opisując wartość w tabelach (w tym samym linku, co wyżej)
Dla przykładu taki zapytanie w SQLu
Daję listę poukładaną dla tramwaju, jeden z trasami, jakimi się porusza, czyli
Dla przykładu taki zapytanie w SQLu
Kod: Zaznacz cały
SELECT timetable.routeDirection, cities.name, stops.name
FROM timetable
LEFT JOIN stops
ON stops.id = timetable.stopId
LEFT JOIN cities
ON stops.cityId = cities.id
WHERE timetable.busId = 1
GROUP BY timetable.routeDirection,timetable.countTable, timetable.stopId
ORDER BY timetable.routeDirection, timetable.routeId, timetable.countTable
Kod: Zaznacz cały
0 Gliwice Gliwice Zajezdnia
0 Zabrze Maciejów Knurowska
0 Zabrze Maciejów Kondratowicza
0 Zabrze Zabrze Słowackiego
0 Zabrze Zabrze Plac Słowiański
0 Zabrze Zabrze Damrota
0 Zabrze Zabrze de Gaullea
0 Zabrze Zabrze Karola Miarki
0 Zabrze Zabrze Plac Wolności
0 Zabrze Zabrze Św. Floriana
0 Zabrze Zabrze Sienkiewicza
0 Zabrze Zaborze Skansen Luiza
0 Zabrze Zaborze Elektrociepłownia
0 Zabrze Zaborze Skargi
0 Zabrze Zaborze Lompy
0 Zabrze Zaborze Pętla
0 Zabrze Poremba Bielszowicka
0 Ruda Śląska Ruda Klary
0 Ruda Śląska Ruda Południowa
0 Ruda Śląska Ruda Urząd Skarbowy
0 Ruda Śląska Chebzie Styczyńskiego
0 Ruda Śląska Chebzie Dworcowa
0 Ruda Śląska Chebzie Pętla
1 Ruda Śląska Chebzie Pętla
1 Ruda Śląska Chebzie Dworcowa
1 Ruda Śląska Chebzie Styczyńskiego
1 Ruda Śląska Ruda Urząd Skarbowy
1 Ruda Śląska Ruda Południowa
1 Ruda Śląska Ruda Klary
1 Zabrze Poremba Bielszowicka
1 Zabrze Zaborze Lompy
1 Zabrze Zaborze Lompy
1 Zabrze Zaborze Skargi
1 Zabrze Zaborze Elektrociepłownia
1 Zabrze Zaborze Skansen Luiza
1 Zabrze Zabrze Sienkiewicza
1 Zabrze Zabrze Św. Floriana
1 Zabrze Zabrze Plac Wolności
1 Zabrze Zabrze Karola Miarki
1 Zabrze Zabrze de Gaullea
1 Zabrze Zabrze Damrota
1 Zabrze Zabrze Plac Słowiański
1 Zabrze Zabrze Słowackiego
1 Zabrze Maciejów Kondratowicza
1 Zabrze Maciejów Knurowska
1 Gliwice Gliwice Zajezdnia
1 Zabrze Zaborze Pętla
1 Zabrze Zaborze Lompy
1 Zabrze Zaborze Skargi
1 Zabrze Zaborze Elektrociepłownia
1 Zabrze Zaborze Skansen Luiza
1 Zabrze Zabrze Sienkiewicza
1 Zabrze Zabrze Św. Floriana
1 Zabrze Zabrze Plac Wolności
1 Zabrze Zabrze Karola Miarki
1 Zabrze Zabrze de Gaullea
1 Zabrze Zabrze Damrota
1 Zabrze Zabrze Plac Słowiański
1 Zabrze Zabrze Słowackiego
1 Zabrze Maciejów Kondratowicza
1 Zabrze Maciejów Knurowska
SQL ogarniam bardzo dobrze. Gorzej z algorytmami i pisaniem w pythonie. Najlepszego w Nowym Roku. Dzięki za wkład pracy. Podziwiam ja dlatego, że zająłeś się parsowaniem widoków, bo przecież do API dostępu nie mamy.
Ostatnio zmieniony 01 sty 1970, 01:00 przez Penny, łącznie zmieniany 1 raz.
Zrobiłem małą aktualizację bazy oraz skryptu, dzięki czemu wg obliczeń, zapytania wykonują się co najmniej 2 razy szybciej i jest nowa tabela, która bardzo ułatwia szukanie rozkładów, bo przechowuje kursy wraz z informacją o kierunku, tramwaju oraz typie rozkładu, dzięki czemu ilość danych się zmniejszyła oraz łatwiej dla konkretnego tramwaju wyciągnąć kursy, nie latając niepotrzebnie po ogromniej tabeli z rozkładami.
Baza oraz skrypt dostępne wyżej w linku tym samym.
Nawet baza wyjściowa ma na obecną chwilę ok. 8 MB (stara miała ok. 9,5 MB)
I dodaję tu nowe zapytanie, które robi to, co wyżej:
Baza oraz skrypt dostępne wyżej w linku tym samym.
Nawet baza wyjściowa ma na obecną chwilę ok. 8 MB (stara miała ok. 9,5 MB)
I dodaję tu nowe zapytanie, które robi to, co wyżej:
Kod: Zaznacz cały
SELECT timetableRoutes.routeDirection, cities.name, stops.name
FROM timetable
LEFT JOIN timetableRoutes
ON timetableRoutes.routeId = timetable.routeId
LEFT JOIN stops
ON stops.id = timetable.stopId
LEFT JOIN cities
ON stops.cityId = cities.id
WHERE timetableRoutes.busId = 1
GROUP BY timetableRoutes.routeDirection,timetable.countTable, timetable.stopId
ORDER BY timetableRoutes.routeDirection, timetable.routeId, timetable.countTable
Dodałem aktualizację, dzięki której skrypt teraz oznacza kursy niskopodłogowe (i nie).
Dalej pod tym samym linkiem:
https://gist.github.com/sylwke3100/1daa5d17253ddd378588
Dalej pod tym samym linkiem:
https://gist.github.com/sylwke3100/1daa5d17253ddd378588
Chciałem uruchomić ten skrypt i zainstalowałem brakujące moduły, ale wyskakuje coś takiego:
i nie wiem, co jest u mnie nie tak, skoro wam działa
Kod: Zaznacz cały
Traceback (most recent call last):
File "C:\Python27\Parser.py", line 1, in <module>
from gevent import monkey
File "C:\Python27\lib\site-packages\gevent\__init__.py", line 42, in <module>
from gevent.hub import get_hub
File "C:\Python27\lib\site-packages\gevent\hub.py", line 47, in <module>
from greenlet import greenlet
ImportError: DLL load failed: %1 nie jest prawidłową aplikacją systemu Win32.
A nie pobrałeś biblioteki dla 64 bitowej wersji systemu? Bo jak Pythona masz 32 bitowego to biblioteki dla niego też takie muszą być.musicus pisze:Chciałem uruchomić ten skrypt i zainstalowałem brakujące moduły, ale wyskakuje coś takiego:i nie wiem, co jest u mnie nie tak, skoro wam działaKod: Zaznacz cały
Traceback (most recent call last): File "C:\Python27\Parser.py", line 1, in <module> from gevent import monkey File "C:\Python27\lib\site-packages\gevent\__init__.py", line 42, in <module> from gevent.hub import get_hub File "C:\Python27\lib\site-packages\gevent\hub.py", line 47, in <module> from greenlet import greenlet ImportError: DLL load failed: %1 nie jest prawidłową aplikacją systemu Win32.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości