Idę. Będę tutaj robić szum i dokumentować research co do rozwiązań technicznych. Bo nie będzie czasu w te 24h.
Linki:
Idę. Będę tutaj robić szum i dokumentować research co do rozwiązań technicznych. Bo nie będzie czasu w te 24h.
Linki:
Dobrałem się do otwartych danych z Mevo.
Odpaliłem na swoim mikrusie skrypcik w cronie. Co 10 minut każdej godziny. 137Kb per odpowiedź. Policzyłem dla pewności ile mi to zajmie i wychodzi śmieszne 77 mega. Nie zapcham moich 5 giga na serwerze.
curl -H "Client-Identifier: not7cd-net" https://gbfs.urbansharing.com/rowermevo.pl/free_bike_status.json > data/free_bike_status_$(date '+%Y-%m-%d_%H-%M-%S').json
Znalazłem też dane dla AIS o pozycjach statków w czasie rzeczywistym.
No i skrypcik do ich zrzucania. Tutaj jest websocket, więc musi działać cały czas.
import asyncio
import websockets
import json
from datetime import datetime, timezone
async def connect_ais_stream():
async with websockets.connect("wss://stream.aisstream.io/v0/stream") as websocket:
subscribe_message = {"APIKey": "sekret :)", "BoundingBoxes": [[[54.564363, 18.426644], [54.222180, 19.032136]]], "FiltersShipMMSI": [], "FilterMessageTypes": ["PositionReport"]}
subscribe_message_json = json.dumps(subscribe_message)
await websocket.send(subscribe_message_json)
with open(f"/root/aisdata/{datetime.now()}.jsondump", "a") as file:
async for message_json in websocket:
message = json.loads(message_json)
ais_message = message['Message']['PositionReport']
file.write(json.dumps(message))
print(f"[{datetime.now(timezone.utc)}] ShipId: {ais_message['UserID']} Latitude: {ais_message['Latitude']} Longitude: {ais_message['Longitude']}")
if __name__ == "__main__":
asyncio.run(connect_ais_stream())
42KB na minutę. Spodziewam się 250 MB, nie tak źle jak na 4 dni zasysania.
Kolejny ciekawy zasób. Zostawię go tutaj.
Jeśli chodzi o dane z jeszcze jednego środka transportu. Pociągi PKP. API brak, i dane które są podspodem są przeklęte. Nie mam czasu tego integrować. Trzeba by się wstrzyknąć w JS’a i przechwytywać pozycje już rysowanych pociągów.
Jeszcze jest system tristar, ale ma szczątkowe dane na wybranych szlakach.
https://tristar.gdansk.pl/pages/public/detailed_map.xhtml
Za to znalazłem jakąś paczkę do R, która może zaciągać zagęszczenie na wszystkich ulicach. Ale w rastrze.
Co ty mówisz, z tego TRIPSTARa sporo można wyciągnąć
https://mapa.ztm.gda.pl/gpsPositions?v=2 (to trzeba curlem traktować, w przeglądarce mi się nie ładuje)
Od przedwczoraj naparzam właśnie do tego API i ściągam. Mam już 500 MB danych z Mevo, ZTM, AIS, i ASD-B
Będę korzystać z tego.
To wydaje mi się przydatne do tego wyzwania.
Also this, shadery mogą być przydatne.
update, zrobiłem PoC. TypeScript to może być średni pomysł.
edit: Uhh, jeszcze lepsza libka?
Czego potrzeba po szybkim teście projekcji na planie miasta:
podrzucam cool free online kursik shaderów od 0
Traffic Layer, ta paczka w R nie działa, I ona w zasadzie uruchamia Google chrome i robi screenshota. Tutaj w tym samym stylu, ale w JSfiddle. Nie sądzę, abym miał czas to automatyzować przy pomocy jakiegoś Selenium.
TODO: Parametry fizyczne, projekcje, makiety
Ten post to wiki każdy może go edytować.
TODO
Parametry projektora, rozdzielczość, notatkim
Koordynaty lat/long które obejmują makietę, czy jest skierowane na północ
TODO
Parametry projektora, rozdzielczość, notatkim
Koordynaty lat/long które obejmują plan
Hej tutaj macie jako takie foto mape Śródmieścia https://obliview.brg.gda.pl/
System makiety niestety nie działa z powodów niewiadomych. Odbycie się hackatonu wisi na włosku. Dzielni uczestnicy jednak się nie poddają i walczą dzielnie o przywrócenie makiety IKMu do swej świetności z godzin 9:00-18:00 ponieważ prawdopodobnie wszystkiemu winnemu są skrypty które próbują zaoszczędzić pieniądze podatników Trójmiasta i wyłączają system po zamknięciu makiety. Szkoda że nikt nikogo nie poinformował o jego istnieniu…
shutdown -a
w loopie żeby zwalczyć skrypt wyłączający system po zamknięciu IKM/wystawy makiety.Czy naszym bohaterom się uda? Dowiecie się w kolejnym komentarzu
To be continued
Rozwiązanie było prostsze niż się wydawało. Jeden z komputerów był masterem i wszystkie urządzenia posiadały watchdoga który słuchał jego skryptu. Makieta przywrócona do działania