OpenStreetMap

-karlos-'s diary

Recent diary entries

OSM go on - Colours, Models and Shadow (EN)

Posted by -karlos- on 26 November 2016 in English (English)

Work is in progress, features are improved and added. See the OSM Wiki page for more details and read some background infos below.

There is an Twitter-Feed: @OSM__go (two underscores!). You may follow the latest activities, upcoming ideas and related things.

Tile processing

Overpass seemed to be slow but my measurement was wrong because Javascript even delays console.log while callback code is running. A close inspection showed: Overpass is great, my code with a lot of string copy was slow and is now replaced by jQuery.js and getJSON. Much better, much faster but there was still that “wait-cursor”. Again it was me. I had simple linear searches for already existing nodes or ways. I replaced them by arrays with the OSM-ID as index. Odd to debug but fast. Now, the default load radius is set up to 800m and still fast. Or fine, if you are in a dense city. Old hardware devices may have trouble and get slow. Now the download will stop.

Thats was not the end. I move the tile/tag decoding and the 3D object placing (not yet parseJSON) away from the callback into the render cycle, sliced in fast steps. Now, the default load radius is set up to 800m and still fine in a dense city. Old devices may break downloading. And you may even move already during the download. - One more thing: The first load will be more slow than thereafter of curse - because of the just in time compiling.


Overpass gives an array of elements, first all node-types, then all ways etc. “parseJSON" can only convert this to an single array with mixed types. Is this good? Building tags may be placed at ways or relations(multipoligon). Decoding code would be the same. So it may be good to have all types in one array. But OSM does not have ONE set of IDs!

What about an “overparseJSON" ?: It should convert to separate arrays, one for notes, ways, and relations. It shouldn’t be hard to morph the jquery-code. And there could be a callback for each node, way, etc. So I could immediately extend the node- and way-instances to my needs like adding the three-ja-mesh.

Colors

Even if the shape of buildings are fine, paint makes them more realistic. Handling the tags building:colour and roof:colour was easy. Chroma.js does convert the color tag strings and Three.js ExtrudeGeometry also handles different colours for the sides and the ends. So after 10 lines of code and 1-2h test it was done. But soon Murphy's law strikes back: There are quite a view named colours, not known form three (see wiki). Tags like light_brown or yellow-brown may be handled automatically. But what about spelling errors and unknown colours? That may be a task for the validators like Keepright.

Shadow

Jan (OSMBuildings) asked me, how fast Three handles shadows: about 20% more rendering time. When you start now, the place around that point has shadows. To show the effect even more, a big disk flies over you. There are still some shadow options to investigate. In the Code, a virtual camera is placed at the shadow casting light. Mostly the graphic card is doing the hard work. This “camera” analyses the shapes, if they cast shadow and if this shadow is seen by the “real” camera. A greyscale bitmap is generated and placed between before the virtual world. Looks good. Todo: move the virtual with the real camera.

Placing Modells

For quite a view buildings, extruding doesn’t make much sense, especially for famous buildings like churches or monuments like the Eifel Tower. There are 3D-models of many of them. To place them in a virtual 3D OSM world doesn’t help for data visualisation but for an realistic view. And it’s cool anyway, if you move around by mouse or with VR glasses.

What to render: Where to store and get the model files?

  • I like the Idea of https://wiki.openstreetmap.org/wiki/OpenBuildingModels, but its offline :-( I got in contact, may be we will have the files and set up them on a new server and even extend the service to other formats.
  • Meanwhile I did the two models, OSMBuildings uses. (They are not perfect yet)
  • OSM2WORD and other 3D-viewer seems to have a lot. Who do the to that?
  • What about Google Scetchup? I will try to get and dynamically convert all the models. Three.js does have loaders for many file types, that seems to be no limit. But I am sure there is a copyright prohibiting a use.

