Giter Site home page Giter Site logo

kulturpfadservice's Introduction

kulturpfadservice

Idee

Der KulturpfadeService bietet die Möglichkeit, aus einer Liste an Orten eine Fussgänger-Route zwischen diesen Orten zu erstellen.

Hierfür wird ein Dokument mit Orten übergeben. Anhand der Adressen werden die notwendigen x/y-Koordinaten erstellt. Mit Hilfe der Routing-Software Graphhopper wird hieraus eine Route erstellt, die in Form von geojson-Objekten zur Verfügung gestellt werden. Die Orte enhalten eine eindeutige ID, die es ermöglicht, weitergehende Informationen mit dem Ort zu verknüpfen.

Die Software ist als Service gedacht, die es erlaubt, die notwendigen Daten für die Bereitstellung einer Oberfläche ohne Backend zu generieren.

Der Service soll eine einfache Weboberfläche enthalten, um das Ergebnis einfach kontrollieren zu können.

Download, build, start

Voraussetzung für die Ausführung des Services ist die Installation von git, Java 17 und Maven 3. Der Service kann dann mit folgenden Befehlen auf der Kommandozeile heruntergeladen, gebaut und ausgeführt werden:

  1. git clone https://github.com/weberius/kulturpfadservice.git
  2. mvn clean install
  3. mvn spring-boot:run

Der Prozess mvn clean install kann je nach Internetverbindung mehr als 5 Minuten dauern. Vor den Tests wird der aktuelle Abzug der OSM-Daten für den Regierungsbezirk Köln heruntergeladen. Mit Starten der Applikation (mvn spring-boot:run) steht auf localhost:8080 ein einfacher Service mit unterschiedlichen Schnittstellen zur Verfügung:

  • http://localhost:8080/service/poi/<id>
  • http://localhost:8080/service/route/<id>
  • http://localhost:8080/service/gpx/<id>
  • http://localhost:8080/service/data/<id>

Unter http://localhost:8080/index.html?id=<id> kann eine Weboberfläche aufgerufen werden, die bei der Erstellung der Routen und Pois unterstützt. Der Wert für id bezeichnet einen Kulturpfad. Z.B. http://localhost:8080/index.html?id=b03-t06 öffnet die Route für den Kulturpfad 06 "Braunsfeld/ Lindenthal".

Dokumentation

Die Dokumentation des Service wird unter src/main/asciidoc fortgeführt. Die Dokumentation wird im Rahmen der prepare-package Phase in html überführt und steht unter weberius.github.io/kulturpfadservice/main.html zur Verfügung.

kulturpfadservice's People

Contributors

weberius avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

kulturpfadservice's Issues

merge data

Alle Daten zur Erstellung von Pfaden sollen in einer Anwendung zur Verfügung stehen. Um unterschiedliche Gemeinden, ggf unterschiedliche Bezirke und verschiedene Touren unterscheiden zu können, werden zusätzliche attribute hinzugefügt.

Bsp.:

  • 05170024-t01: Tour 01 in Moers (Gemeindekennziffer 05170024)
  • 05315000-b03-t01: Tour 01 im Bezirk 03 in Köln (Gemeindekennziffer 05315000)

Räumlich bezogene Tests entfernen

Einige automatische Tests beziehen sich auf einen konkreten Raum, z.B. Regierungsbezirk Köln. Diese Test sollen so verallgemeinert werden, dass sie auch mit anderen Räumen funktionieren. Dadurch ist es möglich, den Service auch über die Grenzen des Regierungsbezirks Köln hinaus zu bauen und damit einzusetzen.

Route: get informations on click

The UI displays the route. By hovering over, the mousepointer changes to handpointer.
On click there should be some Informations provided, like a length and time needed.

I want to know how far it is to the next POI and how long I will need to get there.

Konzept Darstellung Webseite

Die Kulturpfade sollten eine Landingpage haben, die die verfügbaren Kulturpfade präsentieren und weitere Informationen vorhält. Welche Informationen sollten hier vorgehalten werden? Wie sollen die einzelnen Kulturpfade repräsentiert werden? Wie werden die Kartendarstellungen eingebunden?
Weitere Fragen können gestellt werden.

Tool für x/y Koordinaten

Der Oberfläche soll ein Tool zur Verfügung gestellt werden, das es erlaubt per Klick die x/y Koordinaten abzurufen.

different bullets

Die reddot icons der POIs sollen kleiner werden. Außerdem soll das clustering erst bei höherem Zoom einsetzen.

Projekt Kulturpfade

Um eine Weboberfläche für die Kulturpfade zu bekommen, wird das Projekt 'codeforcologen/kulturpfade' verwendet. Hier ermöglichen GitHub-pages die Webseiten erreichbar zu machen. Zwischen den Routen wird per Übergabeparameter gewechselt

Bsp.: id=b03-t06 für die Tour 6 in Lindenthal

Es werden alle zur Verfügung stehenden Daten vorhanden sein. Unterschiedliche Daten werden durch Verzeichnisse abgebildet, die letztlich die Schnittstellenstruktur des https://github.com/weberius/kulturpfadservice repräsentieren:

/service/route/<id>.geojson
/service/poi/<id>.geojson
/service/gpx/<id>.gpx
/service/data/<id>.json
/service/images/<id>.jpg
/service/bench/<id>.geojson
/service/cafe/<id>.geojson
/service/publictransport/<id>.geojson
/service/monument/<id>.geojson
/service/info/<id>.html

