A library to generate buildings from local urban regulations.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib/native_libraries SimPLU experiments on Besac Jun 15, 2017
src Merge branch 'measures' Feb 19, 2019
.gitignore gitignore Nov 15, 2018
.travis.yml Updating travail Nov 16, 2018
Licence-en.html - header added to classes and LICENCE.txt files Feb 13, 2015
Licence-fr.html - header added to classes and LICENCE.txt files Feb 13, 2015
README.md Update README.md Dec 17, 2018
pom.xml update to java10 and replace xml files by json files Jun 26, 2018



Build Status

A library to automatically general built configurations that respect urban regulations and optimize a utility function.


This research library is developed as part of COGIT team researches concerning processing of urban regulation.

It provides an implementation of multi-dimensionnal simulated annealing algorithm to produce built configuration from a set of boxes constrained by urban regulation that optimizes a utility function.

The project is developed over 3D GIS Open-Source library GeOxygene concerning geometric operators and 3D visualization, librjmcmc4j for simulated annealing implementation and simplu3d-rules for geographical model and regulation management.

The official website is hosted on GitHub and the javadoc is deployed in the gh-pages branch of this project.

Conditions for use

This software is free to use under CeCILL license. However, if you use this library in a research paper, you are kindly requested to acknowledge the use of this software.

Furthermore, we are interested in every feedbacks about this library if you find it useful, if you want to contribute or if you have some suggestions to improve it.

Library installation

The project is build with Maven and is coded in Java (JDK 1.8 or higher is required), it has been tested in most common OS. If you are not familiar with Maven, we suggest installing developer tools and versions as described in GeOxygene install guide.

Vidéo and illustration

Generating a building with n boxes

Generating n buildings with 1 box

Different generations with various parcels

Test class

fr.ign.cogit.simplu3d.exec.BasicSimulator class using predefined resource files is runnable. It generates a built composed by a set of intersecting boxes.

public static void main(String[] args) throws Exception {

	// Loading of configuration file that contains sampling space
	// information and simulated annealing configuration
	String folderName = BasicSimulator.class.getClassLoader().getResource("scenario/").getPath();
	String fileName = "building_parameters_project_expthese_3.json";
	SimpluParameters p = new SimpluParametersJSON(new File(folderName + fileName));

	// Load default environment with no DTM (data are in resource directory)
	Environnement env = LoaderSHP.loadNoDTM(new File(

	// Select a parcel on which generation is proceeded
	BasicPropertyUnit bPU = env.getBpU().get(0);

	// Instantiation of the sampler
	OptimisedBuildingsCuboidFinalDirectRejection oCB = new OptimisedBuildingsCuboidFinalDirectRejection();

	// Rules parameters.8
	// Distance to road
	double distReculVoirie = 2;
	// Distance to bottom of the parcel
	double distReculFond = 0;
	// Distance to lateral parcel limits
	double distReculLat = 4;
	// Distance between two buildings of a parcel
	double distanceInterBati = 0;
	// Maximal ratio built area
	double maximalCES = 0.5;

	// Instantiation of the rule checker
	SamplePredicate<Cuboid, GraphConfiguration<Cuboid>, BirthDeathModification<Cuboid>> pred = new SamplePredicate<>(
			bPU, distReculVoirie, distReculFond, distReculLat, distanceInterBati, maximalCES);

	// Run of the optimisation on a parcel with the predicate
	GraphConfiguration<Cuboid> cc = oCB.process(bPU, p, env, 1, pred);
	// Writting the output
	SaveGeneratedObjects.saveShapefile(p.get("result").toString() + "out.shp", cc, bPU.getId(), 0);

Documentation and publications

For more information about this code, the generation process and the underlying models are described in the PhD of Mickael Brasebin (French document) :

Brasebin, M. (2014) Les données géographiques 3D pour simuler l'impact de la réglementation urbaine sur la morphologie du bâti, Thèse de doctorat, spécialité Sciences et Technologies de l'Information Géographique, Université Paris-Est, apr 2014

Contact for feedbacks

Mickaël Brasebin & Julien Perret COGIT Laboratory ({surname.name} (AT) {gmail} (POINT) {com})

Users and demo


  • This research is supported by the French National Mapping Agency (IGN)
  • It is partially funded by the FUI TerraMagna project and by Île-de-France Région in the context of e-PLU project
  • Mickaël Borne for improvements in the code and for refactoring
  • Imran Lokhat for tests and improvements about imrpoving the pipeline of simulation
  • ISC-PIF - Paul Chapron and Romain Reuillon for proposing methods dedicated to model exploration and simulation distribution