How to place: My first answer to the following questions was an OSM relation for each model to place with special tags.

  • First the model file. The concept of OpenBuildingModels is great. A reference to an external server with the file. (server-code, model-name/ID and may be file type.
  • The model may be directed correctly already or we need a tag to do it, useful if a model is used more than once.
  • There may be a tag for scale to, and even a hight-offset.
  • Now we need the place. if there is no existing node to reference to, it has to be placed.
  • Usually there is one ore more building-ways in OSM, representing the building in a 2D map. They have to be removed/skipped by the 3D renderer. So wee need a reference list to them. The solution used by OpenBuildingModels is simpler: One Tag with Server and Model. No direction, size and height. And this tag is added to each building to be replaced by the model. I like that.

Other changes

  • The debug output now shows the FPS (add &hud=1 to the url) Disappointing: 40 down to 10 FPS with 3D models displayed. Strange: it doesn't feel slow.
  • Added new URL parameter: “&keep=1 or 0 for show/don’t Keepright error markers. Default is don’t
  • Level & Layer: Underground objects shouldn’t be seen above, bridges should be raised. Now the tags level and layer are used.
Location: Holborn, St Giles, London Borough of Camden, London, Greater London, England, WC1B, United Kingdom

OSM go - 3D Render? (DE)

Posted by -karlos- on 24 October 2016 in German (Deutsch)

Die Verbesserungen an “OSM go” gehen weiter. Ich war schon stolz, das der OSM Wochenbericht es erwähnt hat. Die Handhabung and Bedienfunktionen sind jetzt brauchbar. Es gibt Tasten- und URL-Befehle. Das Rendering kennt jetzt building levels und Geleise. Der erste “Layer” ist enthalten: Keepright. Es ist motivierend, alle Fehler zu beseitigen, die in der 3D-Welt markiert sind. Eine Objektauswahl zeigt Tags an.

Und gibt es das in einem anderen Programm oder Service: OSM rendered in Stereo zum Ansehen in Google Cardboard? Mit OSM go kann man durch die virtuelle welt von OSM lauen oder Fliegen.

cardboard

Alle Details stehen auf der OSM-Wikiseite für OSM go. Da stehen auch alle Einzelheiten zu den enthalten Teilfunktionen und deren Entwicklungsstand. Und am Ende eine ToDo-Liste.

Der 2D render Kode war ja nur ein erster Versuch. Ich wollte einen fertige Komplettlösung einsetzen. In den letzten Wochen suchte ich, fand aber keine Lösung. Da sind wirklich viele 2D-Renderer und durchaus einige für 3D. Nur einige nutzen Javascript und ich fand nur einen der das Framework Three.js verwendet. Unglücklicherweise sind die meisten Rendern kommerziell, auch wenn der Kode open source ist. Der Client zumindest. Oft sind wichtige Funktionen wie die Analyse der OSM Tags auf einem Server versteckt. Die benutzen alle einen 2D-Layer als Grundlage, Brücken sind nicht im 3D raus platziert, wie ich es möchte. Es ist fast unmöglich, alle Webseiten von so vielen Projekten zu lesen, die Werkzeuge und unterstützten Funktionen zu analysieren. Ich würde dazu gerne eine Tabelle als Überblick haben, vielleicht auch machen. Ein guter Anfang ist die Wikiseite für 3D_development.

  • Erst hatte ich ein Auge auf OSM2WORLD geworfen. Es bietet eine immer realistischere Ansicht, weniger Darstellung von Daten, wie ich das beabsichtige. Es verwendet Java. Ich erinnere mich an Etwas, mit dem man das unter Javascript laufen lassen konnte. Vielleicht verwende ich auch einfach die Logik wie die Tag-Analyse.
  • Das Nächste war OSMBuildings. Verwendet Javascript aber nicht Three.js sondern direkt WebGL. Ich hatte gute Gespräche und Mails mit dem Macher, Jan. Wir überlegten sogar eine Neuimplementierung mit Three. Wir suchen weiter einen Weg zusammen zu arbeiten. Aber Malbox scheint die bessere Lösung für Jan zu sein.
  • Dieser Tagen hat Mapbox einen 3D-Service vorgestellt. Deren Renderer nutzt auch direkt WebGL.. Die Tiles sind binär codiert, den Inhalt kann ich nicht sehen.
  • Da ist nur ein 3D-Rendere, der Three nutzt, soweit ich weis: vizicities. Ich sehe nicht viel davon weil die Motzen Tiles, die genutzt werden offline sind. Ich versuche, das zu aktualisieren.

Wegen des kommerziellen Karakters der Projekte habe ich bedenken. Wenn ich was dazu baue können sie es merken und meine Kontrolle darüber weg, sie könnten ihren code inkompatible zu mir ändern. Und wenn der Tile-Server zu viel macht, kann ich nicht tun, was mir im Sinn ist. Letztlich ist es auch schwer in den Haufen Kode einzusteigen. Daher habe ich beschlossen, die Suche zu beenden und meinen einfachen Renderer zu verbessern, solange es Spaß macht. Die Meisten Renderer versuchen eine möglichst realistische Szene zu zeigen. Das Ziel von "OSM go” ist es nicht, perfekt zu sein sondern die OSM Daten als abstrakte, dynamische Ansicht zu präsentieren; mit Zugriff auf alle Tags und Daten. Und Daten zu editieren! Deshalb werden die nächsten Schritte das auswählen von Objekten und erste Edit-Funktionen sein. Um Anfängerfehler zu vermeiden denke ich an Edits zur 3D Visualisierung wie Gebäudehöhe und Dachtype.

Ein anderes Ziel von OSM go ist, mit neuen Funktionen zu experimentieren, z.B. ein Weg, sich durch die virtuelle welt zu bewegen. So hat sich die Bedeutung von “go” geändert, vom “wie Pokemon” zu “gehe umher in OSM und experimentiere mit den Daten”. Ein Expeiment wird ein “Skagway-Mode” für 3D-Brillen sein. Vielleicht Avatar zu andere Anwender virtuell zu treffen um miteinander zu “sprechen” und zu editieren. OSM go begann als ein diffuse Spielende. Die erweiterte sich zu sowas wie “kann alles”. Aber die Idee, die OSM Daten durch Spielende zu verbessern ist noch da. Eine fehlende Hausnummer zu ergänzen, bringt Punkte. Ein Spieler erwartet ein Spielerlebnis mit Highscore, Wettbewerben, Preisen und motivierende animierte Effekte. Ich würde gerne solche Sachen programmieren. Aber ich brauche Hilfe, vielleicht ein Künstler und Designer um das ganze Gameplay zu entwerfen.

Der Code ist noch im Anfangsstadium, manchmal fehlerhaft und nicht mit allen Geräten getestet. Bitte probiert es und berichtet wie es war, was gut war, wars seltsam. Was sollte geändert werden und wie. Fehlen Funktionen oder möchte jemand was spezielles ausprobieren? Betrachtet OSM go als Spielwiese. Macht einen Entwurf und ich baue es vielleicht ein. Gibt es Funktionen, die ihr bei euch einbauen möchtet? Ich würde gerne helfen, es ein zu bauen.

berlin

OSM go - 3D Render? (EN)

Posted by -karlos- on 24 October 2016 in English (English)

The improvements of “OSM go” are going on. I was quite proud, as the OSM weekly mentioned it. The handling and the control is usable now. There are keyboard- and URL-commands. The rendering includes building levels and train tracks. The first “Layer” is included: Keepright. It is motivating to clear the errors, marked in the 3D world. A object selector does show its OSM tags.

And did you ever see this in any tool or service?: OSM, rendered in stereo, to see it in a Google Cardboard? OSM go enables you to walk or fly through the virtual world of OSM

cardboard

Read all details in the OSM-Wiki page for OSM go . There you will also find details to ongoing component states and rendering details. And a todo list at last.

The 3D rendering code was only a preliminary attempt. I wanted to use an existing renderer out of the box. In the last weeks I was no search but did not find a solution. There are really a lot of 2D renderer and even quite a view 3D renderer. Only some use Javascript and I found only one using the framework Three.js. Unfortunately, most of this renders are comertial, even if the code is open source. The client part at last. Often, important functions like OSM tag analysis are hidden in the tile server. They all use a 2D layer as Basis, bridges are not placed in the 3D space as I intend to have. Its almost impossible to read all the pages of so many projects, analyse all the supported features of all tools. I would like to make/have an overview as a table. A good start is the Wiki page for 3D_development.

  • First I had an eye on OSM2WORLD. It offers a more and more realistic view, less data visualisation as I intent. It is written in Java. I remember a framework to run Java in Javascript. May be I just could take the logic like tag analysis.
  • Next was OSMBuildings. Using Javascript but not Three.js but WebGL direct. I had some nice talk and mailing with its creator Jan. We even considered to do a re-implementation with Three. We still try to find a way to work together. But Mapbox seems to be a better place to go for Jan.
  • This days, Mapbox announced its 3D service. Their renderer also uses WebGL directly. The Tiles are binary and kind of a blackbox to me.
  • There is only one 3D render using Three, as far as I know: vizicities. I can’t see much there because the Mapzen tiles it uses are offline now. I will try to update it.

Because of the commercial character of the projects, I do have my doubts. If I add features, they may merge it out of my control, they may change their source incompatible to my code. And if the tile server does to much, I will not be able to do what I have in mind. At last, ist's a hard point to get into a big bunch of code. So I desided to stop my search and improve my simple renderer as much as long as it will be fun. Most renderer try to show a more or less realistic scene. That's not a aim of OSM go to become perfect, but do present the OSM data as a abstract, dynamical view with access to all tags and data. And to edit the data! That's why the next steps will be data and object selection and first edit features. To avoid bad newbie edits, I think about edits, related to the 3D visualisation, like building height and roof type.

Another aim of OSM go is, to experiment mit new features, i.e. a way to move through a augment or virtual world. So the meaning of “go” changed from “as Pokemon" to “go around in OSM and experiment with the data”. One next experiment will be a “Segway-Mode” for 3D glasses. May be avatars to meet other users virtual, chat and edit together. OSM go started as a diffuse gameplay idea and extended to something to “does anything”. But the Idea to improve the OSM data by players is still there. Add missing house numbers to get points, why not. A player will expect an experience with high scores, competitions, batches and motivating optical effects. I would love to code such things. But I need help, may be an artist and designer to develop the whole gameplay.

The Code is still in a beginning state, buggy sometimes, not tested with all devices. Please try it and tell me, how it went, what was nice, what was odd. What should be changed and how. Are you missing a feature or would like to try something special? Think about OSM go as a sandbox. Make a draft and I may implement it. Do you like a feature for your project? I would love to help to include it.

london

Salt Lake City as trainigs area for "OSM go"

Posted by -karlos- on 1 September 2016 in English (English)

Funny: The Apple Store had one corner with doubble Nodes, causing an error in my software.

Location: Marmalade District, Capitol Hill, Salt Lake City, Salt Lake County, Utah, 84103, United States of America

OSM go Earth - Fragen

Posted by -karlos- on 29 August 2016 in German (Deutsch)

Es gibt auch diese Woche etwa zu berichten ;-) Es geht voran, zu langsam und doch zu schnell: Zu schnell geht es, weil meine Begeisterung mein Restleben und den Nachtschlaf beeinträchtigt. Zu langsam weil das Testen mit Javascript eine Qual ist per „Console.Log“, am Smartphone gar nur „alert“. Gibt es ein gutes Framework mit Beakpoints?