Routing: bestimmte POI sollen beim Routing nicht berücksichtigt werden.

Zur Zeit werden Points Of Interest und Stützpunkte verwendet, um das Routing zu ermöglichen. Z.B. auf Plätzen können allerdings mehrere POIs vorhanden sein, die nicht im Routing berücksichtigt werden sollen. Dies spielt vor allem bei mittelalterlichen Städten eine Rollen. Hierdurch kann das Routing vereinfacht werden, es werden aber alle POIs angezeigt.

Folgendes muss geklärt werden:

  • Wie werden POIs, die nicht im Routing berücksichtigt werden, in der Übersicht dargestellt?
  • Muss die Zeit, die durch das Nichtberücksichtigen nicht ausgewiesen wird, anderweitig berücksichtigt werden?
  • Wie sind die entsprechenden POIs im Datensatz gekennzeichnet?

Service für Informationen zu KVB Haltestellen

Ich benötige eine Schnittstelle, die die Daten zu den Haltestellen aus offene Daten, Köln einliest, und sie als geojson formatiert zurück liefert. Die Daten liegen, separiert vor. Außerdem Doppeln sie sich unter bestimmten Bedingungen. Mich interessieren vier Informationseinheiten:

  • Name
  • Id
  • Art
  • Geolocation

Ein Service implementiert die Schnittstelle, um die Daten auszugeben. Er ist ebenso für die Aggregation der Informationen notwendig. Die Aggregation erfolgt auf Ebene der Locations. Der Service liefert zunächst alle Daten zurück. Es gibt aber auch die Möglichkeit auf eine übergebene Boundingbox zu filtern. Dies ermöglicht es mir, für jeden NameSpace eine eingeschränkte Anzahl an Daten zur Verfügung zu stellen.

Die Daten für die Haltestellen werden von offene-daten-koeln gezogen: Haltestelle Stadtbahn und Bus KVB Köln.

Dieser Service ist Grundlage für die Umsetzung von Bus und Bahn Dialog #59 im Projekt kulturpfade

change access via osmdataname

The application needs osm data in pom.xml and in RoutingService.
With pom.xml the desired osm.pbf file will be downloaded. In RoutingService the file will be referenced for using with routing. For RoutingService the name should be in properties.

refactore integrationtests

The integrationTests need an osm-file for testing. It should be automatically downloaded if needed. The download should be skipped if the file already exists.
For that Reason the IntergrationTests should be bounded to the 'integratioin-test' phase, while the unit-tests should be bounded to the 'test' phase.

Zoom to full extend

Mit 'Zoom to full extend' soll die aktuell angezeigte Route mittig so eingezoomt werden, dass sie vollständig erkennbar und in der Mitte angeordnet ist.

POI: Name ermitteln

Zur Zeit wird zur Darstellung des Namens des Point Of Interest die Nummer des Objektes aus der Spalte id nach 12 Stellen gezogen. Diese Berechnung wird in der Klasse PoiService durchgeführt.

Die Berechnung soll so geändert werden, dass nach dem letzten - gesucht wird.

POI: get informations on click

The UI displays route and pois. By hovering over, the mousepointer changes to handpointer.
On click there should be some Informations provided, like a short description and a picture.

change `data` to `id` on ui

At the moment the keyword data is used to identify the route to display (e.g. ?data=b03-t06). This should be changed to id. In every case index.htm should be called too (e.g. index.html?id=b03-t06).

POI: Informationen vervollständigen

Mit dem Ticket #11 wurde die Grundlage gelegt, damit zu jedem POI Informationen angezeigt werden können. Diese Informationen sollen jetzt detailliert werden:

  • Name des POI als Überschrift
  • Bild des POI
  • kurzer Text zum POI
  • Wenn vorhanden: Link zu weiterführenden Informationen; am besten in die Wikipedia

Die Anpassungen werden in app.js in der function configurePopup Zeile 820 ff. vorgenommen.

Die Datei wird per fetch-api eingelesen:

fetch('datei.json')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Fehler:', error));

Alternativ kann Popup-Information auch per html-Fragment eingelesen werden:

fetch('pfad/zum/html-fragment.html')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.text(); // Die Antwort als Text abrufen
  })
  .then(htmlFragment => {
    // Das HTML-Fragment in den DOM einfügen
    document.getElementById('ziel-id').innerHTML = htmlFragment;
  })
  .catch(error => {
    console.error('Beim Abrufen des HTML-Fragments ist ein Fehler aufgetreten:', error);
  });

interface gpx

Aktuell gibt es Schnittstellen, um geoJson - Datenstrukturen an die Weboberfläche auszuliefern. Zusätzlich soll eine Schnittstelle den aktuellen Kulturpfad im GPX Format ausgeben. Hier kann die Software JPX (https://github.com/jenetics/jpx) verwendet werden. Sie kann per maven eingebunden werden: https://mvnrepository.com/artifact/io.jenetics/jpx. Es werden die Daten verwendet, die mit dem Routing ermittelt wurden.

<!-- https://mvnrepository.com/artifact/io.jenetics/jpx -->
<dependency>
    <groupId>io.jenetics</groupId>
    <artifactId>jpx</artifactId>
    <version>3.0.1</version>
    <scope>runtime</scope>
</dependency>

Die Schnittstelle wird über /gpx/<id> angesprochen.

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.