Florian-Katerndahl / syntreesizer

syntreesizer tries to offer a consistent interface to the ArcGIS CityEngine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

syntreesizer

syntreesizer tries to offer a consistent interface to the ArcGIS CityEngine.

Installation

To get started, simply copy over the Scripts Geometry.py and Scene.py into the scripts-folder of your ArcGIS CityEngine project and append your PATH variable:

sys.path.append(ce.toFSPath("scripts"))

Build Documentation

To build the project documentation locally, run the following command:

doxygen Doxyfile

Tree Models

To get you started, you can download LumenRT Tree Models or acquire other models in the Wavefront OBJ-format.

Usage

sys.path.append(ce.toFSPath("scripts"))

from Scene import Scene

scene = Scene(ce)

scene.generate_street_network(True, street_layer_name="streets", number_of_streets=1000, sidewalk_minimum_width=4, sidewalk_maximum_width=6)

scene.generate_street_network(False, street_layer_name="streets", number_of_streets=3000, major_pattern="RADIAL", minor_pattern="ORGANIC", sidewalk_minimum_width=4, sidewalk_maximum_width=6)

scene.generate_street_network(False, street_layer_name="streets", number_of_streets=900, force_outwards_growth=False, major_pattern="ORGANIC", minor_pattern="ORGANIC", sidewalk_minimum_width=4, sidewalk_maximum_width=6)

scene.diversify_city_blocks()

scene.set_rule_files({"park": "rules/parks.cga", "street": "/ESRI.lib/rules/Streets/Street_Modern_Standard.cga", "lot": {"file": "/ESRI.lib/rules/Buildings/Building_From_Footprint.cga", "start": "Generate"}})

vp = scene.get_current_viewport()

scene.export_as_shape_file("streets", "data/experiment_1_street_network.shp")

_ = input("run R script\n") # place trees on sidewalk

scene.place_street_trees("assets/Plants/**/*Model_0.obj", "data/experiment_1_tree_attributes.txt")

scene.place_park_trees(0.004, 0.0008, 0.0008, "trees", "assets/Plants/**/*Model_0.obj", scale_min=0.19, scale_max=0.21)

scene.gather_tree_images("trees", vp, "images/experiment_1", "city_trees.png", 512, "images/experiment_1/meta.csv", mean_height=120.0, mean_height_sd=0.0,
                        lighting_settings={"light_month": 6, "light_time_zone": 1, "shadow_quality": "SHADOW_HIGH", "ambient_occlusion_samples": "AMBIENT_OCCLUSION_SAMPLES_HIGHEST", "sun_source":
                        "SUN_POSITION_SOURCE_TIME_DATE"},
                        camera_settings={"_randomize": False},
                        render_settings=({"axes_visible": False, "grid_visible": False}, {}),
                        truth_detection_strategy="diff",
                        position_noise=False, rotation_noise=False)

Further Notes

The ESRI CityEngine uses Jython 2.7 as its Python interpreter. Following from this, all modules and scripts need to conform to the Python 2.7 syntax (given they're to be used within the ESRI CityEngine). While importing modules other than those bundled with Python 2.7 should be possible by manipulating the sys.path variable, the resulting package might become unstable/harder to deal with.

About

syntreesizer tries to offer a consistent interface to the ArcGIS CityEngine

License:GNU General Public License v3.0


Languages

Language:Python 100.0%