OSMgo Greenwich

Was hat sich getan: Erst muss ich mal erwähnen, dass ich schon lange mit einem Freund zusammen 3D-Javascript bastle. Martin hat mir mal eben den Download mit AJAX und das Scannen des OSM-JSON gebastelt. Da konnte ich dann meine „new Node“ usw. eingehängt – schon wurde, statt ein paar Test-Daten, ein echter Ausschnitt aus OSM sichtbar, siehe Bild-Kommentar zum letzten Post. Es waren erst mal nur Highways und Buildings. Für die Tag-Auswertung war ein Konzept notwendig; jetzt gehen schon einige Tags mehr (leisure, waterway, landuse) aber immer noch rudimentär. Die „higway“s verschieden breit, Farben später. Bei „power“ war es erst mal Spaß, an jeder Node einen kleinen Mast auf zu stellen und diese dann mit Leitungen zu verbinden. Das auch „building“s zusätzlich „power“ haben können zeigt, dass die Main-Typen eine Priorität haben: Wenn das Tag „building“ da ist, ist „power“ ein Sub-Typ bzw. Detail-Info zum Gebäude. Gibt es eine Beschreibung der Logik des Renderns, als Text oder Pseudo-Code?

Lustig war auch, dass mein Code gleich den Fehler Tag-Array-Länge-Null geschmissen hat. Da ist tatsächlich ein recht lange Way ohne Tags in meiner Nachbarschaft. Darf ID das? Kein Felhler: die Tags sind an der Relation zu der der Way gehört: Ein Wasserschutzgebiet.

Meine 3D-Darstellung ist eher plakativ als realistisch, um die Flächen-Typen zu verdeutlichen. Es gibt Kartenstiele, die Farben etc. festlegen. Eine habe ich gefunden. Wäre es gut, wenn ich die einlese und alles „genauso“ darstelle? Gibt es fertigen Code, um diese Dateien ein zu lesen?

Demnächst will ich mir bei OSM2WORLD (und Cartagen) ansehen, wie die das machen, um so zwischendurch auch den Renderer zu verbessern. Von OSM2WORLD habe ich einen YouTube-Vortrag gesehen, sympathischer Knabe :-)

Auch GPS ist inzwischen angezapft; so wird schön die eigene Umgebung als dargestellter Abschnitt ausgewählt. Noch sind die Lauf- und Zykluszeiten harmlos. GPS und Overpass-Abfrage dauern da länger. Zum Testen ist es oft besser, GPS und AJAX durch Dummies zu ersetzen, läuft schneller und erzeugt keinen Stress für Overpass, das nicht immer schnell läuft. Es ist ja auch nicht als „Arbeits-Server“ gedacht. Für das Gaming/3D-Surfing wird irgendwann eine eigene Server-Instanz notwendig sein. Ob Overpass der richtige Vektor-Tile Server ist? Gibt es bessere? Von OSM selbst?

Wie bei 2D-Karten üblich kann man auch hier beim 3D-Rendern zusätzliche Infos als „Layer“ einbauen, als Erstes „Keep Right“. "kort.ch“ macht das ja auch (in 2D). Bei kort kann ich das API und den ganzen Ablauf erkunden, sogar in Javascript! Welche Layer sind noch gut? Wikipedia, GeoCashing, OpenStreetView, welche Wünsche habt ihr?

