SimPLU3D est un ensemble de bibliothèques Java Open-Source qui permet de simuler des formes bâties 3D à partir de contraintes morphologiques en optimisant une fonction numérique. Ces codes peuvent être utilisés pour questionner le rapport entre des contraintes morphologiques (par exemple, issues de réglementations locales d'urbanisme) et les formes produites à l'échelle du quartier ou de l'agglomération. L'approche de SimPLU3D est générique dans le sens où il est possible de définir ses propres contraintes, fonctions d'optimisation ou types de formes.
Cette bibliothèque a notamment été utilisée pour modéliser des formes bâties à partir de contraintes issues de Plans Locaux d'Urbanisme (PLU) et permet de répondre à ce type de questions :
L'ensemble de ces bibliothèques est disponible dans l'organisation GitHub SimPLU3D et est développé et maintenu par le laboratoire LASTIG de l'Institut National de l'Information Géographique et Forestière.
SimPLU3D is a set of Java Open-Source libraries that allows the simulation of 3D built configurations that optimize a numerical utility function under the respect of morphological constraints.
These libraries are used to question the relations between morphological constraints (that may appear in local urban regulation) and the produced urban fabric at the scale of a district or a whole city. The SimPLU3D approach is generic, as it is possible to use customized constraints, utility functions or type of geometric shapes.
When applied on local urban regulation, this library is notably used to answer to the following questions :
All the necessary libraries are available in the SimPLU3D GitHub organization and are developed and maintained by the LASTIG laboratory from the French IGN.
Décembre 2018 : Ouverture de la nouvelle page d'accueil et mise en ligne d'un tutoriel .
Mars 2018 : Article 3D urban data to assess local urban regulation influence publié dans le journal Computer Environment and Urban System.
Février 2018 : Mise en ligne de la vidéo de présentation des recherches de l'axe "Analyse de l’espace et de ses dynamiques" - Séminaire d'interconnaissance de l'I-SITE Paris-Est.
December 2018 : Creation of a new home page and of a tutorial (only in French but examples codes are commented in English).
March 2018 : Article 3D urban data to assess local urban regulation influence published in Computer Environment and Urban System journal.
February 2018 : Video presenting LASTIG reasearches about Spatial Dynamics is online with SimPLU3D results.
La simulation avec SimPLU3D nécessite trois entrées principales :
Simulating with SimPLU3D requires three main inputs :
Les bibliothèques de SimPLU3D permettent notamment :
The SimPLU3D libraries embed different functions :
Les bibliothèques de SimPLU3D ont été utilisées dans différents contextes opérationnels et de recherche :
SimPLU3D libraries are used for operationnal and research applications :
Les bibliothèques de SimPLU3D sont codées en Java (la version 8 de la JDK est requise) et construites avec Maven. Elles sont régulièrement déployées sur le serveur Maven de l'IGN (https://forge-cogit.ign.fr/nexus/#welcome). L'installation s'effectue simplement en créant un projet qui pointe vers les dépendances de SimPLU3D :
SimPLU3D libraries are written in JAVA (JDK 8 or higher is required) and built with Maven. They are regularly deployed on IGN Maven repository (https://forge-cogit.ign.fr/nexus/#welcome). The install of SimPLU3D only requires to add the dependency and the repository to a Java project :
<dependency>
<groupId>fr.ign.cogit</groupId>
<artifactId>simplu3d</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>
<repository>
<id>ign-snapshots</id>
<name>Cogit Snapshots Repository</name>
<url>https://forge-cogit.ign.fr/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>ign-releases</id>
<name>Cogit Releases Repository</name>
<url>https://forge-cogit.ign.fr/nexus/content/repositories/releases/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
Attention: il se peut que la compilation du projet ne se fasse pas à cause de problèmes liées à la vérification du certificat ssh de la forge IGN. Pour cela deux solutions :
Installer localement le certificat comme décrit dans le lien suivant http://ignf.github.io/geoxygene/documentation/developer/install.html
Faire une installation non sécurisée lors du build du projet projet : mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
Warning: the compilation may fail due to issues related to the validation of ssh certificate IGN server. To fix this, two solutions are possible :
Locally install the certificate as described in this page : https://maven.apache.org/guides/mini/guide-repository-ssl.html
Make a non secure install of the project with the following command line : mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
Pour lancer une première simulation déjà prête à l'emploi, il suffit d'exécuter le code ci-dessous provenant de la classe BasicSimulator en clonant le projet SimPLU3D-tutorial qui contient des exemples de code.
Running a first ready-to-use simulation only requires to execute the following code available in the BasicSimulator class by cloning the SimPLU3D-tutorial project. It also contains some other English-commented code samples.
Afin d'exécuter ce code, vous pouvez utiliser votre environnement de développement habituel ou simplement la ligne de commande suivante : mvn exec:java -Dexec.mainClass=fr.ign.simplu3d.firstSimulation.BasicSimulator
In order to execute this code, you can either use your usual development environment or use the following command line: mvn exec:java -Dexec.mainClass=fr.ign.simplu3d.firstSimulation.BasicSimulator
public static void main(String[] args) throws Exception {
//Step 0 ; Defining an output existing folder
String outputFolder = "/tmp/";
// Step 1 : Creating the geographic environnement using the repository that contains the data
// Load default environment (data are in resource directory)
Environnement env = LoaderSHP.loadNoDTM(
new File(BasicSimulator.class.getClassLoader().getResource("firstSimulation/data/").getPath()));
// Select a parcel on which generation is proceeded
BasicPropertyUnit bPU = env.getBpU().get(2);
//Step 2 : Defining the regulation that will be applied during the simulation
// Rules parameters.8
// Distance to road
double distReculVoirie = 2;
// Distance to bottom of the parcel
double distReculFond = 3;
// 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;
//Instanciation of a predicate class
SamplePredicate<Cuboid, GraphConfiguration<Cuboid>, BirthDeathModification<Cuboid>> pred = new
SamplePredicate<>(bPU, distReculVoirie, distReculFond, distReculLat, distanceInterBati, maximalCES);
//Step 3 : Defining the regulation that will be applied during the simulation
// Instantiation of the sampler
OptimisedBuildingsCuboidFinalDirectRejection oCB = new OptimisedBuildingsCuboidFinalDirectRejection();
// Loading the parameters for the building shape generation
String folderName = BasicSimulator.class.getClassLoader().getResource("firstSimulation/scenario/").getPath();
String fileName = "params.json";
SimpluParameters p = new SimpluParametersJSON(new File(folderName + fileName));
// Run of the optimisation on a parcel with the predicate
GraphConfiguration<Cuboid> cc = oCB.process(bPU, p, env, 1, pred);
//4 - Writting the output
SaveGeneratedObjects.saveShapefile(outputFolder + "out.shp", cc, bPU.getId(), 0);
}
Une documentation a été mise en ligne (https://simplu3d.github.io/simplu3D-tutorial) pour comprendre comment utiliser SimPLU3D. Cette documentation s'accompagne d'une série de codes (déposés sur le dépôt GitHub SimPLU3D-tutorial) commentés qui illustrent différentes possibilités de personnalisation de l'approche.
A French tutorial is available online (https://simplu3d.github.io/simplu3D-tutorial), it explains how to use SimPLU3D. This documentation is illustrated by English-commented codes (hosted on SimPLU3D-tutorial GitHub project). They illustrate the different possibilities to customize the approach.
Quelques publications permettent de présenter les différents aspects de l'approche :
Different publications present the SimPLU3D model :
Vous pouvez contacter Julien Perret, Mickaël Brasebin ou Paul Chapron ({prénom.nom} (AT) {gmail} (POINT) {com}) pour discuter de l'utilisation de SimPLU3D. Pour signaler un bug n'hésitez pas à poster une issue sur le ou les projets concernés.
Les bibliothèques de SimPLU3D sont en licence CeCILL et GPL-3. Si vous utilisez ces outils pour un article scientifique vous êtes priés de citer un des articles mentionnés dans cette page. De plus nous sommes preneurs de tout retour ou de toute contribution pour améliorer ces outils.
You can contact Julien Perret, Mickaël Brasebin or Paul Chapron ({surname.name} (AT) {gmail} (POINT) {com}) to discuss about the use of SimPLU3D. To signal a bug, do not hesitate to open an issue in the concerned project.
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.
SimPLU3D est un projet développé par des chercheurs et ingénieurs du laboratoire LASTIG et financé majoritairement par l'Institut National de l'Information Géographique et Forestière. Le projet a également été financé par le fond FUI du projet TerraMagna et la région Ile-de-France à travers le projet FEDER e-PLU.
SimPLU3D project is développed by researchers and engineers from LASTIG laboratory and funded by the National Institute of Geographic and Forest Information. The project was also funded by the TerraMagna FUI project and by the Ile-de-France Region through the e-PLU FEDER project.