3D Connection Maps

Introduction

It is difficult to find tools to set-up thematic maps showing connections or dependencies between different spatial features (e.g., good imports/exports of the World’s countries, flight connections between airports, or chat contacts between Internet users). This project aims to bridge this gap and make a module as a part of the new ‘WorldViz’ framework, which is based on the existing 52\xB0North Triturus. It will use Java and X3D / X3DOM.

The main objective of this project is to provide better thematic representations of graphs in 3D-space based on real life scenarios. For example, we would like to plot a directed graph, which shows the various connections between countries based on their trade volume onto a 3-dimensional map. Another example is to plot airplane routes on a worldwide map. All this generally would take a lot of time. The main aim of this project is to simplify such tasks.

To achieve this, we will use Pajek.Net files as an input. These files will contain the raw data about the connection map. An XML document will specify cartographic scene design for our connections, e.g. how to represent various objects (vertices, edges, annotations, arrows and all other representation tools that help in aesthetic cartographic design). Furthermore, the module will generate an X3D/X3DOM scene which can be displayed in a Web-browser. We would like the user to manipulate the created scene by clicking on a node, changing the viewpoint, zooming and so on. This would make user interaction much more customizable. At the end of the project, we would look towards representation of connection maps in a beautiful manner on Google Earth, by using the KML format.

Task management: https://trello.com/b/890k2iEM/connection-maps

Temporary Repository: https://github.com/cDanowski/worldviz/

Blog Posts

Introductory Blog Post: http://blog.52north.org/2015/05/27/3d-connection-maps/

Midterm Blog Post: http://blog.52north.org/2015/06/26/3d-connection-maps-midterm-post/

Final Blog Post: http://blog.52north.org/2015/08/20/3d-connection-maps-2/

Midterm Demo

Introduction

This demo consists of three main parts:
  • Where to download the repositories from? What are the important applications that should be downloaded in order to get a graphical output?
  • Which program should be run in the project? What are the inputs that should be provided to the program?
  • How to visualise the demo?

Part 1

  • In order to download our project, visit https://github.com/cDanowski/worldviz and download the zip file present.
  • Our Maven project can be run using Netbeans or Eclipse.
  • For viewing the output files, we recommend using BS Contact, which can be downloaded from here - www.bitmanagement.com/en/download
  • If you are interested in an Open Source application for opening the output files, then http://freewrl.sourceforge.net/ is a good option.
  • You can also use any modern browser instead of downloading an X3D reader.

Part 2

  • After opening the project, go to the package named org.n52.v3d.worldviz.featurenet.scene and open the file named FeatureNetTestGUI.java
  • Upon running of the file, a Graphical User Interface would be presented to the user, wherein there are three fields that have to be filled.
  • The first field is a raw data file, which is in the form of a Pajek.net file.
  • The second field is a Configuration file. This file can provide various configuration styles for the graphical output file.
  • The third field is the destination directory, in which you can specify which folder the output file should go into. By default, if nothing is specified, the output will saved in the test folder.
  • If you do not have an X3D reader, then choose the X3DOM option present. This will make sure that, the output file will have a format of '.html' and not '.x3d'

Part 3

  • The output file can be opened using any of the programs mentioned above.
  • For further understanding of the output generated, go to midterm_demo/ConnectionGraphOnWorldMap/connectiongraphs to find different visualisations.
  • These visualizations can be easily be manipulated and users are encouraged to do so!
You can see the entire video series over here - https://www.youtube.com/playlist?list=PL1wKgNSjtqorjWNCQ_DX9UyOv9EBgWoMl

Weekly Reports

Report Week 1

Status

  • We have set up our initial repository at - github.com/cDanowski/worldviz - This was done from scratch and has taken some time for us.
  • We integrated Christian and Benno’s project into our repository - EarthEncounter.
  • We have set up working environment - We had to use few key external libraries and eliminate expressions which were earlier in German.
  • We have also generated, Classes for creating FeatureNets and have integrated them along with the Pajek Reader, so as to generate abstract FeatureNets in the future.
  • We have had discussions, on how our model for development has to be, and these have been very productive.

Problems

  • We are yet to integrate our current repository into the main repository as we have a few licensing issues.

Next tasks

  • We have to find similar Classes between, EarthEncounter and to WorldViz, so that we increase our productivity.
  • Currently, all our libraries are present in .jar files. We are going to add Maven support to our project.
  • Creation of FeatureNet-scene, simple X3D output routine for the abstract scene Java class for cartographic presentation parameters.
  • Create an initial XML configuration file to define the mapping of feature-nets to visualizations

Report Week 2

Status

  • We have created an abstract FeatureNet-scene
  • We found similar Classes between EarthenCounter and WorldViz, after this we decided not to split to both projects from our current repository
  • We have integrated Maven support into our project
  • We have also generated, Classes for creating FeatureNets and have integrated them along with the Pajek Reader, so as to generate abstract FeatureNets in the future.
  • We now use an XML Configuration file, for specifying style parameters of the X3D file, and have used XStream for its serialization
  • For the serialization of the XML file, we have used XStream and have made appropriate Classes for the same
  • We have created a simple X3D output routine for the abstract scene generated earlier
Giving a screenshot of this scene is too mainstream - Have a look at it over here

Problems

  • Since the project is in it's early stages, and all three of us (Benno, Christian and Adhitya) write code simultaneously, we have agreed that its better that we keep the project in Christian's repository for now.

Next tasks

  • Check whether the current model, is in accordance with the visualization model
  • It will be interesting to include other visualizations such as ribbons and arcs

Report Week 3

Status

  • We have added JUnit Tests to simplify the testing of our existing Classes
  • To improve angle calculation between lines, Christian has added an important Class titled SceneSymbolTransformer

You can find the commits to both our tasks over here and here

Problems

  • A mapping is to set a real world (X, Y Z) Point to (X, Z, -Y) in the X3D-scene- How should FeatureNet output be adjusted to that?
  • Benno will find a solution for generating X3D primitives into abstract 'connection' entities
  • Have a look at test\graph.x3d in the repository and the Label of Vertex 4 in particular - How do we handle such cases?

Next tasks

  • We will analyse the current implementation of WvizConnectionMapSceneX3d
  • How will the XML-schema change to support classification of vertices/edges/arcs?
  • How to "norm(alize)" different coordinate systems to our scene coordinate system?
  • How relations between vertices can be displayed using X3D?

Report Week 4

Status

  • We have created a transformation class to transform between geocoordinates and scene-coordinates. For Example, the geocoordinates of "North America" using the WGS84 (World Geodetic System 1984) coordinate reference system is -90 45 0. We have created a norm transformation class inorder to have fixed spatial extent regrarding the XZ-plane of the X3D coordinate system. Therefore, we can keep a uniform scale factor for geometries like nodes and edges. Additionally, the aspect-ratios with respect to x, y, and z coordinates will be preserved by this transformation. A demo for this feature can be found over here.
  • Our existing Classes had to be refactored, according to the above. You can find the Commit for that over here.

Problems

  • We had the problem of Overlapping Labels, and we have taken the Billboard approach for solving it. You can read about it more over here.

Next tasks

  • Adhitya will be reading about PROTO declaration in X3D, and create few examples so that it is easier for us to code in the future.
  • Christian will be implementing an abstract base scene class that holds all common style-relevant class attributes and general methods like writeLine() - Currently, this is being held by this Class and should be removed.

Report Week 5

We are already into Week 5! Time flies when you are working on something really interesting!

Status

  • We have started logging our repository.
  • Investigating / Reading about and testing Extrusion-element to check whether it can be used to display connections
  • Benno, has collected important data for a Connection Map
  • Preparation of midterm demo

Problems

  • We have found that PROTO Declaration was not the way to go, as it is not supported by X3DOM and therefore we are not going to use this declaration in our project.

Next tasks

  • Discussion of classification scheme - how can our XML-schema (configuration file) change to support classification of vertices/edges. Classification means e.g. to have different colors for different vertices/edges (maybe dependent to a certain attribute)
  • It will be interesting to include other visualizations such as ribbons and arcs

Report Week 6

I (Adhitya) was partially absent this week, due to some College work

Status

  • We have set up a proper demo with a GUI, in our repository. This can be found over here
  • Provided more examples of Connection Maps on a World Scene. This can be found over here
  • Appearance parameter has been adjusted. This can be found over here
  • New data has been added which contains import and export relationship. This can be found over here
  • A new transformer has been added that is able to normalize. This can be found over here
  • A CSV reader has been added to the repository. This can be found over here
  • More connections have been added. This can be found over here

Problems

  • We have decided to focus on Extrusions and not use PROTO anymore

Next tasks

  • Code review of an experienced programmer.
  • More proper usage of Weights
  • Create new FeatureNet Scene

Report Week 7

Status

  • With the import-export data, that we had obtained last week, we have built FeatureNets with them, and have made them into Connection Maps. These maps can be found over here
  • We have added various different connections into our Connection Maps. More suggestions are welcome! Find the current example over here
  • Improvements in logging have been made over various files