Eine Gamification ist (fast) auch nur ein Layer. An einem Samstag habe ich ein simples Game eingebaut: Um die GPS-Position, an der der „Spielers“ OSM go startet, schwebt über jeder Node eine Kugel. Kommt man näher als 15m wechselt sie die Farbe, schwebt hoch und verschwindet. Und man bekommt 100 Punkte :-) Dazu reichen 65 Zeilen Code; natürlich alles roh und ohne Luxus. Ich habe aber mal zwei Level-Intros erdacht:

  • Du bist Packman! Schnapp dir all gelben Punkte um zum nächsten Level zu kommen.
  • Das Reich der Feen kannst du nicht sehen. Die Kamera deines Smartphones sieht mehr! Deine Fee hat goldene Kugeln für dich verteilt. Geh hinaus und suche sie alle, dann wird die Fee sich bei dir melden. Gehe nicht auf die Straße! Die Kugeln spüren dich und kommen zu dir.

OSM go Packman

Hier kann es jeder ausprobieren: (www.ac1000.de/osm)

Ich suche Pilot-Tester! Wer macht mit?

Ich habe nur mit iPhone Notebook getestet! Was geht bei Android? Es sind noch einige Render-Fehler enthalten, da geht’s hin wenn die Control geht.

  • Beim Smartphone sollte sich beim Drehen die Umgebung 1:1 grob wieder finden (plus Kugeln über den Nodes). Und beim Laufen sollten sich OSM-Darstellung und Realität synchron verschieben, soweit GPS genau ist. Auf zum Punkte sammeln!
  • Am Notebook kann man mit der 1. Maustaste drehen, mit der 2. Sliden und mit dem Rad zoomen.

Und wenn garnichts geht, neben den Bildern gibt es hier auch ein kleines live Video.

Mit GPS, JSON und "Packman" ist das „proof of concept“ eigentlich getan, jetzt müssen die vielen Feinheiten dazu, damit es sich ein Programm/Spiel nennen darf. Und die Grobheiten: Bedien-Funktionalität, Level usw. Zunächst bin ich dabei aus diversem Code einen eigenen Control basteln müssen. Bisher ist das Handling noch dürftig. Es soll ja mit Key, Maus und Touch genehm; am PC, Tablett und Smartphone; ohne und mit 3D-Brille; Bewegung frei oder per GPS; laufen, schweben, fliegen übergangslos hoch bis es in eine 2D-Ansicht über geht. Der Anwender soll selbst entscheiden, wie er Packman spielt oder Hausnummern sucht. Er soll auch einstellen können, bei welchem Zoom-Level was eingeblendet wird.

Eine 3rd-person ansieht wie bei Pokemon GO wird es natürlich auch geben. Aber keinen Körper-Editor sondern eine Symbol-Figur. OSM hat kein Plüsch-Maskottchen, oder? Eine Symbolfigur die jeder kennt, das für bewegen über die Erde steht. Ich denke da an einen lustigen Zugvogel. Andere Vorschläge?

OSMgo top

Google Earth ==> OSM Earth (EN)

Posted by -karlos- on 12 August 2016 in English (English)

No, I dod not cancel, “OSM go”, I extended the idea. But first, thank you for the suggestions. At first, the reactions was limited, after a week it got nice.

After I postet that PSM-go, I spend a day to take snippets of old code of mine. And at night, I had that first 3D-View. It enthused me so much, to have a sleepless night, my imagination running wild: Walk through OSM in 3D (not that discouraging Pokemon style, something tidy), overlay data, not only walk but “fly”; thats why I used the term OSM-Earth. Sure, more layers with external- / realtime data are possible. May be switching to 2D mode.

Actual I am fighting with JavaScript Orientation-Controllern (the compass is wrong using Android), someone may take over this. Contributors are welcome anyway, not only by writing code. Also advice, what frameworks exist. I.E: If I got JSON by AJAX, how to convert the OSM data to Javascript arrays and how to index the node ids?

Actual, everything exists already; renderer in 2D and 3D, gamification with OSM improvements. Demotivating? Well - it’ fine, if one has les to do himself. However, its quite difficult to dig into stacks of alien code. And often, only the solutions may be usable because it is not Javascript.

  • A running gamification (in 2D): http://www.kort.ch
  • A Renderer in Javascript (2D): Cartagen
  • A 3D-Renderer (java,static): osm2world.org
  • Ingress, the “precursor von PG" OSM based: github.com/egore/osmgress
  • Other tools to motivate editing: Mapillary, OSMand and Maps.ME.

With edits there are a lot of doubts because newbies shall do it. I like the idea, this edits to go into a pool, used by “real” OSMer, loaded in an editor and verified.

What next? Just things I will have fun with :-)

  • First get JSON data around the actual position by Overpass. So “real” things will be visible, not dummy nodes etc. That will motivate to show more and more details in 3D.
  • The handling of moves are improvable for sure. A Cardboard mode will come. Gi by keyboard&mouse, touch gestures or VR gadgets to any place and view angle on Earth.
  • And the first “gaming”; just real (GPS) walks will give first point. By personal experience, I think, gather house numbers will be a niche first useful action.

Below a view of my first rendering, an OSM-like style. At the German post, I will append an style, as close as possible to the Pokemon map style. And if you like to test it yourself (without guarantee): www.ac1000.de/osm/go or as OSM-style: www.ac1000.de/osm/go?x It works with keyboard, mouse, touch and device turning, but still petting.

(Do I really need to translate my German posts? Anyone interested? Is there a way to only offer automated translation, I would prefer to code)

OSM style rendering

Google Earth ==> OSM Earth (DE)

Posted by -karlos- on 12 August 2016 in German (Deutsch)

Nein, “OSM go” habe ich nicht gecancelt sondern die Idee erweitert. Aber erst mal Danke für die Anregungen. Die Reaktionen waren zunächst mäßig, nach einer Woche dann schon schön.

Nach meinem Go-Post habe ich einenTag lang einige Teile aus alten Code von mir zusammengeglaubt und hatte abends schon eine erste 3D-Ansicht. Was mich so begeistert hat, das mir einer schlaflosen Nacht die Phantasie durchgegangen ist: In 3D OSM durchwandern (nicht der abschreckende Pokemon-Style, was gescheites), Daten einblenden, nicht nur Laufen, auch “fliegen”; daher jetzt der Begriff “OSM Earth”. Klar sind dann weitere “Layer” auch mit Echtzeitdaten möglich. Vielleicht auch ein Wechseln zur 2D-Ansicht.

