Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVG-Rad Dumps: Datensätz besser verarbeitbar machen #13

Open
1 of 3 tasks
saerdnaer opened this issue Jun 1, 2017 · 4 comments
Open
1 of 3 tasks

MVG-Rad Dumps: Datensätz besser verarbeitbar machen #13

saerdnaer opened this issue Jun 1, 2017 · 4 comments

Comments

@saerdnaer
Copy link
Member

saerdnaer commented Jun 1, 2017

Projekte wie https://github.com/codeformunich/bikewatch beim TUM Hackaton (November 2016) oder verschiedene Projekte beim Open Data Day (Februar 2017) haben gezeigt, dass die Rad Daten 'aktuell' etwas schwer verarbeitbar sind als es eigentlich sein müsste, vgl. https://transit.robbi5.com/nextbike-mvgrad/

Allerdings wurde dieser Endpoint inzwischen eingestellt, Dumps des neuen Endpoints liegen unter https://transit.robbi5.com/mvg-networkstate-mvgrad/ – Zitat von dort:

this is the followup service of nextbike-mvgrad, which they disabled on 2017-03-13.

Die Daten dieses neuen Endpoints sind schon wesentlich sinnvoller als bisher. Es werden nicht mehr nur die Stationen sondern wirklich die einzelnen Fahrräder abgebildet.

{
"networkStateVersions": {
"MVG_RAD": 927839
},
"fullDataSet": {
"MVG_RAD": true
},
"onlyNearbyData": false,
"failingProviderIds": [],
"addedBikes": […],
"changedBikes": [],
"deletedBikes": [],
"addedCars": [],
"changedCars": [],
"deletedCars": [],
"addedStations": […],
"changedStations": [],
"deletedStations": []
}

bei addedBikes gibt es die folgenden Typen:

{
"id": "96108",
"created": null,
"updated": 1496271618000,
"bikeNumber": 96108,
"latitude": 48.14269256591797,
"longitude": 11.51925277709961,
"currentStationID": null,
"bikeState": "FREE",
"bikeType": "STANDARD",
"positionType": "IN_OPERATING_AREA",
"localized": true,
"district": "Neuhausen-Nymphenburg"
},
{
"id": "96112",
"created": 1496271613000,
"updated": 1496271613000,
"bikeNumber": 96112,
"latitude": 48.103309631347656,
"longitude": 11.59736442565918,
"currentStationID": "a79b2e38492a28d373e9d75396372bc0",
"bikeState": "FREE",
"bikeType": "STANDARD",
"positionType": "STATION",
"localized": true,
"district": "Obergiesing-Fasangarten"
},

TODOs

  • Diff-Funktionalität der neuen API ausprobieren und Dumps der Diffs erstellen
  • Diff-Dumps verarbeiten und Historie pro Fahrrad in eine Datei schreiben?
  • Diff-Dumps verarbeiten um einzelne Fahrten daraus zu generieren
    • deletedBikes geindexed in $store webschreiben
    • Wenn ein createdBike auftaucht schauen ob das in $store ist und in neue Datei schreiben
@saerdnaer
Copy link
Member Author

saerdnaer commented Jun 1, 2017

Skript zum Diff Download vom neuen (März 2017) API Endpoint:

#!/bin/sh
STAMP=$(date +%FT%T%z)
lastversion="1"
if [ -e last_version ]; then
  lastversion=$(cat last_version)
fi

wget -nv -O "temp.xml" --user-agent="" "https://multimobil-core.mvg.de/service/v5/networkState/networkState?MVG_RAD=$lastversion"

newversion=$(jq ."networkStateVersions"."MVG_RAD" temp.xml)

if [ $newversion -ne $lastversion ]; then
  mv temp.xml "$STAMP-diff-$lastversion-$newversion.json"
  echo $newversion > last_version
  echo "$STAMP downloaded diff between $lastversion and $newversion"
else
  echo "$STAMP no new versions available"
fi

@saerdnaer
Copy link
Member Author

saerdnaer commented Jun 1, 2017

Es stellt sich heraus das die Dateien unter https://transit.robbi5.com/mvg-networkstate-mvgrad/ (full dump, alle 5 Minuten) und https://transit.robbi5.com/mvg-networkstate-mvgrad-diff/ (diff dumps zur vorherigen Datei, alle 5 Minuten – erstellt mit dem Skript aus dem vorherigen Kommentar) jeweils ca. 350kb gross. Die Analyse durch Dennis ergab des es sich dabei hautsächlich um Rauschen bei den Koordinaten ohne Zustandsänderung und dadurch auch sich ändernden Timestamps.

@saerdnaer
Copy link
Member Author

saerdnaer commented Jun 11, 2017

Nachtrag:

Die Analyse […] ergab des es sich dabei hautsächlich um Rauschen bei den Koordinaten ohne Zustandsänderung und dadurch auch sich ändernden Timestamps.

Hab mir das grade vorhin nochmal an einem Beispiel angeschaut – es ändert sich da teilweise auch nur der updated timestamp und nicht mal die Koordinaten:

grep -oh -E '{"id":"96808.+?}' *.json | jq -scr '.[] | [.updated, .latitude, .longitude]'
[1497206668000, 48.14973068237305, 11.578146934509277]
[1497209968000, 48.14973068237305, 11.578146934509277]
[1497210268000, 48.14973068237305, 11.578146934509277]
[1497210569000, 48.14973068237305, 11.578146934509277]
[1497212367000, 48.14973068237305, 11.578146934509277]
[1497213567000, 48.14973068237305, 11.578146934509277]
[1497214467000, 48.14973068237305, 11.578146934509277]
[1497215070000, 48.14973068237305, 11.578146934509277]
[1497215667000, 48.14973068237305, 11.578146934509277]
[1497215970000, 48.14973068237305, 11.578146934509277]
[1497206668000, 48.14973068237305, 11.578146934509277]
[1497209968000, 48.14973068237305, 11.578146934509277]
[1497210268000, 48.14973068237305, 11.578146934509277]
[1497210569000, 48.14973068237305, 11.578146934509277]
[1497212367000, 48.14973068237305, 11.578146934509277]
[1497213567000, 48.14973068237305, 11.578146934509277]
[1497214467000, 48.14973068237305, 11.578146934509277]
[1497215070000, 48.14973068237305, 11.578146934509277]
[1497215667000, 48.14973068237305, 11.578146934509277]
[1497215970000, 48.14973068237305, 11.578146934509277]

@deknos
Copy link

deknos commented Jun 23, 2017

ich hab das laden mal in ein python gepackt: https://gist.github.com/deknos/e4563da7ef22004539ed10736fa6233a

ich glaub, man kommt nicht drum rum, die räder selbst zu verzeichnen und dann nur eintragsänderungen zu verzeichnen, die kein rauschen sind.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants