3dfier

3dfier: automatic reconstruction of 3D city models - Published in JOSS (2021)

https://github.com/tudelft3d/3dfier

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 8 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    5 of 18 committers (27.8%) from academic institutions
  • Institutional organization owner
    Organization tudelft3d has institutional domain (3d.bk.tudelft.nl)
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

3d 3dgis citygml cityjson gis laz lidar yaml-cpp

Keywords from Contributors

interpolation meshes blackhole gravitational-lenses parallel energy-systems pde exoplanets stellar hydrology

Scientific Fields

Earth and Environmental Sciences Physical Sciences - 40% confidence
Last synced: 6 months ago · JSON representation ·

Repository

The open-source tool for creating 3D models

Basic Info
Statistics
  • Stars: 596
  • Watchers: 43
  • Forks: 115
  • Open Issues: 29
  • Releases: 28
Topics
3d 3dgis citygml cityjson gis laz lidar yaml-cpp
Created over 10 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Contributing License Citation

README.md

GitHub license docs GitHub issues DOI

3dfier

Takes 2D GIS datasets (e.g. topographical datasets) and "3dfies" them (as in "making them three-dimensional") by lifting every polygon to 3D. The elevation is obtained from a point cloud (we support LAS/LAZ at this moment), and the semantics of every polygon is used to perform the lifting. That is, water polygons are extruded to horizontal polygons, buildings to LOD1 blocks, roads as smooth surfaces, etc. Every polygon is triangulated (constrained Delaunay triangulation) and the lifted polygons are "stitched" together so that one digital surface model (DSM) is constructed. Our aim is to obtain one DSM that is error-free, i.e. no intersecting triangles, no holes (the surface is watertight), where buildings are integrated in the surface, etc. This surface will then be used as input in simulation software for instance.

This video illustrates the process and what 3dfier is about.

The lifting options can be configured in the YAML file provided, an example is provided in /resources/config_files/myconfig.yml. Any 2D input (which should be a planar partition) can be used as input, and each class must be mapped to one of the following:

  1. Building
  2. Terrain
  3. Road
  4. Water
  5. Forest
  6. Bridge
  7. Separation (used for walls and fences)

It is possible to define new classes, although that would require a bit of programming.

Output is in the following formats: OBJ, CityGML, CityJSON, CSV (for buildings only, i.e. their ID and height (ground+roof) are output in a tabular format), PostGIS, and STL. The ID of each polygon is preserved, and there is a 1-to-1 mapping between the input and the output.

If you use it, feedback is very much appreciated.

Documentation

The 3dfier documentation has extensive information on the installation, usage, and how 3dfier works.

If you use 3dfier in a scientific context, please cite this article:

Ledoux H, Biljecki F, Dukai B, Kumar K, Peters R, Stoter J, and Commandeur T (2021). 3dfier: automatic reconstruction of 3D city models. Journal of Open Source Software, 6(57), 2866.

DOI

@article{3dfier, author = {Ledoux, Hugo and Biljecki, Filip and Dukai, Balázs and Kumar, Kavisha and Peters, Ravi and Stoter, Jantien and Commandeur, Tom}, doi = {10.21105/joss.02866}, journal = {Journal of Open Source Software}, number = {57}, pages = {2866}, title = {3dfier: automatic reconstruction of 3D city models}, volume = {6}, year = {2021} }

LAS/LAZ Pointcloud

We expect the LAS/LAZ to be classified according to the ASPRS Standard LIDAR Point Classes v1.4 (Table 4.9 of this PDF), and at a minimum these should be defined:

  • 0-1: Created, never classified and/or unclassified
  • 2: Ground
  • 3-5: Vegetation

If the vegetation is not classified or not filtered out, then buildings might be taller and there might be artefacts in the terrain.

Binary releases for Windows and Mac OS X

In order to make easy use of 3dfier we created pre-build binaries which can be downloaded from the releases page.

Download the latest release and unzip the archive in a easy to find location, not in the download folder of your browser.

To be able to quickly test 3dfier one can download the example dataset and unzip the archive in the folder of 3dfier.

Test data

In the folder example_data (download example dataset) there is a small part of the BGT datasets (2D 1:1k topographic datasets of the Netherlands), and a part of the AHN3 LIDAR dataset that can be used for testing. The resulting model (in OBJ) can be found in example_data/output/test_area.obj

Further, there is an open data website that contains 3D models of a few Dutch cities, generated with 3dfier.

Validate config file

The configuration is stored in YAML format and needs to be valid for the parser to read the file. Config files can be schema validated using YAML Lint

Run 3dfier:

Windows Open a command line (click start and type command or cmd). Using the command line browse to the folder where you extracted the example files and run: 3dfier myconfig.yml -o output.ext

Mac OS X and Linux Open a console. Using the console browse to the folder where you extracted the example files and run: $ ./3dfier myconfig.yml --OBJ output.obj

Docker

3dfier offers a alpine base image which tries to give you as much freedom for your vector data source as possible. Vector data is read by GDAL/OGR.

To run 3dfier over Docker simply execute:

$ docker run --rm --name 3dfier -v <local path where your files are>:/data tudelft3d/3dfier:<tag> 3dfier <name of config file> <... 3dfier parameters>

All your input data needs to be in <local path where your files are> and in the config file you need to reference your input data relative to <local path where your files are>. To achieve this either move your data and config into <local path where your files are> (and subdirectories), or set <local path where your files are> to the lowest common ancestor that contains all the data and config files you need.

Keep in mind that <local path where your files are> need to be writable by any user, otherwise your output won't be saved.

For instance to run it on the example data set (on Linux):

$ cd 3dfier/example_data
$ docker run --rm -it -v 3dfier/example_data:/data tudelft3d/3dfier:latest 3dfier testarea_config_unix.yml --OBJ test.obj

There is also a tutorial on how to generate a 3D model with 3dfier.

Prepare BGT data

For preparing BGT data as input for 3dfier look at resources/BGT_prepare/ReadMe.md

Owner

  • Name: 3D geoinformation research group at TU Delft
  • Login: tudelft3d
  • Kind: organization
  • Location: Delft, the Netherlands

JOSS Publication

3dfier: automatic reconstruction of 3D city models
Published
January 26, 2021
Volume 6, Issue 57, Page 2866
Authors
Hugo Ledoux ORCID
Delft University of Technology, the Netherlands
Filip Biljecki ORCID
National University of Singapore, Singapore
Balázs Dukai ORCID
Delft University of Technology, the Netherlands
Kavisha Kumar
Delft University of Technology, the Netherlands
Ravi Peters
Delft University of Technology, the Netherlands
Jantien Stoter
Delft University of Technology, the Netherlands
Tom Commandeur
Delft University of Technology, the Netherlands
Editor
Arfon Smith ORCID
Tags
GIS 3D city modelling

Citation (CITATION.cff)

# YAML 1.2
---
authors: 
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Ledoux
    given-names: Hugo
    orcid: "https://orcid.org/0000-0002-1251-8654"
  -
    affiliation: "National University of Singapore, Singapore"
    family-names: Biljecki
    given-names: Filip
    orcid: "https://orcid.org/0000-0002-6229-7749"
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Dukai
    given-names: "Balázs"
    orcid: "https://orcid.org/0000-0003-0193-5863"
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Kumar
    given-names: Kavisha
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Peters
    given-names: Ravi
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Stoter
    given-names: Jantien
  -
    affiliation: "Delft University of Technology, the Netherlands"
    family-names: Commandeur
    given-names: Tom
cff-version: "1.1.0"
date-released: 2021-01-26
doi: "10.21105/joss.02866"
message: "If you use this software, please cite it using these metadata."
repository-code: "https://github.com/tudelft3d/3dfier"
title: "3dfier: automatic reconstruction of 3D city models"
...

GitHub Events

Total
  • Issues event: 1
  • Watch event: 39
  • Issue comment event: 1
  • Fork event: 7
Last Year
  • Issues event: 1
  • Watch event: 39
  • Issue comment event: 1
  • Fork event: 7

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 1,256
  • Total Committers: 18
  • Avg Commits per committer: 69.778
  • Development Distribution Score (DDS): 0.477
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Tom Commandeur t****r@t****l 657
Hugo Ledoux h****x@t****l 451
Ravi Peters r****s@t****l 60
Maarten Pronk g****t@e****l 23
Balázs Dukai b****i@g****m 16
Ivan Paden i****n@t****l 13
dependabot[bot] 4****] 10
Filip Biljecki f****i@g****m 7
tjfcommandeur D****1@h****m 5
Ken Arroyo Ohori k****i@t****l 3
Arfon Smith a****n 2
Anna Labetski a****i@g****m 2
vvmruder v****r 2
Clemens Rudert c****t@p****e 1
Karsten Deininger k****r@b****h 1
Rohan Gautam r****m@g****m 1
Stelios Vitalis s****s@g****m 1
tcommandeur t****r@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 73
  • Total pull requests: 31
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 37
  • Total pull request authors: 9
  • Average comments per issue: 1.29
  • Average comments per pull request: 1.42
  • Merged pull requests: 26
  • Bot issues: 0
  • Bot pull requests: 13
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • kad-vestjg (8)
  • balazsdukai (8)
  • hugoledoux (6)
  • Ylannl (5)
  • tcommandeur (5)
  • vvmruder (4)
  • Athelena (3)
  • m-gerhold (2)
  • LeslieIng (2)
  • PURNIMA1298 (2)
  • gmorass (2)
  • elenaVal (1)
  • Aimingggg (1)
  • ghost (1)
  • InigoD (1)