Derzeit kämpfe ich noch mit den JavaScript Orientation-Controllern (Der Kompass stimmt bei Android nicht) das kann gerne jemand Übernehmen. Mithelfende kann ich brauchen, nicht unbedingt nur zum Code schreiben. Aber auch Beratung, welche Frameworks es gibt. Zum Beispiel: Wenn ich mit AJAX JSON habe, wie konvertiere ich die OSM-Daten zu Javascript-Arrays und wie Indiziere ich die Node-IDs?

Eigentlich gibt es ja schon alles; Renderer in 2D und 3D, Gamification mit OSM-Verbessern. Demotivierend? Och - ist doch gut, wenn man weniger Arbeit hat. Allerdings ist es sau schwer, sich in einen Haufen fremden Codes einzuarbeiten. Und oft kann man nur die Lösungen nehmen, weil es kein Javascript ist.

  • Eine laufende Gamification (in 2D): http://www.kort.ch
  • Ein Renderer in Javascript (2D): Cartagen
  • Ein 3D-Renderer (java,statisch): osm2world.org
  • Ingress, der “Vorgänger von PG" auf OSM Basis: github.com/egore/osmgress
  • Andere Tools, die zum Editieren Motivieren: Mapillary, OSMand and Maps.ME.

Bei Edits gibt es viele Bedenken, da es ja Neulinge sein sollen. Mir gefällt die Idee, das diese Edits in einem Pool landen, die dann “echte” OSMler in ihren Editor laden und prüfen.

Wie geht es weiter? Immer das, was gerade Spaß macht :-)

  • Als nächstes gedenke ich von Overpass JSON-Daten der eigenen Position zu holen. Dann werden “echte” Sachen dargestellt, statt Test-Nodes Etc. Das wird motivieren, immer mehr Details auch in 3D darzustellen.
  • Die Bewegungsmöglichkeiten sind verbesserungswürdig. Ein Cardboard-Mode kommt dazu. Mit Tastatur&Maus, Touch-Gesten oder VR-Gadgets “Bewegen” zu jedem Blickpunkt der Erde.
  • Und erstes “Spielen”; schon echtes (GPS) ‘rumlaufen gibt erste Punkte. Aus persönlichem Erleben halte ich das Erfassen von Hausnummern für eine gute erste nützliche Aktion.

Hier ein Bild meines erstes Renderns, möglichst nahe am Pokemon-Kartenstiel. Einen OSM-Like-Stiel hänge ich an den englischen Post. Und wer es selbst ausprobieren möchte (ohne Gewähr): www.ac1000.de/osm/go oder als OSM-Stiel: www.ac1000.de/osm/go?x Die Bedinung geht mit Tasten, Maus, Touch und Drehen, ist aber noch recht fummelig.

OSM-go Pockemon-Style

Pokemon Go ==> OSM Go (EN)

Posted by -karlos- on 31 July 2016 in English (English)

Who did have the same association at once? One will get some ideas. Now eyes closed and then write down your ideas please. Gamification of OSM, als a helper to promote OSM as a useful every day tool. But not only this, the data base should also participate.

“If you have visions, see the doctor” Helmut Schmitt, German Chancellor. - A “OSM GO” is not a mini app, just plugged together in a minute. A server has to run, the handling should be DAU prove and appealing, the function understandable. That needs more than two enthusiastic coders until at last some basic level will run.

Wether the idea is nicked, anyone may note. Pokemon Go also is a mix of known elements: Collecting coins outdoor is done long way back. Augment reality too (I am irritated because Pokemon Go doesn’t use ist all the time)

The OSM-GO client may (at first) be a browser-app. 3D visualisation done with WebGL/Tree.js, Javascript On-Events to catch the moves and direction of the smartphone. As we don’t have an Javascript OSM render engine, this is, by the way, also a chalange.

There is still the question about the game play. Just do start, we also may do OSM-useless point collecting: Any healthy walked step counts, find and goto hydrants and water dispenser. If the player likes, he may set himself and its walks visible, virtual to all other players.

Really fun comes up with OSM-useful things: Check wether a shop, contained in OSM, still exists; the older the last verification the more points you get. Verify, update or insert tags of the shop. Note new house numbers. Is a way really a dead end or did the first mapper run out of time/enthusiasm? Enter new POI or even totally new ways.

At that moment OSM, data get changed, it gets critical and needs verifying. A lot helps a lot: If three player claim the same, it will be rather correct, and only now, it will be taken over to the OSM data. To collect more gameplay ideas and features there then may be a page in the OSM wiki.

Is all this a vision only or feasible? I don’t see any technically obstacles. If it runs fine, OSM will provide server capacity. The biggest OSM shortage is human contributors, organiser and coder. I would be part of it (references: ac1000.de/tosme ac1000.de/kk/kk )

And finally: Is there common interest to play this kind of “game”, anyway?

(This is my own limited translation of the German original text)

PokemonGoRenderer

Pokemon Go ==> OSM Go (DE)

Posted by -karlos- on 31 July 2016 in German (Deutsch)

Wer hatte diese Assoziation auch gleich? Da kommen einem einige Ideen. Jetzt Augen zu und dann deine Ideen aufschreiben bitte. Gamification von OSM, als Trittbrett um OSM als nützlich im Alltag bekannt zu machen. Aber nicht nur, die Datenbasis soll auch davon partizipieren.

“Wer Visionen hat, soll zum Arzt gehen”, Helmut Schmitt. Ein “OSM GO” ist keine Mini-App, die man mal schnell zusammen popelt. Ein Server muss laufen, die Bedienung idiotensicher und verlockend sein. Die Funktion verständlich. Da braucht man mehr als zwei begeisterte Programmierer, bis zumindest einige Basis-Level laufen.

Das die Idee geklaut ist, darf jeder sehen, Pokemon Go ist auch ein Mix bekannter Elemente: Draußen Münzen sammeln gibt es schon lange. Augment Reality auch (mich irritiert, dass PG das nicht immer an läßt).

Der OSM-GO Client kann (erst mal) eine Browser-App sein. Mit WebGL/Three.js geht 3D-Darstellung, On-Events von Javascript können die Bewegung des Smartphone erfassen. Das man nebenbei auch einen OSM-Renderer in Javascript braucht, ist ja auch eine Herausforderung.

