IGNF / geoxygene-sig3d-appli

Scripts developed from 3D module of GeOxygene (https://github.com/IGNF/geoxygene)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Geoxygene 3D applications Build Status

3D Image

This project contains a set of 3D GIS applications developed from GeOxygene3D module from GeOxygene platform. It includes several published works :

Scripts were prepared to use more easily the code for street profile and sky openess calculation : scripts in the last release. Details about these scripts are described in the following sections.

Things to know

This is research work, so it is very probable that the project constains some bugs and project is not actively maintained, but do not hesitate to send an e-mail if you need help to use it.

Contact for questions and feedback

Mickaël Brasebin, Lastig/COGIT, mickael.brasebin at ign dot fr

Julien Perret, Lastig/COGIT, julien.perret at ign dot fr

System requirements

For running script and development:

  • Java (JDK 8 or more recent)

Only for development:

  • Eclipse
  • Maven The necessary developpers tools are the same as necessary for GeOxygene project, you can find an installation manual here.

Street profile calculation

Image of profile result

Introduction

The street profile code is dedicated to analyze 3D façade rhythm along a trajectory (a road for example). In order to help in this task, the code aims at calculating a discrete 3D skyline from both part of a street with information (such as ID of the concerned building and distance to the road). The result is exported as a 2D shapefile that allows to visualize and analyze the results in a classical GIS.

This code (in the package streetprofile) was developed during a Msc training course. The thesis is available here.

A demo class fr.ign.cogit.streetprofile.demo.Main.java is directly runnable as it uses data included in the project.

An executable is available in the folder executable of the project. All the geographic data used during the process are in the 3D shapefile format. Concerning buildings, it requires that the roofs and the facades have to be modelled in a same feature.

The executed code is in the class fr.ign.cogit.exec.ProfileCalculation.

Publication

If you use this script in a publication, please cite the following article :

@MastersThesis\{Fund12,
  author       = "Fund, Marina",
  title        = "Exploitabilit\'e des bases de donn\'ees 3D pour le calcul d'indicateurs urbains 3D",
  school       = "M2 Information G\'eographique \& M2 G\'enie urbain, Universit\'e Paris Est MLV, ENSG",
  month        = "sep",
  year         = "2012",
  type         = "Rapport de stage",
  keywords     = "3d, indicateur",
}

Algorithm

Image of the ray casting process

A 3D discretization is proceeded according to a curvilinear abscissa step (sXY) and an altitude step (sZ) like presented in the left figure. For each point, a ray is casted for each part of the trajectory (the right figure shows this for the left part of the trajectory) for each altitude from the minimal altitude of the scene to the maximal one. The first intersection between the ray and the 3D building layer is stored (if the distance is inferior than -d value). If a parcel layer is provided, only the buildings in the first parcel in the direction of the ray are considered in the process.

Inputs

The parameters of the algorithm can be shown with the -h parameter.

Some parameters are mandatory :

  • -buildings : the file path to the building shapefile. Either geometries are stored as 3D surfaces (Roofs and Walls must be modelled as a multi-surface in a unique feature), either they can be extruded according to an attribute with -extrude extrude-attribute and the minimal z is set to zero.
  • -trajectory : the file path to the analyzed trajectory. It must be represented as a LineString. If the file contains several linestrings, they are merged together.
  • -output : the output folder where all results will be stored

Others are optionnal :

  • -d : the maximal distance until buildings are considred (50 m by default)
  • -id : the id attribute from the points layer (ID by default). It is used to indicated which building is visible in a direction.
  • -o : the output file where points with attributes are stored (by default out.shp) + -parcels : a parcel shapefile. By activating this option, at each step of the algorithm. Only buildings that lay inside the first met parcel are kept during the process. + -sXY : the discretization step according to the curvilinear abscissa (4 m by default) + -sZ : the discretization according to the altitude (4 m by default).

A basic method to run the program is to execute the following command line :

./ProfileCalculation.sh -buildings buildings.shp -trajectory road.shp -output /home/mickael/temp/ -sXY 10-sZ 10 -d 200

Outputs

As output, the intersection points are stored as a 2D shapefile. Each point an attribute ID that contains the ID of the building (attribute -id) intersected by the ray and an attribute about the length of the ray.

A result in QGIS :

Image of generated geometry

Sky openess calculation

Image of generated geometry

Introduction

Sky openess is a 3D spatial indicator that assess the sky visibility from a given point. This indicator may be used to determine the comfort of a urban zone and some characteristics relative to Urban Heat Island effect.

This code (in the package exec) was developed for a research work about the influence of data quality on sky openess calcultion. The paper about this work is available here

An executable is available in the folder executable of the project. All the geographic data used during the process are in the 3D shapefile format.

The executed code is in the class fr.ign.cogit.exec.SkyOpeness.

Publication

If you use this script in a publication, please cite the following article :

@InProceedings\{Brasebin12,
  author       = "Brasebin, Micka{\"e}l and Perret, Julien and Musti\`ere, S\'ebastien and Weber, Christiane",
  title        = "Measuring the impact of 3D data geometric modeling on spatial analysis : illustration with Skyview factor.",
  booktitle    = "3u3d2012: Usage, Usability, and Utility of 3D City models",
  month        = "oct",
  year         = "2012",
}

Algorithm

The method proposed here allows the generation of the 3D geometry resulting from the sky openess calculation. A discrete ray casting is proceed according to a given angular step (-s) and the first intersection is considered if the distance if lesser than the given radius (-r).

Inputs

The parameters of the algorithm can be shown with the -h parameter.

A minimal set of parameters is mandatory :

  • -buildings filepath : the file path to the building shapefile. Either geometries are stored as 3D surfaces, either they can be extruded according to an attribute with -extrude extrude-attrib### Algorithmute and the minimal z is set to zero.
  • -points filepath : the file path to the points from which the calculation is proceeded. Either there are 3D points and the z is used, either they are 2D points and the z can be set at a given altitude with -z value
  • -o : the output points with attributes about sky openess indicators
  • -output : the output folder where all results will be stored.

Other parameters are optionnal :

  • About discretization :
  • -r : Radius of raycasting (500 m as default value)
  • -s : Number of points casted for 180° (180 as default value).
  • About geometries export (all geometries are stored in different file in order to save memory during the process) :
  • -id : the id attribute from the points layer. The ID must be unique, this information is used in the filename to store the output geometires.
  • -g2D : export the 2D geometry of polygon visibility limited by the input radius(what is visible at the height of the point).
  • -g3D : export the 3D geometry of what is visible from a point (like in the figure at the begin of this section)

A basic method to run the program is to execute the following command line :

./SkyOpeness.sh -buildings LOD_BUILDING_2012.shp -points trees.shp -output /temp/ -z 172 -r 100 -s 360 -id gid -g3D -g2D

Outputs

The is a shapefile with the geometries of the input points. It will contain several statistics about the measures processed during the calculation :

  • miniRadDis : distance to nearest object ;
  • maxRadDis : distance to furthest object or radius distance ;
  • avgRadDis : average distance to objects ;
  • varRadDis : std of distance distribution to objects ;
  • mnRDis2D : 2D distance to nearest object ;
  • avgRDis2D : 3D average distance to objects ;
  • openess : sky openess value between 0 and 1 ;
  • ratioSph : calculate the ratio of hit sucess / total number of hits ;
  • visSkySurf : the surface of visible sky ;
  • visVol : the volume of visible sky ;
  • visVolRa : the ratio of visible sky to potential visible sky.

If -g2D and/or -g3D, shapefiles will be written in the output folder . Each shapefile will be named according to attribute value.

Acknowledgments

  • This research is supported by the French National Mapping Agency (IGN)
  • Marina Fund for the development of street profil module

About

Scripts developed from 3D module of GeOxygene (https://github.com/IGNF/geoxygene)

License:Other


Languages

Language:Java 63.9%Language:HTML 33.3%Language:Shell 1.7%Language:Scala 1.0%