Pull Request Authors
  • dependabot[bot] (14)
  • balazsdukai (6)
  • vvmruder (3)
  • Ylannl (3)
  • arfon (2)
  • RohanGautam (1)
  • fossabot (1)
  • kdeininger (1)
  • fbiljecki (1)
Top Labels
Issue Labels
bug (3) enhancement (3)
Pull Request Labels
dependencies (14)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 19
proxy.golang.org: github.com/tudelft3d/3dfier
  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 2.7%
Stargazers count: 2.9%
Average: 4.2%
Dependent packages count: 5.4%
Dependent repos count: 5.7%
Last synced: 6 months ago

Dependencies

.github/workflows/docker-image-build.yml actions
  • actions/checkout v2 composite
.github/workflows/docker-image-publish.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/metadata-action v3 composite
.github/workflows/exe_build.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact master composite
docs/Dockerfile docker
  • jekyll/builder latest build
  • jekyll/jekyll latest build
docs/docker-compose.yml docker
  • result/latest latest
docs/Gemfile rubygems
  • github-pages >= 0 development
docs/Gemfile.lock rubygems
  • activesupport 4.2.11.1
  • addressable 2.8.0
  • bundler 2.0.2
  • coffee-script 2.4.1
  • coffee-script-source 1.11.1
  • colorator 1.1.0
  • commonmarker 0.17.13
  • concurrent-ruby 1.1.5
  • dnsruby 1.61.3
  • em-websocket 0.5.1
  • ethon 0.12.0
  • eventmachine 1.2.7
  • execjs 2.7.0
  • faraday 0.16.2
  • ffi 1.11.1
  • forwardable-extended 2.6.0
  • gemoji 3.0.1
  • github-pages 200
  • github-pages-health-check 1.16.1
  • html-pipeline 2.12.0
  • http_parser.rb 0.6.0
  • i18n 0.9.5
  • jekyll 3.8.5
  • jekyll-avatar 0.6.0
  • jekyll-coffeescript 1.1.1
  • jekyll-commonmark 1.3.1
  • jekyll-commonmark-ghpages 0.1.5
  • jekyll-default-layout 0.1.4
  • jekyll-feed 0.11.0
  • jekyll-gist 1.5.0
  • jekyll-github-metadata 2.12.1
  • jekyll-mentions 1.4.1
  • jekyll-optional-front-matter 0.3.0
  • jekyll-paginate 1.1.0
  • jekyll-readme-index 0.2.0
  • jekyll-redirect-from 0.14.0
  • jekyll-relative-links 0.6.0
  • jekyll-remote-theme 0.4.0
  • jekyll-sass-converter 1.5.2
  • jekyll-seo-tag 2.5.0
  • jekyll-sitemap 1.2.0
  • jekyll-swiss 0.4.0
  • jekyll-theme-architect 0.1.1
  • jekyll-theme-cayman 0.1.1
  • jekyll-theme-dinky 0.1.1
  • jekyll-theme-hacker 0.1.1
  • jekyll-theme-leap-day 0.1.1
  • jekyll-theme-merlot 0.1.1
  • jekyll-theme-midnight 0.1.1
  • jekyll-theme-minimal 0.1.1
  • jekyll-theme-modernist 0.1.1
  • jekyll-theme-primer 0.5.3
  • jekyll-theme-slate 0.1.1
  • jekyll-theme-tactile 0.1.1
  • jekyll-theme-time-machine 0.1.1
  • jekyll-titles-from-headings 0.5.1
  • jekyll-watch 2.2.1
  • jemoji 0.10.2
  • kramdown 1.17.0
  • liquid 4.0.0
  • listen 3.1.5
  • mercenary 0.3.6
  • mini_portile2 2.8.1
  • minima 2.5.0
  • minitest 5.12.2
  • multipart-post 2.1.1
  • nokogiri 1.14.3
  • octokit 4.14.0
  • pathutil 0.16.2
  • public_suffix 3.1.1
  • racc 1.6.2
  • rb-fsevent 0.10.3
  • rb-inotify 0.10.0
  • rouge 2.2.1
  • ruby-enum 0.7.2
  • ruby_dep 1.5.0
  • rubyzip 2.0.0
  • safe_yaml 1.0.5
  • sass 3.7.4
  • sass-listen 4.0.0
  • sawyer 0.8.2
  • terminal-table 1.8.0
  • thread_safe 0.3.6
  • typhoeus 1.3.1
  • tzinfo 1.2.10
  • unicode-display_width 1.6.0
vcpkg.json vcpkg
  • boost-chrono *
  • boost-filesystem *
  • boost-geometry *
  • boost-locale *
  • boost-program-options *
  • boost-system *
  • cgal *
  • gdal *
  • lastools *
  • libpq >=16.2
  • yaml-cpp *