Bleibt noch die Frage nach dem “Game-Play”. Da kann man zur Anfangs-Motivation auch osm-nutzlose Punkte-Sammelei betreiben: Jeder gesund gelaufene Meter zählt, Hydranten oder Wasserspender suchen und aufsuchen. Wenn der Spieler will, kann er sich virtuell “sichtbar machen” so das andere Spieler sehen, wo er läuft.

Richtig Freude macht aber erst OSM-Nützliches: Prüfen, ob es den Laden noch gibt, der auf OSM eingetragen ist; je länger nicht geprüft wurde, je mehr Punkte. Die Daten der Läden prüfen / aktualisieren / Neue eintragen. Hausnummern erfassen. Hört ein Weg wirklich am Ende auf, oder hatte da ein Mapper keine Zeit/Lust mehr? Ganz neue POI und am Ende gar neue Wege erfassen.

Sobald OSM-Daten verändert werden, wird es natürlich kritisch und bedarf einer Verifizierung. Viel hilft viel: Wenn drei Spieler das gleiche behaupten, wird es wohl eher stimmen und erst dann wird es in die OSM-Daten übernommen. Für die Sammlung weiterer Gameplay Ideen und Funktionen gibt es dann vielleicht eine Seite im OSM-Wiki.

Ist das alles nur eine Vision oder realisierbar? Technisch sehe ich keine Hindernisse. Wenn es denn flutscht, wird OSM auch Server-Kapazität bereit stellen. Der größte OSM-Mangel sind aber Macher, Programmierer. Ich währe dabei. (Referenzen: ac1000.de/tosme ac1000.de/kk )

Und schließlich: Besteht allgemeines Interesse, so ein “Spiel” zu nutzen?

PokemonGoRenderer

LemLem: "Landkarte oder GPS?"

Posted by -karlos- on 7 May 2016 in German (Deutsch)

Der Erd-Umradler Klaus Max Smolka alias "LemLem" würde ein guter Botschafter für OSM abgeben. Sein Blog ist unterhaltsam und informativ zugleich.

Jetzt hat er über die Frage "Landkarte oder GPS?" geschrieben und dabei auch für OSM gute Worte gefunden:

http://www.tour-de-friends.de/LandkarteOderGPS/

Pocket Earth, wiederentdeckt

Posted by -karlos- on 7 August 2014 in German (Deutsch)

Beim Ausmisten bin ich neulich eine nicht benutzte Karten-App gestoßen. Vor dem Löschen schaut man kurz hinein. Nach etwas Rumgestöber in den Menüs dann das “Wau!”. Das Teil ist nicht genial aber fast. Offline- und In-App Rendern, Adresssuche und Routing, Wanderplanung und GPS-Aufzeichnung, Im- und Export, fast alles was das Herz begehrt. Denn akzeptablen Preis musste ich wohl schon mal gezahlt haben, warum dann nicht genutzt? Das erste ist die Bedienung. Gut, ein App das eine Dokumentation braucht, taugt nicht. Und nach doch einigem Erkunden findet man alles, auch ein Handbuch, und entwickelt auch ein Bewusstsein für die Menüstruktur. Mich juckt es doch, die Logik im OSM-Wiki zu Beschreiben. Vielleicht finden sich dabei Haken.

Die Karten sehen wie OSM oder Pocket-Stiel aus. Da sind noch Macken ‘drin (Brücken-Stiel, falsche Flächen) Auch Fehler kann man ja zusammenstellen und übermitteln. Die App scheint ja noch gut in der Entwicklung zu sein.

Cool ist die Auswahl dessen, was gerändert wird. Endlich kann ich die nervenden Regions-Grenzen abwählen und Bushaltestellen sehen nur, wenn ich eine Suche. Beim Wahlmenü hätte ich noch Wünsche und Ideen. Und Mecker: Wenn ich Nebenstaßen ausschalte sollten bitte auch Waldwege weg sein.

Fast nichts zu meckern gibt es beim Download. Keine Kacheln diverser Auflösung, kompakte Vektor-Daten werden ruck-zuck gespeichert. Länder, Orte oder alles was für eine Route benötigt wird. Wenn man London nicht mehr baucht, löscht man gezielt die 13MB. Es gibt automatische Updates! Was ich vermisse sind Relationen wie markierte Wanderwege. Dazu kommt einiges an Kleinkram: Man kann Routen, Wege, Punkte und Markierungen in Ordnern sortieren. Adressen auch über die Kontakte suchen und diverses im Umkreis.

Oh, es gibt ein Forum; da bin ich dann mal weg …

OSM-Pacman in der eigenen Nachbarschaft spielen

Posted by -karlos- on 30 April 2013 in German (Deutsch)

Mapbox hat gerade ein neues Werbevideo vorgestellt das mich auf eine spontane Idee gebracht hat: Ein Browser-Game das die Wege rund um die eigene Position anzeigt und per Zufall Monster absetzt denen du entkommen musst, natürlich auch nur auf den Wegen. Todo: Überdenken, ausarbeiten, featuredescription, Code, .... Fun

The Undo Expirience: Touching a Ghost-Node (TosmE)

Posted by -karlos- on 2 February 2013 in English (English)

TosmE tests touch gestures to edit a way. (to use with iD)

Last time I added a new way to delete a node: Touch it and stay on the node without move. Quite often, when I fine tunded existing nodes, my node was deleted unintended. Why? I broke my own rul: If something happends in the editor, show it! Now the running delete-time is visualized: after short, the nodes starts to change color form blue to black. You now know: If you don't want to delete, move or untouch.

Because the sight/loupe was empty after the node was deleted, I added a thin ring where the node had been. That immediately lead to the next idea: If you accidently deletet a node, what would you like to do? Undo. What if you see the ring? Save it, touch it, restore it! Right, try it, you'l love it: http://tosme.openstreetmap.de

At last I love it as the most enjoyable way to undo.

Guided Tagging by Wiki generated JSON-formated rules

Posted by -karlos- on 2 February 2013 in English (English)

In my last post, I presented just an idea. The responses showed, there are quite a view ongoing activities already. We all share the idea of tagging guided by a tag database structured to a agreed schema. Some projects seem to compete but that's evolution in OSM. Some could interact with a little glue in between.

I really agree with the presentation by David.earl. I also like the idea, given in his video, to generate the data by parsing the Tag pages of the OSM wiki.

