[Talk-dk] Værktøj til at sætte direction på nodes
Peter Brodersen
peter at ter.dk
Tir Mar 30 09:58:05 UTC 2021
Hej,
tl;dr: Jeg vil lave et web-værktøj, som gør det let at sætte direction
på nodes. Findes det i forvejen? Hvis ikke, er der nogen med fx
leaflet-erfaring, der kan hjælpe mig i den rigtige retning?
Lidt længere:
Jeg har mappet en del bænke på det seneste, og jeg har også fået lyst
til at sætte direction på dem - altså hvilken vej, de peger. Jeg har
gjort det manuelt for en håndfuld af dem, men jeg tænkte på at lave et
web-værktøj, som gjorde det lettere at lægge informationen ind. Her
har jeg brug for lidt teknisk sparring, før jeg går i gang.
Først og fremmest er jeg interesseret i at vide, om der findes et godt
værktøj i forvejen. I så fald slipper jeg for at gøre noget :-)
Min tanke er at lave en web-app, hvor man kigger på et område på et
kort. Her bliver der hentet en bbox med nodes. Vælger man en node, vil
man kunne angive en retning, enten ved at klikke på en kompasretning
eller slet og ret at klikke i den retning på kortet, som noden peger
mod.
Et ekstra trick kan være at komme med gode forslag til
standard-værdier. Bænke plejer at pege vinkelret på nærmeste vej, så
det kan den lige så godt foreslå fra starten af, i stedet for at
brugeren selv skal finde kompasretningen eller klikke løs.
Implementeringen bør selvfølgelig have en let oauth-login, så man kan
gemme sine opdateringer uden videre med sin egen bruger. Jeg har ikke
lagt mig fast på server-sproget her, men PHP er nok det letteste og
mest udbredte.
Jeg leger lidt med leaflet, men jeg har ikke låst mig fast på dette.
Samtidig tænker jeg, at der må være et plugin til at vise OSM-data,
som man efterfølgende kan tilgå. I første omgang bruger jeg
leaflet-osm som plugin for at vise indhold fra en .osm-xml-fil, fx ved
en bbox-export fra OSM's API:
https://github.com/openstreetmap/leaflet-osm
Jeg kan fint smide indhold ind med fx:
var layer = new L.OSM.DataLayer(xml).addTo(map);
Men dokumentationen er mangelfuld, og jeg er ikke sikker på, hvordan
OSM-features kan tilgås bagefter.
Jeg har heller ikke den store erfaring med leaflets
GIS-/geometri-features, så her kan jeg også godt bruge nogle hints: I
første omgang havde jeg overvejet blot at bruge en lokal OSM-database
med PostGIS og så bruge ST_ClosestPoint() for at finde nærmeste
koordinat på en vej i forhold til noden og så derefter bruge
ST_Azimuth() fra bænk-koordinaten til koordinaten på vejen for at få
en retning. Men hvis værktøjet skal kunne bruges over hele verden, så
bør det bruge simple bbox-opslag og lave beregningen i klienten i
stedet for at kræve en backend med en kopi af al OSM-data, udelukkende
for at beregne en kompasretning. Så er der tilsvarende funktioner i
leaflet?
Mine spørgsmål er altså:
1. Findes der i forvejen et værktøj til dette formål?
2. Hvad er den simpleste måde at tilgå OSM-data og få dem tilgængelige
for browseren, så jeg kan bygge lidt kode ovenpå? Bør jeg blot studere
leaflet-osm mere grundigt?
3. Hvilke geometri-funktioner bør jeg benytte mig af i fx leaflet?
Det kan måske virke uproportionalt at bruge en del timer på lave et
værktøj, som blot kan spare nogle sekunder for hver tilføjet retning,
men om ikke andet er det en fin øvelse, og jo flere værktøjer, der kan
hjælpe med at lægge indhold ind, jo bedre.
- Peter Brodersen
Mere information om maillisten Talk-dk.