CityGML is an open data model, XML based format for the storage and exchange of virtual 3D city models. It is an application scheme based on the Open Geospatial Consortium’s (OGC) Geography Markup Language 3 (GML 3.1). Originally developed within the scope of the "Special Interest Group SIG3D" from North-Rhine Westphalia, Germany. CityGML is intended to become an open standard and therefore can be used free of charge.
In recent years, most virtual 3D city models have been realised as purely graphical or geometrical models, neglecting the semantic and topological aspects. Thus, these models could almost only be used for visualisation purposes but not for thematic queries, analysis tasks, or spatial data mining. Since the limited reusability of models inhibits the broader use of 3D city models, a more general modelling approach had to be taken in order to satisfy the information needs of the various application fields.
The CityGML format defines the classes and relationships for the most relevant topographic objects in cities and regional models with respect to their geometrical, semantical and appearance properties. Included are generalisation hierarchies between thematic classes, aggregations, relations between objects, and spatial properties. This thematic information goes beyond graphic exchange formats and allows virtual 3D city models to be employed for sophisticated analysis tasks in different application domains like simulations, urban data mining, facility management, and thematic inquiries.
CityGML does not only represents the graphical appearance of city models but also takes care of the representation of the semantic thematic properties, taxonomies and aggregations of Digital Terrain Models, sites (including buildings, bridges, tunnels), vegetation, water bodies, transportation facilities, and city furniture. The underlying model differentiates between five consecutive Levels of Detail (LOD), where objects become more detailed with increasing LOD regarding both geometry and thematic differentiation. CityGML files can - but do not have to - contain multiple representations for each object in different LOD simultaneously.