The name TagCentral first reminded me to a tag-centralizing Mafia. We do not want central decisions how to tag. But we need, like the central OSM database, a central tag database, maintaining code and a central server to run it.

At the moment we have two sources of tag data: First the tags, used in the OSM data as Taginfo and tagwatch present in analyses. Second the OSM-wiki with all its tag-pages. Both are crowdsourced (no Tag-Mafia :), both may be used to condense a tag database. Taginfo helps to prioritize and may show missing definitions in the wiki. Relations between tags, statistical retrieven, should be present in the wiki to.

Of course, no one wants to write an analyzer of human written wiki text. There is already a wiki-template "KeyDescription". It looks like this Template includes all the data necessary to generate a tag-schema. If not, it may be extended.Let's se the tag highway=trunk. The template includes value=trunk. "Trunk" is also the English word for that kind of road. But there is no option to append the used words in other languages. What about name=trunk and AT:name=Schnellstrasse? This way we would get the localization almost for free. If each localized wiki page has its own word definition in the template, all the templates can be merged to one tag schema with all local used words, and all local descriptions of course.

Right, what next after the template is extended and used accordingly? We need the code and a server to run the parser/scanner of the tag wiki pages. This Is the TagCentral mentioned above or simply an extenuation of the Taginfo if you like. It looks like the iD project is already doing good parts of this. After all the tag schemata are generated or updated, there should be a lot of checking and crosschecking with the tagdata statistics. There will be a list of bad templates. We could have things like The 10 most used tags without a wiki page, and so on.

The next step will need a lot of willingness of teamwork: the format of the schema. All the main editor teams should agree with it. (And to use it.) The use of JSON seems already agreed. Potlatch and iD share some developer. JOSM uses XML at the moment. My solution to that: There could be a converter to generate XML from a JOSM tag database. Or the tag database could be some common real database and generate the JSON files and the XML files and the files any other editor would like to use.

How much different projects are developing a tag schema?

  • David.earl did his speech but no code, is it?
  • iD in teamwork with taginfo seems the project creating and using a schema. And they are in contact to JOSM.
  • I read the russian page of Ilya Zverev by google translate. It seems to be quite the same. Does anyone have contact to him?
  • AndrewBuck is using OWL to define the schema. Thats quite scientific. Could it help to define the schema somehow more systematic?

The data, retrieved by now may help to offer menus in several styles, text oriented, selections by graphic symbols, etc. (see my last post) But it may be a problem to create the complex dialogs, some tags will need. There could be an extra editor. But I would prefer an extended or new created template to the wiki. Last time I mentioned a public schema editor but dropped it now. Instead there should be a web service to show the scheme, including the menus and dialogs, an editor would offer, if it uses the schema and the tag database. A changelog and some human eyes may good before the editors take over the new version.

Who and what?

  • First here has to be a talk about how fare we agree to go the way, described above. I will motivate you.
  • Next is the fixing of the schema. This block isn't the right place for that. The forum and a wiki page will do better. TagCenter or TaginfoPlus may be a good name.
  • There is code to write. I don't have that much time to help. There will be help by others, I am sure. AndrewBuck, Ilya Zverev?
  • There is code to run on a server. As the function is near to or part of the Taginfo, I think, it could run on the same server. Because Jochen Topf is German like me, we may have a chat in the next time. (The same with the JSOM team)

Guided Tagging by an interpreter of XML-formated rules

Posted by -karlos- on 26 January 2013 in English (English)

"How do I tag this" Is the most asked question of OSM users, isn't it? Newbees may easily learn how to draw points and lines in a OSM-Tutorial-Game. But how do editors help with tagging? You have to memorize it or search in the OSM-Wiki. Potlarch, Josm and also a lot of Apps have some menus and dialogs to guild tagging. I assume, they are separably hard coded and maintained by each developer, more or less influenced by user feedback.

My suggestion:

Let's create a database for Guided Tagging rules

The knowledge about tagging, written down in a well defined format, interpretable by software.

The format may be XML and defined by a XML-scheme. The content will, define all the ways, tags may be selected and checked by an interpreter code. Step by step, the scheme and the interpreter may handle more features:

  • Select-Menus and -Trees
  • Dialogs with Switches, Selections, Radio-Buttons and so on
  • Rules to consider between Tags (excludes, includes, context, ...)
  • Sub-Dialog-Trees (i.e. Tagging scheme for wheel chair access)
  • A default-list "Often used" ("Recently used" done by the interpreter code)
  • An alphanumeric Index for text search!
  • Tag names in English and multilingual
  • Tooltips and small help texts (i.e. What means Path Grade 1 to 5?)
  • Links to Tag-Symbols
  • Links to the tag description in the OSM-Wiki
  • menus for often used task (i.e. mapping buildings) The editor may allow to add user-defined menus

The XML-database may be edited online like wiki pages by registered members. It can be checked by the XML-scheme automatically (There could be an WYSIWYG-Editor later) The changes should be approved by a team of experienced members.

The XML-scheme and the interpreter code have to be maintained synchronously by a team of developers. The developer of the important editors should be part of this team.

Any OSM-Editor or App may use the Guided Tagging. The XML-File may be kept updated and used offline in the editing device. The code changes only with extensions of the XML-scheme, while the tagging rules may evolve day by day. Of course, next to the Guided Tagging should always be a basic tagging by name and value.

Who does it? Anyone? Me? Well, I do write code at work every day. And I know who to ask about handling XML. The first step may be a small prototype with limited functionality. The first use may be as part of the upcoming editor "iD", so the first code may be written in Javascript and use of the "3D" framework. The Javascript, or the algorithms there in, may be transcoded to other languages (Java, Action-Script, Apple-C, ...) And I need help. My time is limited (and my English is dangerous)

  • Do you like the Idea?
  • Would you like to take part of the realization?
  • Quite important: Do the developer of existing Editors like it? And How can I ask them? I don't have any contact to the OSM developers.

Me, discovering the JS framework Dojo (used by iD)

Posted by -karlos- on 19 January 2013 in English (English)

Implementing more and more touch events into "TosmE" by coding each separately got difficult. I thought about a touch-gesture-recognition module. A web search presented a lot of ready to use solutions.