Problems

  • The specific country named "Cote d'Ivoire" was giving us problems, because of the apostrophe in the middle. We have decided to remove the apostrophe and keep it as "Cote d Ivoire" for now. Similarly, in the past we have renamed "Asia & Oceania" to "Asia and Oceania"
  • While including curved arrows in the Connection Maps, our existing SceneTransformer was not enough, and additional capabilities were added to it.
  • Our import-export connection map, is currently congested. We will discuss how to remove it.

Next tasks

  • There is a lot of hardcoding, while adding new connections, all this should be moved to the XML Configuration file.
  • More discussion of the classification scheme
  • Do we convert the CSV file into a Pajek.net file and then follow the existing workflow?

Report Week 8

Status

  • Refactrored some of our classes for better understanding. This can be found over here
  • Added ellipses for arcs, instead of circles. Find the commit over here
  • Examples including right-clicking of objects, have been added. The commit can be found over here

Problem

  • We had different suggestions this week, on how to proceed with the XML schema and the general classification scheme. Currently, all of us (Benno, Christian and Adhitya) have agreed that, we will keep it simple for now, and work on general schemas.

Next tasks

  • Modification of classification scheme - Adding ColorMappers, WidthMappers
  • More user interactivity with scene

Report Week 9

Some really good progress this week! Check this file out - It looks really interesting!

Status

  • XStream classes for ColorMapper and WidthMapper were added [ here ]
  • These Mappers were then added into the X3D and X3DOM files [ here ]
  • Functionality has been added to hide Relations in Connection Maps. [ here ]
  • Functionality to display ColorMapper and WidthMapper attributes in X3DOM scene [ here ]
  • Both the Mappers need to be sorted before it's sent to the module. So, that had to be added as well. [ here ]
  • Stroke parameter has been removed and has been replaced with WidthMapper[ here ]
  • A new schema for XML configuration file has been proposed. This will be added sometime soon [ here ]

Problem

  • Our existing Mappers are in Java, and so the question of how to call them has arisen, during the week. Both Christian and Benno, feel that the Mappers can be converted to JavaScript and then be integrated into the X3DOM scene, for dynamic generation.

Next tasks

  • Talk about scientific publication of the project results
  • Conversion of existing Java Mappers into JavaScript
  • Animation of Relations
  • Better dealing with congestion

Report Week 10

The scene looks better and better with each progressing week! Take a look at it, over [ here ]

Status

  • Our colorMappers were converted into JavaScript [ here ]
  • Weight parameters were added into our X3DOM scenes [ here ]
  • Added dynamic color changing ability[ here ]
  • Functionality was added to change shape of connections dynamically[ here ]
  • Scenes can now be exported! [ here ]
  • Nodes are highlighted using different colors [ here ]
  • Functionality to delete particular weights [ here ]
  • Almost all hardcoded values have been removed and can now be modified using the XML Configuration file [ here ]

Problem

  • Our existing Mappers were in Java, so we converted them into JavaScript
  • Investigate why, after exporting a scene the size increases
  • Fix Maven paths

Next tasks

  • Talk about scientific publication of the project results

Report Week 11

Let us know about your thoughts! [ here ] (The link is not broken, it takes a little while to load)

Status

  • Labels are now hidden [ here ]
  • Various demos have been added [ here ]
  • Added option of importing CSV file in demo [ here ]

Problem

  • A problem that we have is overlapping of nodes. Christian and I(Adhitya), had a very lengthy discussion this week, on how to reduce it. Both of us have a different opinion on how to do it. Christian, believes it can be done by reducing the node sizes. I(Adhitya) on the other hand, feel it can be done by increasing the Bounding Box size. However, the final decision will be taken after consideration with Benno.
  • Should a user require an Internet connection, for using this project? Currently, our JavaScript files are hosted at Github. Should we change that, and include it in the HTML page itself?

Next tasks

  • Talk about scientific publication of the project results
  • Mapping of nodes according to attributes, such as Population and Land area

Report Week 12

We have created a Github page [ here ]

Status

  • A worldmap has been added to the background [ here ]
  • Added CSS for table [ here ]
  • Added Color chooser [ here ]
  • Height ratio parameter has been added [ here ]

Problem

  • With respect to our previous problem regarding node sizes, all of us have agreed NOT to change the bounding box dimensions
  • We also agreed, that an Internet Connection would be required for a user and therefore all JavaScript files have been outsourced.

Next tasks

  • Create demo and screencast
  • Finalize documentation

Report Week 13

We have created a new Github repository [ here ]

We created a new Github page with the demos [ here ]

Status

  • We finalised our project discussion

Next tasks

  • Code review
  • Continuation of the project
Our discussions will follow on the Trello board : [ here ]

Topic revision: r35 - 27 Jun 2016, UnknownUser
Legal Notice | Privacy Statement


This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback