Giter Site home page Giter Site logo

kvbradanalysis's People

Contributors

weberius avatar

Stargazers

 avatar

Watchers

 avatar  avatar

kvbradanalysis's Issues

Neuer Service PUT

Es soll ein Service implementiert werden, der es erlaubt die Analyse anzustarten. Dafür soll der Service kvbradrouting abgefragt werden und die Ergebnisse in die Tabelle ROUTINGANALYSE eingefügt werden:

/**
* curl -X PUT http://<server>/kvbradanalysis/service/put
*/
@PUT
@Path("/put")
public void putRoutingAnalyse() {
  // do it
}

Umbau der Schnittstelle geojson

Zur Zeit wird der GeoJson über die Schnittstelle

/kvbradanalysis/service/geojson

aufgerufen. Dies soll geändert werden. Analog soll zu anderen Schnittstellen Implementierungen soll das geojson durch Übergabe des Parameter '?geojson' abgerufen. Da der Service zur Zeit nur GeoJson antworten kann wird auch ohne Übergabe des Parameter geojson zurückgeliefert. Als Pfadangabe soll das Schlüsselwort 'tracks' verwendet werden:

/kvbradanalysis/service/tracks?geojson

Farbgebung des GeoJson dynamisch machen

Zur Zeit wird die Farbgebung der LINESTRINGs, die der geoJson - Service liefert, in kvbrad/app.js festgelegt. Dies soll so geändert werden, dass die Schwellwerte durch den kvbradanalysis - Service festgelegt werden.

Verarbeitung des minCount

Zur Zeit wird der minCount, ein Schwellwert, der bestimmt, ab welcher Benutzungshäufigkeit ein Track angezeigt wird, durch das Mittel der abgespeicherten Tracks bestimmt. Dieser soll zusätzlich von aussen gesetzt werden können.

Schnittstelle tracks: Schwellwerte durch Übergabeparameter

Es soll eine Schnittstelle eingerichtet werden, die es ermöglicht, die Schwellwerte durch Übergabeparameter zu definieren. Dies erfolgt durch eine Liste an index-Werten. Ein Indexwert kann zwischen 0 und 1 betragen. Es sollen höchstens 10 Schwellwerte unterstützt werden. Dabei gilt für die Schwellwerte jeweils die Bedingung, dass die Zahl für 'kleiner als' steht: '0.25' => index < 0.25. Bei Übergabe der Schwellwerte werden sie nach Größe sortiert.

Beispiel für die Schwellwerte '0.25,0.5,0.75':

/kvbradanalysis/service/tracks/0.25,0.5,0.75?geojson

Beispiel für die Schwellwerte '0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9':

/kvbradanalysis/service/tracks/0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9?geojson

Erstellen der LINESTRING Layer anpassen

Zur Zeit wird jeder Substring als eigener LINESTRING im geojson ausgeliefert. Dies hat zur Folge, dass sehr viele Objekte gerendert werden müssen, mit der Folge, dass die Darstellung der analysierten Strecken sehr langsam ist.

Es soll geprüft werden, ob und mit welchen Mitteln es möglich ist, eine bessere Performance zu ermöglichen.

Neuer Service geojson

Es soll ein Service geojson implementiert werden, der die Ergebnisse der Analyse in Form eines geoJson zurückgibt. Der REST endpoint lautet auf kvbradanalysis/service/geojson. Um den Linestring in verschiedenen Farben darstellen zu können, besteht die FeatureCollection aus Features mit MultiLineStrings. Die Farbe wird über das propertie color gesetzt. Damit ist es möglich in Leaflet über jeden Layer die entsprechende Farbe zu definieren:

geojson_layer.eachLayer(function (layer) {  
  if(layer.feature.properties.color== 'green') {    
    layer.setStyle({fillColor :'green'}) 
  }
});

Implementierung der Schnittstelle delete

Es soll eine Schnittstelle implementiert werden, die es erlaubt historische Daten zu löschen. Durch einen Übergabeparameter kann die Anzahl der zu löschenden Einträge justiert werden. Für ein kontinuierliche Pflege des Datenbestandes, würde die Schnittstelle periodisch über eine CRON aufgerufen.

/kvbradanalysis/service/delete/{days}

Aufruf der Schnittstelle analog zur Schnittstelle put.

delete method implementieren

Es soll eine REST-Endpoint zum Löschen der bisherigen Einträge in der routing-Tabelle implementiert werden. Dadurch kann der Datenbestand zurückgesetzt werden.

/**
* curl -X DELETE http://<server>/kvbradanalysis/service/delete
*/
@DELETE
@Path("/delete")
public void deleteKvbradAnalysis() {
  // do it
}

Anzahl der Farben verringern

Zur Zeit wird unterstellt, dass insgesamt 5 Farben zur Darstellung verwendet werden. Dies ist nicht unbedingt notwendig. Es reicht aus die Nutzung mit drei Farben darzustellen:

  • #d7191c (rot)
  • #fdae61 (gelb)
  • #a6d96a (grün)

Rot werden alle stark benutzten Strecken gekennzeichnet, gelb alle Strecken, die weniger häufig benutzt werden und grün alle anderen Strecken.

Schreibe Werte in analysisresult

Die Analyse der Daten sieht zwei Schritte vor:

  1. schreibe die Routing Fragmente in die Tabelle analysis
  2. aggregiere die Routing Fragmente in die Tabelle analysisresult

Der erste Schritt kann inkrementell erfolgen. Für den zweiten ist es notwendig zunächst die bisherigen Werte zu löschen und dann die neuen Werte einzufügen. Hierfür muss zwischen 1. und 2. Schritt noch ein Löschschritt für die Tabelle analysisresult hinzugefügt werden.

Performance mit turf.js verbessern

Zur Zeit werden die angezeigten Strecken per GeoJson FeatureCollection (LineString) übertragen. Vermutlich führt dies zu erheblicher Last im Client. Mit Hilfe der JavaScript Bibliothek turf.js; combine kann eine FeatureCollection in ein MultiLineString Feature geändert werden. Dies sollte die Performance verbessern.

Hierfür müssen die unterschiedlichen Farben von unterschiedlichen Endpoints ausgeliefert werden.

  • /kvbradanalysis/service/geojson/d7191c
  • /kvbradanalysis/service/geojson/fdae61
  • /kvbradanalysis/service/geojson/a6d96a

Dabei steht die kryptische Zeichenkette am Ende für den Farbwert, der angezeigt werden soll.

Schnittstelle `/data/{bike}` implementieren

Die Schnittstelle /data/{bike} liefert alle Informationen zu einem Fahrrad zurück. Das Format ist json. Es ist damit die Grundlage, um GeoJson mit MultilineStrings zurückzuliefern

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.