... | ... | @@ -179,3 +179,115 @@ classDiagram |
|
|
+value : gml::MeasureType[1]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### Using External References for Attributes by Modifying the CityGML 2.0 EnergyADE 1.0
|
|
|
|
|
|
In CityGML exists the option to connect a building to an external information service through the ```externalRefernce``` feature. That means that no data is included into the actual dataset but referenced to an external source.
|
|
|
|
|
|
This feature is in plain vanilla CityGML only available for buildings but not for other features. To enable a similar approoch in the EnergyADE, you habe to modify the EnergyADE Schema in the following way:
|
|
|
|
|
|
First of all we have to replace the "normal" ```Feature```class with an abstract EnergyADE object which allows us to reference to external objects like
|
|
|
|
|
|
```xml
|
|
|
<element name="AbstractEnergyADEObject" type="energy:AbstractEnergyADEObjectType" abstract="true" substitutionGroup="gml:_Feature"/>
|
|
|
<complexType name="AbstractEnergyADEObjectType" abstract="true">
|
|
|
<annotation>
|
|
|
<documentation>Abstract superclass for all Engery ADE objects</documentation>
|
|
|
</annotation>
|
|
|
<complexContent>
|
|
|
<extension base="gml:AbstractFeatureType">
|
|
|
<sequence>
|
|
|
<element name="externalReference" type="core:ExternalReferenceType" minOccurs="0" maxOccurs="unbounded"/>
|
|
|
</sequence>
|
|
|
</extension>
|
|
|
</complexContent>
|
|
|
</complexType>
|
|
|
```
|
|
|
Because this modification is available for all elements of the EnergyADE we can now add external references to any element of interest like the definition of ```AbstractMaterial```:
|
|
|
|
|
|
In EnergyADE 1.0 we have the defintion of ```AbstractMaterial```
|
|
|
```xml
|
|
|
<!--=========================================================================================-->
|
|
|
<!--AbstractMaterial-->
|
|
|
<!--=========================================================================================-->
|
|
|
<element abstract="true" name="AbstractMaterial" type="energy:AbstractMaterialType" substitutionGroup="gml:_Feature" />
|
|
|
<complexType abstract="true" name="AbstractMaterialType">
|
|
|
<annotation>
|
|
|
<documentation>Abstract superclass for all Material classes. A Material is a homogeneous substance that can be used to form elements.</documentation>
|
|
|
</annotation>
|
|
|
<complexContent>
|
|
|
<extension base="gml:AbstractFeatureType">
|
|
|
<sequence>
|
|
|
<element name="imageTexture" minOccurs="0" type="energy:ImageTexturePropertyType">
|
|
|
<annotation>
|
|
|
<appinfo>
|
|
|
<gml:targetElement>energy:ImageTexture</gml:targetElement>
|
|
|
</appinfo>
|
|
|
</annotation>
|
|
|
</element>
|
|
|
</sequence>
|
|
|
</extension>
|
|
|
</complexContent>
|
|
|
</complexType>
|
|
|
<complexType name="AbstractMaterialPropertyType">
|
|
|
<sequence>
|
|
|
<element ref="energy:AbstractMaterial" minOccurs="0" />
|
|
|
</sequence>
|
|
|
<attributeGroup ref="gml:AssociationAttributeGroup" />
|
|
|
</complexType>
|
|
|
```
|
|
|
which we can modify to
|
|
|
```xml
|
|
|
<!--=========================================================================================-->
|
|
|
<!--AbstractMaterial-->
|
|
|
<!--=========================================================================================-->
|
|
|
<element name="AbstractMaterial" type="energy:AbstractMaterialType" abstract="true" substitutionGroup="energy:AbstractEnergyADEObject"/>
|
|
|
<complexType name="AbstractMaterialType" abstract="true">
|
|
|
<annotation>
|
|
|
<documentation>Abstract superclass for all Material classes. A Material is a homogeneous substance that can be used to form elements.</documentation>
|
|
|
</annotation>
|
|
|
<complexContent>
|
|
|
<extension base="energy:AbstractEnergyADEObjectType">
|
|
|
<sequence>
|
|
|
<element name="imageTexture" type="energy:ImageTexturePropertyType" minOccurs="0">
|
|
|
<annotation>
|
|
|
<appinfo>
|
|
|
<gml:targetElement>energy:ImageTexture</gml:targetElement>
|
|
|
</appinfo>
|
|
|
</annotation>
|
|
|
</element>
|
|
|
</sequence>
|
|
|
</extension>
|
|
|
</complexContent>
|
|
|
</complexType>
|
|
|
<complexType name="AbstractMaterialPropertyType">
|
|
|
<sequence>
|
|
|
<element ref="energy:AbstractMaterial" minOccurs="0"/>
|
|
|
</sequence>
|
|
|
<attributeGroup ref="gml:AssociationAttributeGroup"/>
|
|
|
</complexType>
|
|
|
```
|
|
|
Similar changes have to been made in the defintion of constructions, windows and so on.
|
|
|
|
|
|
With this change we can create an external reference in our example like this:
|
|
|
```xml
|
|
|
...
|
|
|
<gml:featureMember>
|
|
|
<energy:SolidMaterial gml:id="GML_94749b5f-ee27-491b-a906-eea7da12e9a0">
|
|
|
<gml:description>Material Concrete Facade (2400/0.24/1)</gml:description>
|
|
|
<gml:name>Material-Concrete-Facade</gml:name>
|
|
|
<energy:externalReference>
|
|
|
<core:informationSystem>
|
|
|
http://some.web.server/buildinglibrary/constructionlLib.xml
|
|
|
</core:informationSystem>
|
|
|
<core:externalObject>
|
|
|
<core:uri>http://some.web.server/buildinglibrary/constructionlLib.xml/materialCatagory[name=Concrete]/material[id=14]</core:uri>
|
|
|
</core:externalObject>
|
|
|
</energy:externalReference>
|
|
|
<energy:conductivity uom="W/K*m">0.24</energy:conductivity>
|
|
|
<energy:density uom="kg/m3">2400</energy:density>
|
|
|
<energy:specificHeat uom="kJ/K*kg">1</energy:specificHeat>
|
|
|
</energy:SolidMaterial>
|
|
|
</gml:featureMember>
|
|
|
...
|
|
|
``` |