One of them was Dojo. Dojo is also used by the upcoming JavaScript editor iD. So I read some tutorials and tried to realize the features of TosmE with DoJo. Well, it wasn't easy. I missed an Index how to solve certain functions. And I missed examples. So my soluton was cartainly ugly but it worked so far. I could set new nodes and move them.

But the Dojo modules dojo/mouse dojox/gesture don't support all the extras I did with plain JavaScript. I differ between steady and moved object untouching for example. I wanted a Z-like gesture for undo. And so on.

That's no dead end, Dojo is ought to be extended. At last, I learned a lot about event driven coding instead of time cycles. There are other frameworks with much more features. This looks fine. iD is extendig to other frameworks to, we will see.

Touch/Tablet OSM Editor (TosmE)

Posted by -karlos- on 11 January 2013 in English (English)

"TosmE" is a prototype to work out how to edit ways and areas only by touch gestures.

You may run it from the FOSSGIS server: http://tosme.openstreetmap.de

Do you like it?

It's tested on iPad and iPhone with Safari. I would like to add the function into iD

Info - More soon.

Me discovering iD (JavaScript OSM-Editor)

Posted by -karlos- on 6 January 2013 in English (English)

When I introduced my little touchscreen project "TosmE" to a small Google+ community, I got the fist hint to "iD". It uses JavaScript as I do. With only the name "iD" I asked myselve: Does it support only Apple devices or Android to? Then I read some more about iD:

The main goal is to have an even more new-user-fiendly editor. Well, that mainly depends on the User-Interface. We should find a Usability company who may contribute to OSM by analysing the iD-UI. I hope, next to the newbe-save-edit mode, there will be a speed-edit mode later too.

iD coded in JavaScript will run on almost any actual device, and it will be the only way&relation-editor running on iPad/iPhone/iPod. But only if it includes als a touch interface. And that's what I with TosmE are coding as an prove of concept. May be I could add touch functionality into iD.

   -------

I first tested iD on my iPhone: The UI is realy not intented for small screens yet. Then iPad: Better; but no nodes and ways to see and no way to create new once. At last with a notebook: Yes! Setting notes&ways works. The editing feels good, there is much visual help. Not perfect, not cool but functional. Still no existing data yet. May be Overpass could be used there.

Does it realy upload to OSM? I don't want to make my tests anyting bad. Oh, at London I see some public toilets swimming in the Themse, may be iD uses it's own edit server, would be good. Where are informations like that?

Does iD realy need tester at the moment? Therer are so much bad/non functions, you code writer know them yourselve, don't you?

Example: The selector of a tag content goes up and down by cursor-keys, but it doesn't stop at the first/last option, it goes invisilbe into nirvana, but can go back into the visible part. Things like this should be found in module test by the code editor, should't they?

I would like to know how to find the according JS code and how to fix that error, just as an example.

To be continued ...

Hilfe für OpenLayer als Touch-OSM-Editor

Posted by -karlos- on 8 May 2012 in German (Deutsch)

Falls einer bemerkt, das es nicht so recht weiter geht: Durch mein erfülltes Leben kann ich höchstens 2h/Tag an dem Projekt arbeiten.

Eigentlich bedarf der JS-Code dringend des Aufräumens. Vorher wollte ich aber wissen, ob man für das Teilprojekt "Küstenlinen malen" mit OpenLayers einfach eine Karte (Bing) oder ggf. Gebiete der OSM-Daten darstellen kann.

Kann man sicher. OpenLayer scheint so mächtig, dass man damit wohl auch einen OSM-Editor erstellen kann, auch für Touch-Bedienung. Das gefährdet die Moral des Projekts "TosmE": Es geht doch schon alles.

Nach einigen Tagen des Lesens und gelegentdichen Versuchens ist mir OpenLayer leider immer noch nicht geheuer, zu groß, so ganz anders als Java-Code. Im Detail dürften die fertigen Funktionen gut, aber nicht ideal für Touch-Edit sein. Es gibt wohl auch genug Möglichkeiten, dies anzupassen, aber wie-was-wo das alles?

Wer kann helfen, mit OpenLayer im Detail zurecht zu kommen?

Ansonsten gibt es ja auch so noch viel zu Erkunden bei der Frage, welche Gesten wozu geeignet sind, beim Wege- und Flächen-Editieren.

"TosmE" Paint&Calc

Posted by -karlos- on 3 May 2012 in German (Deutsch)

Dieter hat für seinen UsedCase passende Infos geliefert, fein. Openlayers kenne ich noch nicht, aber klauen von Code kann ich :-) Die meisten TosmE-Tester mahlen auch spontan mit dem Fingergleiten Ways. Also habe ich mal das Work-Package "Editier-Modus Paint&Calc" vorgezogen. Aber das war zu früh!

  • Ein neuer Zeichen-Mode für Ways muss angewählt werden. Die Mode-Auswahl erfolgt, wie das bei Apple-Tools üblich ist automatisch und (hoffendlich) intuitiv. Also mal probiern, wann Einzelpunkt-Edit und wann Paint&Calc kommt.
  • Paint: Bei jedem TouchMove-Event eine Node zu setzen war dann schnell gemacht.
  • Calc: Aber dann wurde es schwierig: Der Josm Java-Code zu Vereinfachung des Way "buildSimplifiedNodeList" mußte zu Javascript konvertiert werden. Gibt es da (wie Gerüchte sagen) ein Tool zu? Da ich noch nicht die Klassen von Josm verwende, war das mühsam. Und natürlich ging erstmal nichts. Aber so habe ich gelernt, wie clever die Klassen Node und Way im Josm sind, wie man in Javascript recrusiv programmiert und so etwa wie die simlifizierung gelöst ist. Jetzt kann man beim Loslassen des gemalten Wegs zusehen, wie Punkte verschwinden. NACHTRAG: Der Algorithmus gefällt mir nicht. Bei Geraden sollte mehr optimert werden als bei Kurven.
  • Ob ich nun gleich Die Bing-Karte dahinter lege, kommt darauf an, wie komplex das Beispiel ist.
  • Einen Way-XML-String bekomme ich hin, nur wie und wo soll die Datei gespeichert werden, auf dem iPad? Man könnte sie als GPX-Upload in OSM ablegen, mal sehen.

Das Malen macht jedenfalls spaß, wie man hier sieht:

Paint and Calc

Selber Testen: http://db.tt/drw3zZKd (+Download)

Older Entries | Newer Entries