We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Neues @vcmap/core

00:00

Formal Metadata

Title
Neues @vcmap/core
Title of Series
Number of Parts
88
Author
License
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Eine kurze Vorstellung des VCMap Core anhand eines praktischen Beispiels - Einbinden von OpenStreetMap Inhalten als 3DTiles und Mapbox Vector Tiles.
Keywords
VECTOR <Programm>Block (periodic table)Meeting/Interview
Meeting/Interview
SoftwareDemosceneEASY <Programm>Pointer (computer programming)Coordinate systemVolumeFocus (optics)Plane (geometry)Object (grammar)STYLE <Programmierumgebung>DemosceneLevel (video gaming)Regulärer Ausdruck <Textverarbeitung>VolumenvisualisierungAttribute grammarSmart cardImplementationOpen sourceMobile appInformationMotion (physics)Software developerGeoinformationGeodesicDatenformatRobust statisticsComputer animation
DemosceneHöhe
DemosceneConfiguration spaceAPIEditorEditorLevel (video gaming)Proof theorySmart cardCuboidDemoscenePlane (geometry)Query languageFile viewerOpen sourceComputer animation
DemosceneDemosceneSlide ruleLink (knot theory)Software repositoryXMLUML
Level (video gaming)Meeting/Interview
Open sourceService (economics)Polygon meshAttribute grammarMeeting/Interview
DemosceneValue-added networkCode division multiple accessService (economics)DatenaufbereitungVolumenvisualisierungAttribute grammarDownloadWeb pageData structureInternet ExplorerOpen sourceDemosceneRow (database)Point cloudLink (knot theory)Boom (sailing)Statement (computer science)Meeting/Interview
Meeting/Interview
Transcript: German(auto-generated)
Ja, hallo hier zum zweiten Block, zum zweiten Vortrag des ersten Blocks natürlich, nachdem wir gerade schon was mit Drucken, mit Mapbox Vector teils hören durften. Bin ich jetzt gespannt auf den nächsten Vortrag, und zwar geht's da neuest aus dem VC Map Core Projekt.
Und erzählen wir uns dazu was, Ben Kuster, und wie immer gilt, wenn ihr Fragen habt, wenn Sie Fragen haben, einfach in den Fragentap schreiben, Ben. Steht im Anschluss natürlich für Fragen zur Verfügung, von daher immer raus mit allen Fragen,
es gibt keine dummen Fragen, je mehr Fragen desto besser. Und von daher würde ich sagen, jetzt hören wir uns erstmal den Vortrag an, bitteschön. Hallo und herzlich willkommen zur Produktvorstellung des VC Map Cores. Mein Name ist Ben, ich bin Softwareentwickler bei VC Systems in Berlin,
und ich werde euch heute einen kleinen Überblick über das neue Open Source Software Projekt von VC Systems geben. Darunter möchte ich kurz zeigen, was der VC Map Core eigentlich ist, wie man ihn einsetzen kann, auch mit einer kleinen Demo, und einen kurzen Ausblick geben, über was wir denn sonst noch so geplant haben mit dem VC Map Core.
Der VC Map Core ist eine JavaScript-Bibliothek zur Darstellung von Geodaten in 2D, 3D und Schrägluftbildern. Es soll möglichst einfach sein zu benutzen und auch zu erweitern, um vielleicht eigene Datenformate einfach in mehreren Darstellungsformen darzustellen.
Entwickelt wurde der VC Map Core von VC Systems und ist eigentlich ein altes Projekt, und hat lange als Grundlage gedient für die VC Map. Nun haben wir uns dazu entschieden, den Kern, also das, was die Map ausmacht zur Darstellung von Geodaten, Open Source zu stellen.
Aufgebaut ist der VC Map Core aus bekannten und robusten Open Source-Paketen, nämlich prima Open Layers und Cesium. Was ist denn nun der Vorteil eines Rappers um zweigängige Open Source-Projekte?
Der VC Map Core bietet Abstraktionen. Das soll heißen, als Entwickler muss ich nicht mehr wissen, wie Open Layers nun eine Ebene rendert oder Cesium ein Feature darstellt, sondern ich kann über den Map Core beide darunter liegenden Renderer gleich ansprechen.
Ich habe die wichtigsten Abstraktionen, die der VC Map Core bietet, hier mal kurz aufgelistet. Das Wichtigste natürlich ist das Konzept einer Karte, eines Renderers, einer Darstellungsform. Out of the Box bietet der VC Map Core drei solcher Karten, nämlich einer normalen gängigen 2D-Karte, basierend auf Open Layers,
einem Schrägluftbild-Karte, auch basierend auf Open Layers, und dem Cesium-3D-Renderer. Um aber meine Daten darzustellen, brauche ich natürlich auch ein Konzept von Ebenen. Auch diese Ebenen sind abstrahiert und können für alle Darstellungsformen gleich bedient werden.
Gängige Ebenen sind natürlich Feature-Ebenen wie zum Beispiel Vector, aber auch Cesium-3D-Tiles, Open Street Map-Ebenen und Gelände-Ebenen. Natürlich gibt es noch viele weitere Ebenen.
Jeder dieser Ebenen stellt eigentlich eine Datenquelle dar, die ich darstellen möchte. Und über die Karten kann ich nun Ebenen in 2D, 3D oder auch im Schrägluftbild darstellen, wenn denn dafür eine Implementierung vorhanden ist. Ein Gelände kann ich typischerweise nur in 3D darstellen,
obwohl man eigentlich auch eine Implementierung schreiben könnte, wie man ein Gelände in 2D darstellt. Ein weiterer wichtiger Aspekt der Gizwelt ist natürlich die Interaktion des Users mit der Karte. Das heißt, wenn der User die Karte klickt oder bewegt,
oder darin etwas zeichnen möchte, muss ich das irgendwie mitkriegen. Die zwei Renderer, Cesium und Open Layers, haben da sehr andere Ansätze. Dafür hat der Map Core diese Interaktion abstrahiert. Damit können sich einfach Selektionen oder Zeigerfunktionen wie das Bewegen der Maus abfangen
und dafür gewisse Geoinformation darstellen, zum Beispiel die Zeigerkoordinate. Ein weiterer Punkt, der auch sehr unterschiedlich ist bei Cesium und Open Layers, den wir verleitlicht haben, ist die Darstellung der Daten selbst. Gerade wenn es um Vektor- oder Feature-Daten geht,
möchte man die ja typischerweise in einer Art und Weise darstellen, damit sie Informationen für den Nutzer bieten. Man kann klassische Styles im Sinne von Vektor-Styles, eine Füllung, eine Linienticke, eine Linienfarbe angeben, aber man kann auch die Cesium 3D-Tiles, Declarative Styles, verwenden.
Und man kann die für alle Feature verwenden. Also Declarative Styles lassen sich nicht nur auf Cesium 3D-Tiles anwenden, sondern auch auf normale Vektor-Feature, wie zum Beispiel aus einem GeoJSON. Declarative Styles ermöglichen über eine Funktion, eine Expression und eine Style-Funktion
eine Klassifizierung zu ermöglichen über die Attribute der Feature. Ein weiteres Kernfeature des Virtual City Map Cores sind die 3D-Repräsentation. Wir haben uns eine parametrisierte 3D-Darstellung von 2D-Features überlegt.
Dabei lassen sich 2D-Feature über gewisse Attribute leicht und einfach extrudieren. Somit kann man auf Basis von 2D-Daten wie 2D-Footprints, aber auch 2D-Linien, 3D-dimensionale Objekte rendern. Zum Beispiel ein Kubus, aber auch eine Wand, um in einer Planung,
wenn man noch nicht genau so weiß, wie denn die endgültige 3D-Repräsentation einer Planung sein soll, schnell und einfach eine 3D-Visualisierung zu ermöglichen. Zudem, wenn man dann weiter ist in einer Planung, lauben wir natürlich auch das Einbinden von echten 3D-Modellen über die GLTF-Schnittstelle.
Die Einsatzbereiche des Virtual City Map Cores sind eigentlich relativ klar. Man kann den Map Core einfach in bestehende Webcast-Systeme einbinden. Man kann ihn auch als Drop-in-Ersatz für bestehende 2D-Karten in Embedded-Anwendungen verwenden
und man kann auch neue Apps damit entwickeln. Und eine neue App habe ich kurz entwickelt, um eine kleine Demo bereitzustellen. Diese ermöglicht eine 3D-2D Side-by-Side-View. Die zeigt die gängigsten Abstraktionen, die wir gerade besprochen haben,
basierend auf Open Data von Hessen. Und das Beispielprojekt gibt es natürlich auch zum Anfassen auf unserer GitHub-Seite. Das Ganze sieht so aus. Das ist nun die Stadt Marburg. Einmal links in 3D, einmal rechts in 2D.
Die Daten sind, wie gesagt, Open Data von Hessen. Links, Assizium 3D tiles, rechts Aspektor tile-Implementierung. Das Ganze gelingt, dass ich mich gleich bewege in der 2D- und der 3D-Karte. Und nun lassen sich die gängigen Abstraktionen hier mal darstellen.
Wir hatten vorher von den Interaktionen gesprochen. Die haben wir hier über einen Select-Knopf implementiert. Wie man sieht, kann ich nun Gebäudeinformationen abgreifen aus der Karte. Ich kriege hier eine Gebäudefunktion und eine GML-ID.
Und ich kriege Feedback, über was für ein Gebäude ich denn gerade unter meiner Maus habe. In 2D und in 3D. Über die System 3D tiles-Styling-Implementierung, dem sogenannten Declarative Style,
darüber haben wir auch gesprochen, habe ich hier eine kleine Funktion ermöglicht, die die Gebäudefunktion der Gebäude highlighten soll. Man sieht jetzt hier in Gelb die gewerblichen Gebäude, in Blau die öffentlichen Gebäude, und das grüne Gebäude ist das Gebäude, was man gerade ausgewählt hat.
Wir haben auch kurz über parametrisiertes 3D gesprochen, und wie das in der urbanen Planung doch hilfreich sein kann. Und dafür habe ich eine kleine Planungsebene eingespielt. Die sieht man hier dargestellt.
Im Endeffekt habe ich einfach die bereits vorhandenen Gebäude ausgeblendet und diese in grün gehighlighteten neuen Gebäude auf Basis der Footprints eingeführt. Im Endeffekt ist das nichts anderes als aus den Daten die genommene Höhe angewandt auf den Footprint und das darunter liegende Modell in System 3D tiles ausgeblendet.
Dann entstehen diese Quader. Das ist dann auch schon das gängigste dargestellt.
Obwohl wir gerade ein paar Keyfeatures des Virtual City Map Cores geshowcast haben, sind wir noch lange nicht fertig. Wir haben auf der Roadmap noch viele Dinge, die wir erledigen wollen, und ich habe drei Punkte, auf die ich sehr gespannt bin, mal gehighlightet. Das eine ist ein Kontext- und Config-Konzept.
Das soll heißen, man soll den Zustand einer Virtual City Map serialisieren und wieder deserialisieren können. Das hat natürlich zum Vorteil, dass sich Datenebenen, deren Darstellungsform, aber auch die Darstellungsform der Karten selber über JSON-Strukturen einfach konfigurieren lassen.
Die Karte, die ich gerade in der Demo gezeigt habe, hat alles hardcoded. Das heißt, die Ebenen, die man sieht, die Art und Weise wie die Ebenen aussehen, sind fix in das Programm eingebettet. Über eine JSON-Konfiguration ließe sich einfache eine Modifizierung auch durch weniger technisch versierte Nutzer ermöglichen.
Eine ganz wichtige Funktion für GISS-Anwendungen ist ein Editor. Damit soll ermöglicht werden, neue Feature zu erzeugen, aber auch bestehende Feature zu editieren. Und das auch in einem parametrisierten 3D-Umfeld.
Das heißt, das einfache Zeichnen einer Grundfläche und das Extudieren davon über Mausbewegungen soll ermöglicht werden. Ein Editor wäre dann die Grundlage dafür, auch komplexere Abfragen an die Karten zu ermöglichen. Und ganz spannend, wir entwickeln begleitend zum Map Core
auch eine Open Source UI. Das heißt, auf dem Map Core drauf soll eine gekoppelte UI kommen. Die UI, die ihr jetzt gerade in der Demo gesehen habt, das ist im Endeffekt View und Viewtify von mir zusammengesteckt,
damit es in einigermaßen aussieht. Aber die VCMapUI soll gewisse Interaktionen mit der Karte direkt darstellen. Und das ermöglicht eine Plug-and-Play-Entwicklung, was gerade für Forschungsprojekte oder Studierende es leicht und einfach machen soll, ihre Daten für ihr Konzept und ihr Proof of Concept leicht darzustellen.
Vielen Dank für eure Aufmerksamkeit. Ich hoffe, ihr konntet ein bisschen etwas mitnehmen. Ich habe den Link auf das Repository von unserer Demo auch nochmals auf dieses Slide gepackt, damit ihr euch das runterladen könnt und selber damit rumspielen könnt. Eventuell habt ihr noch ein paar Fragen,
die beantworte ich gerne nach dem Vortrag. Und sonst wünsche ich euch weiterhin viel Spaß auf der Foskis 22. Tschüss und auf Wiedersehen. Ja, danke Ben für diesen Vortrag. Interessant, was ihr da quasi veröffentlicht habt und als Open-Source-Software zur Verfügung gestellt habt.
Schön, dass du jetzt auch hier bist, um Fragen zu beantworten. Es sind zwar nur drei, wir haben aber noch ein bisschen Zeit. Vielleicht kannst du uns uns nach den Fragen nochmal eine kurze Live-Demo zeigen. Ja klar, gerne. Genau, fangen wir mit der Lizenz an, unter der Visi Map Core steht.
Kannst du da ein, zwei Sätze zu sagen? Ja, da kann man auch nicht so viel zu sagen. Es ist eine MIT-Lizenz. Also wir haben uns da an dem orientiert, was in NPM-Welten so üblich ist. Und das ist eine MIT-Lizenz. Dann gibt es noch zwei Fragen zum Thema 3D.
Welche Tools verwendet ihr, um Cesium 3D-Tiles herzustellen? Da verwenden wir ein eigenes Tool, das jetzt schon sehr lange bei uns existiert, was eigentlich dafür gedacht war, Citygamel zu 3D-Tiles zu konvertieren. Damit erzeugen wir fast alle 3D-Tiles. Wir haben externe Anbieter, die Meshes erzeugen aus Schrägluftbilder.
Da weiß ich, dass Shor ein häufiges Programm ist, das verwendet wird. Habe ich aber selber noch nie verwendet. Und in speziellen Fällen verwenden wir auch FME, die ja Wissen-Support haben für Cesium 3D-Tiles.
Alles klar. Leider nichts Open Source. Das sollte aber die Frage sehr umfassend beantwortet haben. Und dann noch eine letzte Frage. Kann ich auch eine hochaufgelöste 3D-Mesh einladen? Und so die transformierten Features stylen, selectieren und editieren?
Hochaufgelöstes 3D-Mesh. Ich weiß leider nicht ganz genau, was damit gemeint ist. Da weiß ich jetzt auch nicht so genau, was damit gemeint ist und was mit transformiert gemeint ist. Also wenn das ein Cesium 3D-Tiles-Ebene ist, die mit einem Badge-Table kommt,
das ist noch eine Voraussetzung, das muss natürlich gegeben sein, dann hat dieses Mesh auch Attribute, mit denen ich stylen kann. Und wenn das aber so ein klassisches Mesh ist, was keine Attribute hat, dann wird es schwieriger.
Da gibt es Möglichkeiten, gewisse nennen das irgendwie semantisches Mesh, wo ich über weitere Daten das Mesh sozusagen anreichere. Also zum Beispiel über zweite Footprints in der Klassifizierung von meinem Mesh erzeuge, wo ich dann sehe, okay, ich habe hier ein Footprint von einem Gebäude, ich habe das Mesh. Das heißt, ich kann jetzt dieses Gebäude in dem Mesh highlighten, so etwas geht.
Man kann natürlich auch mit weiteren Diensten arbeiten, um jetzt bei einem klassischen Mesh Durchschusspunkt berechnen, Anfrage stellen an den Dienst und Feature-Informationen an der Stelle zurückliefern. Vielleicht sogar auch Feature-Geometrie zurückliefern, wirklich auch ein Highlighting zu machen.
Diese Dinge sind alle möglich, technisch. Das Ding ist natürlich schon, dass ein Mesh oft sehr schick aussieht und auch sehr genau das repräsentiert, was die Kamera gesehen hat, aber semantisch natürlich relativ wertlos ist. Das heißt, man braucht da immer noch einen anderen Dienst, andere Daten, die die Semantik mitliefern.
Also was ist ein Baum, was ist ein Gebäude und welcher Baum ist es bzw. welches Gebäude ist das? Genau, das muss man immer ein bisschen aufpassen. Mit den Daten zumindest repräsentieren kann man beides und mit beidem kann man auch arbeiten. Wie gesagt, da wir noch ein bisschen Zeit haben, und ich bin ja ein bisschen Vorteil, ich sehe ja quasi was,
könnte ich vielleicht noch mal auf eine kleine Reise mitnehmen durch eine Demo? Ja, kann ich gerne machen. Dann kann ich umschalten und direkt loslegen. Genau, ich kann dir noch ein paar Sachen zeigen, die ich jetzt im Video nicht gezeigt habe und im Vortrag nicht vorkam. Das ist auch irgendwie ziemlich neu, dass man das so gestaltet, dieses Side-by-Side-View.
Man kann hier aber auch in eine fantastische Ansicht gehen. In diesem Link hat man halt die zweite Karte hier oben rechts. Das ist auch immer noch eine Demo. Ich kann vielleicht auch noch ein bisschen auf sagen, also der Hintergrund war, wieso wir das entwickelt haben,
dass es einfach einfacher sein soll, mit seinen 3D-Geodaten irgendwas anzufangen, ohne dass man jetzt dazu sehr in cesium sich einarbeiten muss, was ja doch eigentlich primär eine Rendering-Engine ist und auch eher von dieser grafischen Seite kommt, was technisch bietet und auch die Sprache, die es spricht.
Genau, und deshalb dieses 2D, 3D gleichzeitig zu bearbeiten und auf dieselbe Art und Weise zu bearbeiten, das kommt schon aus diesem Gedanke, da natürlich wir, die meisten von uns, aus dem GISS-Umfeld kommen und mit diesem 3D-Bereich, Grafikbereich nicht so zu Hause sind.
Das ist auf alle Fälle etwas, was eigentlich ganz nett ist, einfach so zu halten, was ich jetzt bei anderen Sachen so noch nicht direkt gesehen habe. Was auch noch stick ist, was ich gerne noch was zu sagen kann, ist der Aufwand, damit zu arbeiten. Natürlich, gut, ich habe das Ding mitentwickelt, das heißt, die Konzepte sind mir sehr vertraut,
aber ich habe für diese Demo einen halben Tag gebraucht. Mit allem, also die Datenaufbereitung nicht, die hat ein bisschen länger gedauert, aber so einfach diese Webseite zusammenzustöpseln, sollte einfach sein. Und das ist auch das Ziel, es soll einfach sein. Und zu der Roadmap kann ich auch noch ein bisschen was sagen.
Das ist jetzt weniger mit der Demo, aber das ist noch so was Schickes obendrauf. Zum Zeitpunkt des Vortages wusste ich noch nicht genau, wie weit wir kommen mit der Roadmap. Aber etwas, was wir jetzt gerade dran sind, sehr stark voranzutreiben, ist dieses Kontext-bezogene Serialisieren und Deserialisieren.
Das ist eigentlich noch spannend, gerade für Leute, die jetzt keine Entwickler sind, die vielleicht mehr einfach auf einer Datenstruktur arbeiten wollen. Ich kann den MapCore nutzen, um einen Datensatz mit anderen Datensätzen zu visualisieren
und ich kann das in einem Dienst speichern zum Beispiel. Also ich kann einen Dienst zur Verfügung stellen, der JSON-Daten zur Verfügung stellt, mit dem ich dann ziemlich schnell einen 3D-Viewer auf diesen Daten aufbauen kann. Und sozusagen die Verwaltung der Daten und die Zusammenstellung dieser Szene weniger Entwickler und Nutzer, sondern Projektnutzer auch zur Verfügung stellen kann.
Und das sollte relativ leicht gehen jetzt. Das ist unser Ziel, dass es jetzt weniger Entwickler sich da ransetzen müssen, um so eine Szene zu erzeugen. Genau. Ja, das klingt doch auf jeden Fall spannend.
Zum einen habe ich noch eine Frage und zum anderen ist noch eine im Chat aufgetaucht. Fangen wir mal mit der bzw. mit dem Fragen. Fangen wir damit mal an. Kann man beim Rendern durch in Klammern VMCL, WebGL auch Anti-Alasing aktivieren? Ja, kann man. Das ist tatsächlich ein Cesium-Renderer drin, der kann das nativ.
Und bei uns ist es ein Brüchenflag, den du setzen musst. Das muss halt einfach Anti-Alasing True Force an sein. Der verwendet auch WebGL unten drunter. Andere Renderer lassen wir nicht mehr zu. Genau. Es gibt auch keine Internet Explorer 11 Unterstützung oder sowas. Das haben wir alles rausgelegt.
Darüber reden wir nicht mehr. Das ist vorbei. Genau. Und es braucht ein bisschen was an Performance. Natürlich ist es eine 3D-Anwendung. Genau. Apropos 3D. Ich habe nicht viel Ahnung von 3D. Aber eine Frage habe ich natürlich dann doch. Wie sieht das mit Texturen aus?
Also Häuser, Bäume etc. Ja, genau. Wir haben hier untexturierte Daten genommen, weil das ganze Projekt ist Open Source. Also das, was ihr hier seht, das könnt ihr euch selber klonen auf GitHub und mit zwei Befehlen ausführen und starten und bei euch selber angucken. Und die Daten kommen da mit, weil das ist Open Data von Hessen.
Das heißt, die Daten liegen nicht irgendwo dezentral, sondern die werden mitgeführt in dem Paket. Und dafür müssen sie klein sein. Aber natürlich können die Daten texturiert sein. Das ist klar. Genau. Was wir nicht können oder noch nicht können, ist jetzt halt, die Texturen direkt im kleinen verpassen.
Das ist ein bisschen schwieriger. Genau. Es gibt auch Datenformate, die jetzt hier nicht ge-showcased sind, weil sie auch ein bisschen komplexer sind aufzubereiten. Punktwolken zum Beispiel, die natürlich dann auch ziemlich schick aussehen können. Da unterstützen wir auch eine Punktwolkeneinfärbung. Punktwolkeneinfärbung auch auf Attributen. Das geht auch.
Das ist dann auch spannend. Also wenn man mit Punktwolken arbeitet, kann man damit ziemlich schnell was visualisieren und auch in der Punktwolke im Client arbeiten. Highlighten, messen, auch Vita-Abfragen visuell prüfen kann man machen.
Ja, das klingt doch sehr spannend. Also von daher, ihr seid alle eingeladen, es auszuprobieren. Ich glaube, da wird sich der eine oder andere Download sicherlich finden, der heute dazukommt. Ben, ich danke dir für deinen Vortrag. Danke, dass du uns noch einen kurzen Live-Einblick gegeben hast, dass du die Fragen so geduldig beantwortet hast.
Schön, dass du auf der Foskes-Konferenz bist. Ja, danke euch fürs Machen.