Python CLI to process and manipulate CityJSON files. The different operators can be chained to perform several processing operations in one step, the CityJSON model goes through them and different versions of the CityJSON model can be saved as files along the pipeline.
It uses Python 3.5+ only.
To install the latest release:
pip install cjio
To install the development branch, and still develop with it:
git checkout develop
virtualenv venv
. venv/bin/activate
pip install --editable .
Alternatively, you can use the included Pipfile to manage the virtual environment with pipenv.
Note for Windows users
If your installation fails based on a pyproj or pyrsistent error there is a small hack to get around it. Based on the python version you have installed you can download a wheel (binary of a python package) of the problem package/s. A good website to use is here. You then run:
pip3 install [name of wheel file]
You can then continue with:
pip3 install cjio
After installation, you have a small program called cjio
, to see its possibities:
cjio --help
Commands:
assign_epsg Assign a (new) EPSG.
compress Compress a CityJSON file, ie stores its...
decompress Decompress a CityJSON file, ie remove the...
export Export the CityJSON to another format.
extract_lod Extract only one LoD for a dataset.
info Output info in simple JSON.
locate_textures Output the location of the texture files.
merge Merge the current CityJSON with others.
remove_duplicate_vertices Remove duplicate vertices a CityJSON file.
remove_materials Remove all materials from a CityJSON file.
remove_orphan_vertices Remove orphan vertices a CityJSON file.
remove_textures Remove all textures from a CityJSON file.
reproject Reproject the CityJSON to a new EPSG.
save Save the city model to a CityJSON file.
subset Create a subset of a CityJSON file.
update_bbox Update the bbox of a CityJSON file.
update_textures Update the location of the texture files.
upgrade_version Upgrade the CityJSON to the latest version.
validate Validate the CityJSON file: (1) against its...
The 3D city model opened is passed through all the operators, and it gets modified by some operators.
Operators like info
and validate
output information in the console and just pass the 3D city model to the next operator.
$ cjio example.json subset --id house12 info remove_materials info save out.json
$ cjio example.json remove_textures compress info
$ cjio example.json upgrade_version save new.json
$ cjio myfile.json merge '/home/elvis/temp/*.json' save all_merged.json
To validate a CityJSON file against the schemas of CityJSON (this will automatically fetch the schemas for the version of CityJSON):
$ cjio myfile.json validate
If the file is too large (and thus validation is slow), an option is to crop a subset and just validate it:
$ cjio myfile.json subset --random 2 validate
If you want to use your own schemas, give the folder where the master schema file cityjson.json
is located:
$ cjio example.json validate --folder_schemas /home/elvis/temp/myschemas/
There are a few example files on the CityJSON webpage.
Alternatively, any CityGML file can be automatically converted to CityJSON with the open-source project citygml-tools (based on citygml4j).