Commit 00c9aefb authored by Claus Nagel's avatar Claus Nagel
Browse files

No commit message

No commit message
parent 27eb5a41
<?xml version="1.0" encoding="UTF-8"?>
<project name="citygml4j" default="dist" basedir=".">
<!-- application specific variables -->
<property name="app.name" value="ade-xjc"/>
<property name="app.version" value="1.0ea"/>
<property name="app.jar" value="${app.name}-${app.version}.jar"/>
<property name="app.title" value="JAXB xjc wrapper for citygml4j version ${app.version}"/>
<property name="app.vendor" value="IGG, Technical University Berlin, Germany, http://www.igg.tu-berlin.de"/>
<property name="app.class" value="org.citygml4j.ade_xjc.ADE_XJC"/>
<!-- dirs -->
<property name="project.basedir" location=".."/>
<property name="src" location="src"/>
<property name="lib" location="lib"/>
<property name="schemas" location="schemas"/>
<property name="resources" location="resources"/>
<property name="resources.doc" location="${resources}/doc"/>
<property name="resources.license" location="${resources}/license"/>
<property name="build" location="build"/>
<property name="build.classes" location="${build}/classes"/>
<property name="build.lib" location="${build}/lib"/>
<property name="dist" location="${app.name}-${app.version}"/>
<property name="dist.lib" location="${dist}/lib"/>
<property name="dist.license" location="${dist}/license"/>
<property name="dist.schemas" location="${dist}/schemas"/>
<!-- classpath -->
<path id="classpath">
<fileset dir="lib" includes="*.jar"/>
</path>
<tstamp>
<format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss"/>
</tstamp>
<target name="clean" description="clean up">
<!-- delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
<target name="init" description="init build environment">
<!-- create the build directory structure used by compile -->
<mkdir dir="${build.classes}"/>
<mkdir dir="${build.lib}"/>
</target>
<target name="compile" depends="init" description="compile the source">
<!-- compile the java code from ${src} and ${src-gen} into ${build} -->
<javac classpathref="classpath" srcdir="${src}" destdir="${build.classes}"/>
<!-- copy libraries to ${build} -->
<copy todir="${build.lib}">
<fileset dir="${lib}" includes="**/*.jar"/>
</copy>
</target>
<target name="dist" depends="clean, compile" description="generate the distribution">
<!-- create the distribution directory -->
<mkdir dir="${dist}"/>
<!-- copy LICENSE template -->
<copy todir="${dist.license}">
<fileset dir="${resources.license}" includes="**/*"/>
</copy>
<!-- copy starter script and README templates -->
<copy toDir="${dist}">
<fileset dir="${resources.doc}" includes="**/*"/>
<!-- application specific variables -->
<property name="app.name" value="ade-xjc" />
<property name="app.version" value="1.0ea" />
<property name="app.jar" value="${app.name}-${app.version}.jar" />
<property name="app.title" value="JAXB xjc wrapper for citygml4j version ${app.version}" />
<property name="app.vendor" value="IGG, Technical University Berlin, Germany, http://www.igg.tu-berlin.de" />
<property name="app.class" value="org.citygml4j.ade_xjc.ADE_XJC" />
<!-- dirs -->
<property name="project.basedir" location=".." />
<property name="src" location="src" />
<property name="lib" location="lib" />
<property name="resources" location="resources" />
<property name="resources.doc" location="${resources}/doc" />
<property name="resources.license" location="${resources}/license" />
<property name="resources.schemas" location="${resources}/xml/schemas" />
<property name="build" location="build" />
<property name="build.classes" location="${build}/classes" />
<property name="dist" location="${app.name}-${app.version}" />
<property name="dist.license" location="${dist}/license" />
<property name="dist.schemas" location="${dist}/schemas" />
<!-- classpath -->
<path id="classpath">
<fileset dir="lib" includes="*.jar" />
</path>
<tstamp>
<format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<target name="clean" description="clean up">
<!-- delete the ${build} and ${dist} directory trees -->
<delete dir="${build}" />
<delete dir="${dist}" />
</target>
<target name="init" description="init build environment">
<!-- create the build directory structure used by compile -->
<mkdir dir="${build.classes}" />
</target>
<target name="compile" depends="init" description="compile the source">
<!-- compile the java code from ${src} and ${src-gen} into ${build} -->
<javac classpathref="classpath" srcdir="${src}" destdir="${build.classes}" />
</target>
<target name="dist" depends="clean, compile" description="generate the distribution">
<!-- create the distribution directory -->
<mkdir dir="${dist}" />
<!-- copy LICENSE template -->
<copy todir="${dist.license}">
<fileset dir="${resources.license}" includes="**/*" />
</copy>
<!-- copy README template -->
<copy toDir="${dist}">
<fileset dir="${resources.doc}" includes="**/*" />
</copy>
<!-- replace tokens in template files -->
<replace file="${dist.license}/LICENSE" token="!app.title!" value="${app.title}"/>
<replace file="${dist.license}/LICENSE" token="!app.name!" value="${app.name}"/>
<replace file="${dist}/README" token="!app.name!" value="${app.name}"/>
<replace file="${dist}/README" token="!app.title!" value="${app.title}"/>
<replace file="${dist}/README" token="!app.jar!" value="${app.jar}"/>
<replace file="${dist}/README" token="!app.version!" value="${app.version}"/>
<!-- copy schema files -->
<copy todir="${dist.schemas}">
<fileset dir="${schemas}" includes="**/*"/>
</copy>
<!-- copy library files -->
<copy todir="${dist.lib}">
<fileset dir="${build.lib}" includes="**/*.jar"/>
</copy>
<!-- set package variables -->
<pathconvert property="manifest.classpath" dirsep="/" pathsep=" " refid="classpath">
<map from="${basedir}${file.separator}lib" to="lib"/>
</pathconvert>
<buildnumber file="build.num"/>
<!-- put everything in ${build} into .jar file -->
<jar jarfile="${dist}/${app.jar}" basedir="${build}/classes">
<fileset dir="${dist}" includes="README"/>
<fileset dir="${dist.license}" includes="**/*"/>
<manifest>
<attribute name="Built-Id" value="${user.name}-${app.name}-${app.version}"/>
<attribute name="Built-Date" value="${TODAY}"/>
<attribute name="Implementation-Title" value="${app.title}"/>
<attribute name="Implementation-Version" value="${app.version}-b${build.number}"/>
<attribute name="Implementation-Vendor" value="${app.vendor}"/>
<attribute name="Class-Path" value="${manifest.classpath}"/>
<attribute name="Main-Class" value="${app.class}"/>
</manifest>
</jar>
<!-- clean up template dir -->
<delete dir="${dist.tmp}"/>
</target>
<!-- replace tokens in template files -->
<replace file="${dist.license}/LICENSE" token="!app.title!" value="${app.title}" />
<replace file="${dist.license}/LICENSE" token="!app.name!" value="${app.name}" />
<replace file="${dist}/README" token="!app.name!" value="${app.name}" />
<replace file="${dist}/README" token="!app.title!" value="${app.title}" />
<replace file="${dist}/README" token="!app.jar!" value="${app.jar}" />
<replace file="${dist}/README" token="!app.version!" value="${app.version}" />
<!-- copy schema files -->
<copy todir="${dist.schemas}">
<fileset dir="${resources.schemas}" includes="**/*" />
</copy>
<!-- put everything in ${build} into .jar file -->
<jar jarfile="${dist}/${app.jar}" basedir="${build.classes}" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Built-Id" value="${user.name}-${app.name}-${app.version}" />
<attribute name="Built-Date" value="${TODAY}" />
<attribute name="Implementation-Title" value="${app.title}" />
<attribute name="Implementation-Version" value="${app.version}-b${build.number}" />
<attribute name="Implementation-Vendor" value="${app.vendor}" />
<attribute name="Class-Path" value="." />
<attribute name="Main-Class" value="${app.class}" />
</manifest>
<zipfileset excludes="META-INF/*.SF" src="${lib}/activation.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib}/jaxb-api.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib}/jsr173_1.0_api.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib}/jaxb-impl.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib}/jaxb-xjc.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib}/args4j-2.0.9.jar" />
<fileset dir="${dist}" includes="README" />
<fileset dir="${dist.license}" includes="**/*" />
</jar>
<!-- clean up template dir -->
<delete dir="${build}" />
</target>
</project>
com.sun.tools.xjc.addon.collection_setter_injector.PluginImpl
\ No newline at end of file
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the license at
* https://glassfish.dev.java.net/public/CDDLv1.0.html or
* glassfish/bootstrap/legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at glassfish/bootstrap/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* you own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.tools.xjc.addon.collection_setter_injector;
/**
* @author Marcos
*/
public class Const {
/**
* Customization namespace URI.
*/
public static final String NS = "http://jaxb.dev.java.net/plugin/collection-setter-injector";
}
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the license at
* https://glassfish.dev.java.net/public/CDDLv1.0.html or
* glassfish/bootstrap/legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at glassfish/bootstrap/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* you own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.tools.xjc.addon.collection_setter_injector;
import java.text.MessageFormat;
import java.util.ResourceBundle;
/**
* Message resources
*/
enum Messages {
DEFAULT_GETTER_JAVADOC, // 1 arg
DEFAULT_SETTER_JAVADOC, // 1 arg
;
private static final ResourceBundle rb = ResourceBundle.getBundle(Messages.class.getName().substring(0, Messages.class.getName().lastIndexOf('.'))+ ".localstrings");
public String toString() {
return format();
}
public String format( Object... args ) {
return MessageFormat.format( rb.getString(name()), args );
}
}
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the license at
* https://glassfish.dev.java.net/public/CDDLv1.0.html or
* glassfish/bootstrap/legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at glassfish/bootstrap/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* you own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.tools.xjc.addon.collection_setter_injector;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.xml.sax.ErrorHandler;
import com.sun.codemodel.JBlock;
import com.sun.codemodel.JCodeModel;
import com.sun.codemodel.JExpr;
import com.sun.codemodel.JExpression;
import com.sun.codemodel.JFieldVar;
import com.sun.codemodel.JMethod;
import com.sun.codemodel.JType;
import com.sun.codemodel.JVar;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.Plugin;
import com.sun.tools.xjc.generator.bean.ClassOutlineImpl;
import com.sun.tools.xjc.generator.bean.MethodWriter;
import com.sun.tools.xjc.model.CPropertyInfo;
import com.sun.tools.xjc.model.CTypeInfo;
import com.sun.tools.xjc.outline.Aspect;
import com.sun.tools.xjc.outline.ClassOutline;
import com.sun.tools.xjc.outline.FieldOutline;
import com.sun.tools.xjc.outline.Outline;
import com.sun.xml.bind.api.impl.NameConverter;
/**
* This Plugin will generate <tt>setter</tt> <tt>methods</tt>
* for Collection-based properties. <p> The default binding compiler
* behavior generates a <tt>getter</tt> method for Collection-based
* properties so the user must pickup a reference to the Collection
* and add the desired item. The following snippet:
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;choice maxOccurs="unbounded">
* &lt;element ref="{http://www.objectweb.org}sql" maxOccurs="unbounded" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}definitionInclude" maxOccurs="unbounded" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}importDefinition" maxOccurs="unbounded" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}restartCounter" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}variables" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}jdbcDefaultParameters" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}echo" maxOccurs="unbounded" minOccurs="0"/>
* &lt;element ref="{http://www.objectweb.org}copyTable" maxOccurs="unbounded" minOccurs="0"/>
* &lt;/choice>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
* Generates a Java class with the following method.:
* <pre>
* public List&lt;Object> getSqlOrDefinitionIncludeOrImportDefinition() {
* if (sqlOrDefinitionIncludeOrImportDefinition == null) {
* sqlOrDefinitionIncludeOrImportDefinition = new ArrayList&lt;Object>();
* }
* return this.sqlOrDefinitionIncludeOrImportDefinition;
* }
* </pre>
*
* This plugin will generate the setter part of the method such as.:
* <pre>
* <b>
* public void setSqlOrDefinitionIncludeOrImportDefinition(List&lt;Object> sqlOrDefinitionIncludeOrImportDefinition){
* this.sqlOrDefinitionIncludeOrImportDefinition = sqlOrDefinitionIncludeOrImportDefinition;
* }
* </b>
* </pre>
*
* <pre>
* This plugin has been patched for use with the citygml4j library according to the following bug report.
* Reason for the patch is that the plugin did not work with JAXB global binding "generateIsSetMethod" set to true.
* <b>
* http://www.nabble.com/collection-setter-injector-plugin-does-not-work--fix-patch-included--td24653584.html
* </b>
* </pre>
*
* @author Marcos
* @see <a href="https://jaxb.dev.java.net/servlets/ReadMsg?list=users&msgNo=6594">
* https://jaxb.dev.java.net/servlets/ReadMsg?list=users&msgNo=6594</a>
*/
public class PluginImpl extends Plugin {
private ClassOutlineImpl outline;
private CPropertyInfo prop;
private JType implType;
private JType exposedType;
private JCodeModel codeModel;
/**
* Field declaration of the actual
* list object that we use to store data.
*/
private JFieldVar field;
public String getOptionName() {
return "Xcollection-setter-injector";
}
public List<String> getCustomizationURIs() {
return Collections.singletonList(Const.NS);
}
public boolean isCustomizationTagName(String nsUri, String localName) {
return nsUri.equals(Const.NS) && localName.equals("collection");
}
public String getUsage() {
return " -Xcollection-setter-injector\t: add setter method for collection-based properties";
}
// The injection of setter methods for
// "Collection-based" fields starts here
public boolean run(Outline model, Options opt, ErrorHandler errorHandler) {
FieldOutline[] fo = null;
for( ClassOutline co : model.getClasses() ) {
if (null != (fo = co.getDeclaredFields()) &&
0 < fo.length){
for (int i = 0; i < fo.length; i++) {
if (fo[i].getPropertyInfo().isCollection()) {
declareMethod((ClassOutlineImpl) co, fo[i]);
}
}
}
}
return true;
}
// TODO --marcos Add binding support, fireXXX methods
/**
* Declares the <tt>setter</tt> method for Collection based properties.
*
* @param context <tt>ClassOutlineImpl</tt> that generates the
* {@link com.sun.tools.xjc.generator.bean.MethodWriter}
* to write the <tt>setter</tt>s for the Collection-based
* properties
*
* @param field <tt>UntypedListField</tt> that will have the
* <tt>setter</t> againt it, by this way the field will
* be correctly encoded by {@link java.Osbeans.XMLEncoder}
* based routines
*/
private void declareMethod(ClassOutlineImpl context, FieldOutline field){
MethodWriter writer = context.createMethodWriter();
Map <String,JFieldVar> fields = null;
NameConverter nc = context.parent().getModel().getNameConverter();
outline = context;
codeModel = context.parent().getCodeModel();
prop = field.getPropertyInfo();
// Retrieve the Map that contains the field name
// and the correspondind JFieldVar
fields = outline.implClass.fields();
// Obtains a reference to the collection-based field
this.field = fields.get(field.getPropertyInfo().getName(false));
// Creates the method
JMethod $set = writer.declareMethod(codeModel.VOID, "set" + prop.getName(true));
// Creates the JVar that will hold the method's parameter
JVar $value = writer.addParameter( this.field.type(), prop.getName(false));
// Creates the methods's JBlock
JBlock body = $set.body();
// Creates the assignment (method parameter to instance variable)
body.assign(JExpr._this().ref(ref()), castToImplType($value));
// Writes javadoc for the methods
String javadoc = prop.javadoc;
List<Object> possibleTypes = listPossibleTypes(prop);
javadoc = prop.javadoc;
if(javadoc.length() == 0)
javadoc = Messages.DEFAULT_SETTER_JAVADOC.format(nc.toVariableName(prop.getName(true)));
writer.javadoc().append(javadoc);
writer.javadoc().addParam($value)
.append("allowed object is\n")
.append(possibleTypes);
}
/**
* Returns contents to be added to javadoc.
* <p>
* <b>Description and code copied from the class SingleField</b>
*
* @see <a href="https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java">
* https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java</a>
*/
protected final List<Object> listPossibleTypes( CPropertyInfo prop ) {
List<Object> r = new ArrayList<Object>();
for( CTypeInfo tt : prop.ref() ) {
JType t = tt.getType().toType(outline.parent(),Aspect.EXPOSED);
if( t.isPrimitive() || t.isArray() )
r.add(t.fullName());
else {
r.add(t);
r.add("\n");
}
}
return r;
}
/**
* <b>Code copied from the class SingleField</b>
*
* @see <a href="https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java">
* https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java</a>
*/
protected JFieldVar ref() {
return field;
}
/**
* Case from {@link #exposedType} to {@link #implType} if necessary.
* <p>
* <b>Description and code copied from the class SingleField</b>
*
* @see <a href="https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java">
* https://jaxb2-commons.dev.java.net/source/browse/jaxb2-commons/property-listener-injector/src/com/sun/tools/xjc/addon/property_listener_injector/SingleField.java</a>
*/
protected final JExpression castToImplType( JExpression exp ) {
if (implType==exposedType)
return exp;
else
return JExpr.cast(implType,exp);
}
}
DEFAULT_SETTER_JAVADOC = \
Sets the value of the {0} property.
DEFAULT_GETTER_JAVADOC = \
Gets the value of the {0} property.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/cityfurniture/1.0" xmlns:core="http://www.opengis.net/citygml/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/cityfurniture/1.0" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- ===================================CityGML CityFurniture module ============================== -->
<!-- ========================================================================================= -->
<xs:complexType name="CityFurnitureType">
<xs:annotation>
<xs:documentation>Type describing city furnitures, like traffic lights, benches, ... As subclass of _CityObject, a CityFurniture inherits all
attributes and relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="class" type="CityFurnitureClassType" minOccurs="0"/>
<xs:element name="function" type="CityFurnitureFunctionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="lod1Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod2Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod3Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod4Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod1TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod2TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod3TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod4TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod1ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod2ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod3ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod4ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element ref="_GenericApplicationPropertyOfCityFurniture" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="CityFurniture" type="CityFurnitureType" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfCityFurniture" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:simpleType name="CityFurnitureFunctionType">
<xs:annotation>
<xs:documentation>Function of a Furniture. The values of this type are defined in the XML file CityFurnitureFunctionType.xml, according to the
dictionary concept of GML3. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ========================================================================================= -->
<xs:simpleType name="CityFurnitureClassType">
<xs:annotation>
<xs:documentation>Class of a Furniture. The values of this type are defined in the XML file CityFurnitureClassType.xml, according to the dictionary
concept of GML3. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ========================================================================================= -->
</xs:schema>
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/cityobjectgroup/1.0" xmlns:core="http://www.opengis.net/citygml/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/cityobjectgroup/1.0"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- =============================CityGML CityObjectGroup module ================================== -->
<!-- ========================================================================================= -->
<xs:complexType name="CityObjectGroupType">
<xs:annotation>
<xs:documentation> A group may be used to aggregate arbitrary CityObjects according to some user-defined criteria. Examples for groups are the
buildings in a specific region, the result of a query, or objects put together for visualization purposes. Each group has a name (inherited from
AbstractGMLType), functions (e.g., building group), a class and zero or more usages. A geometry may optionally be attached to a group, if the
geometry of the whole group differs from the geometry of the parts. Each member of a group may be qualified by a role name, reflecting the role
each CityObject plays in the context of the group. As subclass of _CityObject, a CityObjectGroup inherits all attributes and relations, in
particular an id, names, external references, and generalization relations. As CityObjectGroup itself is a CityObject, it may also be contained
by another group. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="class" type="xs:string" minOccurs="0"/>
<xs:element name="function" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="usage" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="groupMember" type="CityObjectGroupMemberType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="parent" type="CityObjectGroupParentType" minOccurs="0"/>
<xs:element name="geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element ref="_GenericApplicationPropertyOfCityObjectGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="CityObjectGroup" type="CityObjectGroupType" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfCityObjectGroup" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<!-- ======================Type for Aggregation of Group Members==================================== -->
<!-- ========================================================================================= -->
<xs:complexType name="CityObjectGroupMemberType">
<xs:annotation>
<xs:documentation>Denotes the relation of a CityObjectGroup to its members, which are _CityObjects. The CityObjectGroupMemberType element must
either carry a reference to a _CityObject object or contain a _CityObject object inline, but neither both nor none. </xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0">
<xs:element ref="core:_CityObject"/>
<xs:element ref="gml:_ADEComponent" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="role" type="xs:string"/>
<xs:attributeGroup ref="gml:AssociationAttributeGroup"/>
</xs:complexType>
<!-- ========================================================================================= -->
<!-- ======================Type for Parent Property ================================================ -->
<!-- ========================================================================================= -->
<xs:complexType name="CityObjectGroupParentType">
<xs:annotation>
<xs:documentation>Denotes the relation of a CityObjectGroup to its parent, which is a CityObject. The CityObjectGroupParentType element must either
carry a reference to a _CityObject object or contain a _CityObject object inline, but neither both nor none. The parent association allows for
modelling of a generic hierarchical grouping concept. Named aggregations of components (CityObjects) can be added to specific CityObjects
considered as the parent object. The parent association links to the aggregate, while the parts are given by the group members.
</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0">
<xs:element ref="core:_CityObject"/>
<xs:element ref="gml:_ADEComponent" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="gml:AssociationAttributeGroup"/>
</xs:complexType>
<!-- ========================================================================================= -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/generics/1.0" xmlns:core="http://www.opengis.net/citygml/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/generics/1.0" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- ===============================CityGML Generics module ===================================== -->
<!-- ========================================================================================= -->
<!-- ==================================Generic CityObject ========================================-->
<!-- ========================================================================================= -->
<xs:complexType name="GenericCityObjectType">
<xs:annotation>
<xs:documentation>Generic (user defined) city objects may be used to model features which are not covered explicitly by the CityGML schema. Generic
objects must be used with care; they shall only be used if there is no appropiate thematic class available in the overall CityGML schema.
Oherwise, problems concerning semantic interoperability may arise. As subclass of _CityObject, a generic city object inherits all attributes and
relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="class" type="xs:string" minOccurs="0"/>
<xs:element name="function" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="usage" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="lod0Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod1Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod2Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod3Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod4Geometry" type="gml:GeometryPropertyType" minOccurs="0"/>
<xs:element name="lod0TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod1TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod2TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod3TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod4TerrainIntersection" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="lod0ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod1ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod2ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod3ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
<xs:element name="lod4ImplicitRepresentation" type="core:ImplicitRepresentationPropertyType" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="GenericCityObject" type="GenericCityObjectType" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<!-- ==================================Generic Attributes=========================================-->
<!-- ========================================================================================= -->
<xs:complexType name="AbstractGenericAttributeType" abstract="true">
<xs:annotation>
<xs:documentation> Generic (user defined) attributes may be used to represent attributes which are not covered explicitly by the CityGML schema.
Generic attributes must be used with care; they shall only be used if there is no appropiate attribute available in the overall CityGML schema.
Oherwise, problems concerning semantic interoperability may arise. A generic attribute has a name and a value, which has further subclasses
(IntAttrribute, StringAttribute, ...). </xs:documentation>
</xs:annotation>
<xs:sequence/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="_genericAttribute" type="AbstractGenericAttributeType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="StringAttributeType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractGenericAttributeType">
<xs:sequence>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="stringAttribute" type="StringAttributeType" substitutionGroup="_genericAttribute"/>
<!-- ========================================================================================= -->
<xs:complexType name="IntAttributeType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractGenericAttributeType">
<xs:sequence>
<xs:element name="value" type="xs:integer"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="intAttribute" type="IntAttributeType" substitutionGroup="_genericAttribute"/>
<!-- ========================================================================================= -->
<xs:complexType name="DoubleAttributeType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractGenericAttributeType">
<xs:sequence>
<xs:element name="value" type="xs:double"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="doubleAttribute" type="DoubleAttributeType" substitutionGroup="_genericAttribute"/>
<!-- ========================================================================================= -->
<xs:complexType name="DateAttributeType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractGenericAttributeType">
<xs:sequence>
<xs:element name="value" type="xs:date"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="dateAttribute" type="DateAttributeType" substitutionGroup="_genericAttribute"/>
<!-- ========================================================================================= -->
<xs:complexType name="UriAttributeType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractGenericAttributeType">
<xs:sequence>
<xs:element name="value" type="xs:anyURI"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="uriAttribute" type="UriAttributeType" substitutionGroup="_genericAttribute"/>
<!-- ========================================================================================= -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/landuse/1.0" xmlns:core="http://www.opengis.net/citygml/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/landuse/1.0" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- ==================================CityGML LandUse module ================================== -->
<!-- ========================================================================================= -->
<xs:complexType name="LandUseType">
<xs:annotation>
<xs:documentation>Type describing the class for Land Use in all LOD. LandUse objects describe areas of the earth’s surface dedicated to a specific
land use. The geometry must consist of 3-D surfaces. As subclass of _CityObject, a LandUse inherits all attributes and relations, in particular
an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="class" type="LandUseClassType" minOccurs="0"/>
<xs:element name="function" type="LandUseFunctionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="usage" type="LandUseUsageType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="lod0MultiSurface" type="gml:MultiSurfacePropertyType" minOccurs="0"/>
<xs:element name="lod1MultiSurface" type="gml:MultiSurfacePropertyType" minOccurs="0"/>
<xs:element name="lod2MultiSurface" type="gml:MultiSurfacePropertyType" minOccurs="0"/>
<xs:element name="lod3MultiSurface" type="gml:MultiSurfacePropertyType" minOccurs="0"/>
<xs:element name="lod4MultiSurface" type="gml:MultiSurfacePropertyType" minOccurs="0"/>
<xs:element ref="_GenericApplicationPropertyOfLandUse" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="LandUse" type="LandUseType" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfLandUse" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:simpleType name="LandUseClassType">
<xs:annotation>
<xs:documentation>Class of a Landuse. The values of this type are defined in the XML file LandUseClassType.xml, according to the dictionary concept
of GML3. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ========================================================================================= -->
<xs:simpleType name="LandUseFunctionType">
<xs:annotation>
<xs:documentation>Function of a Landuse. The values of this type are defined in the XML file LandUseFunctionType.xml, according to the dictionary
concept of GML3. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ========================================================================================= -->
<xs:simpleType name="LandUseUsageType">
<xs:annotation>
<xs:documentation>Usage of a Landuse. The values of this type are defined in the XML file LandUseUsageType.xml, according to the dictionary concept
of GML3. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ========================================================================================= -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/relief/1.0" xmlns:core="http://www.opengis.net/citygml/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/relief/1.0" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- ==================================CityGML Relief module ===================================== -->
<!-- ========================================================================================= -->
<xs:complexType name="ReliefFeatureType">
<xs:annotation>
<xs:documentation>Type describing the features of the Digital Terrain Model. As subclass of _CityObject, a ReliefFeature inherits all attributes and
relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="lod" type="core:integerBetween0and4"/>
<xs:element name="reliefComponent" type="ReliefComponentPropertyType" maxOccurs="unbounded"/>
<xs:element ref="_GenericApplicationPropertyOfReliefFeature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="ReliefFeature" type="ReliefFeatureType" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfReliefFeature" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="AbstractReliefComponentType" abstract="true">
<xs:annotation>
<xs:documentation>Type describing the components of a relief feature - either a TIN, a Grid, mass points or break lines. As subclass of _CityObject,
a ReliefComponent inherits all attributes and relations, in particular an id, names, external references, and generalization relations.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="core:AbstractCityObjectType">
<xs:sequence>
<xs:element name="lod" type="core:integerBetween0and4"/>
<xs:element name="extent" type="gml:PolygonPropertyType" minOccurs="0"/>
<xs:element ref="_GenericApplicationPropertyOfReliefComponent" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="_ReliefComponent" type="AbstractReliefComponentType" abstract="true" substitutionGroup="core:_CityObject"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfReliefComponent" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="ReliefComponentPropertyType">
<xs:annotation>
<xs:documentation>Denotes the relation of a ReliefFeature to its components. The ReliefComponentPropertyType element must either carry a reference
to a _ReliefComponent object or contain a _ReliefComponent object inline, but neither both nor none. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="gml:AssociationType">
<xs:sequence minOccurs="0">
<xs:element ref="_ReliefComponent"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:complexType name="TINReliefType">
<xs:annotation>
<xs:documentation>Type describing the TIN component of a relief feature. As subclass of _CityObject, a TINRelief inherits all attributes and
relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractReliefComponentType">
<xs:sequence>
<xs:element name="tin" type="tinPropertyType"/>
<xs:element ref="_GenericApplicationPropertyOfTinRelief" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="TINRelief" type="TINReliefType" substitutionGroup="_ReliefComponent"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfTinRelief" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="RasterReliefType">
<xs:annotation>
<xs:documentation>Type describing the raster component of a relief feature. As subclass of _CityObject, a RasterRelief inherits all attributes and
relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractReliefComponentType">
<xs:sequence>
<xs:element name="grid" type="gridPropertyType"/>
<xs:element ref="_GenericApplicationPropertyOfRasterRelief" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="RasterRelief" type="RasterReliefType" substitutionGroup="_ReliefComponent"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfRasterRelief" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="MassPointReliefType">
<xs:annotation>
<xs:documentation>Type describing the mass point component of a relief feature. As subclass of _CityObject, a MassPoint Relief inherits all
attributes and relations, in particular an id, names, external references, and generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractReliefComponentType">
<xs:sequence>
<xs:element name="reliefPoints" type="gml:MultiPointPropertyType"/>
<xs:element ref="_GenericApplicationPropertyOfMassPointRelief" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="MassPointRelief" type="MassPointReliefType" substitutionGroup="_ReliefComponent"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfMassPointRelief" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="BreaklineReliefType">
<xs:annotation>
<xs:documentation>Type describing the break line Component of a relief feature. A break line relief consists of break lines or ridgeOrValleyLines.
As subclass of _CityObject, a BreaklineRelief inherits all attributes and relations, in particular an id, names, external references, and
generalization relations. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractReliefComponentType">
<xs:sequence>
<xs:element name="ridgeOrValleyLines" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element name="breaklines" type="gml:MultiCurvePropertyType" minOccurs="0"/>
<xs:element ref="_GenericApplicationPropertyOfBreaklineRelief" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="BreaklineRelief" type="BreaklineReliefType" substitutionGroup="_ReliefComponent"/>
<!-- ========================================================================================= -->
<xs:element name="_GenericApplicationPropertyOfBreaklineRelief" type="xs:anyType" abstract="true"/>
<!-- ========================================================================================= -->
<xs:complexType name="tinPropertyType">
<xs:annotation>
<xs:documentation>Denotes the relation of a TINRelief to its components. The tinPropertyType element must either carry a reference to a
gml:TriangulatedSurface object or contain a gml:TriangulatedSurface object inline, but neither both nor none. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="gml:AssociationType">
<xs:sequence minOccurs="0">
<xs:element ref="gml:TriangulatedSurface"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:complexType name="gridPropertyType">
<xs:complexContent>
<xs:annotation>
<xs:documentation>Denotes the relation of a RasterReliefType to its components. The gridPropertyType element must either carry a reference to a
gml:RectifiedGridCoverage object or contain a gml:RectifiedGridCoverage object inline, but neither both nor none. </xs:documentation>
</xs:annotation>
<xs:restriction base="gml:AssociationType">
<xs:sequence minOccurs="0">
<xs:element ref="gml:RectifiedGridCoverage"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<!-- ============= The height values of the grid are represented by Elevation elements, which have a height ====== -->
<!-- ============= value and a unit of measurement, e.g. meter. ====== -->
<!-- ========================================================================================= -->
<xs:element name="Elevation" type="gml:LengthType" substitutionGroup="gml:_Object"/>
<!-- ========================================================================================= -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- CityGML Version No. 1.0.0, May 19th, 2008-->
<!-- CityGML - GML3 application schema for the 3D city model of the Special Interest Group 3D (SIG 3D) of GDI NRW-->
<!-- Editors: PD Dr. Gerhard Groeger, Institute for Geodesy and Geoinformation, University of Bonn & -->
<!-- Prof. Dr. Thomas H. Kolbe, Institute for Geodesy and Geoinformation Science, Technical University of Berlin -->
<!-- For further information see: www.citygml.org -->
<!-- For the history of changes and additions to this CityGML schema see file history.txt -->
<xs:schema xmlns="http://www.opengis.net/citygml/texturedsurface/1.0" xmlns:core="http://www.opengis.net/citygml/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/citygml/texturedsurface/1.0"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="../../GML/3.1.1/base/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/citygml/1.0" schemaLocation="cityGMLBase.xsd"/>
<!-- ========================================================================================= -->
<!-- ==============================CityGML TexturedSurface module ================================= -->
<!-- ========================================================================================= -->
<!-- ========================================================================================= -->
<!-- ================================MATERIAL/TEXTURES======================================= -->
<!-- =========================DEPRECATED since CityGML version 0.4.0============================== -->
<!-- =======The following types and elements are expected TO BE REMOVED in future CityGML versions========== -->
<!-- ==================Please, only use the CityGML Appearance model instead. ========================== -->
<!-- ========================================================================================= -->
<xs:complexType name="TexturedSurfaceType">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. The concept of positioning
textures on surfaces complies with the standard X3D. Because there has been no appropriate texturing concept in GML3, CityGML adds the class
TexturedSurface to the geometry model of GML 3. A texture is specified as a raster image referenced by an URI, and can be an arbitrary resource,
even in the internet. Textures are positioned by employing the concept of texture coordinates, i.e. each texture coordinate matches with exactly
one 3D coordinate of the TexturedSurface. The use of texture coordinates allows an exact positioning and trimming of the texture on the surface
geometry. Each surface may be assigned one or more appearances, each refering to one side of the surface. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="gml:OrientableSurfaceType">
<xs:sequence>
<xs:element ref="appearance" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="TexturedSurface" type="TexturedSurfaceType" substitutionGroup="gml:OrientableSurface"/>
<!-- ========================================================================================= -->
<xs:element name="appearance" type="AppearancePropertyType"/>
<!-- ========================================================================================= -->
<xs:complexType name="AppearancePropertyType">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. A property that has an
_Appearance as its value domain, which can either be a Material (Color,...) or a Texture. The _Appearance Element can either be encapsulated in
an element of this type or an XLink reference to a remote _Appearance element (where remote geometry elements are located in another document or
elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none. The side of the surface
the _Appearance refers to is given by the orientation attribute, which refers to the corresponding sign attribute of the orientable surface: +
means the side with positive orientation, and - the side with negative orientation. </xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0">
<xs:element ref="_Appearance"/>
</xs:sequence>
<xs:attribute name="orientation" type="gml:SignType" default="+"/>
<xs:attributeGroup ref="gml:AssociationAttributeGroup"/>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:complexType name="AbstractAppearanceType" abstract="true">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. This abstract type is the
parent type of MaterialType and SimpleTextureType. It is derived from gml:AbstractGMLType, thus it inherits the attribute gml:id and may be
referenced by an appearanceProperty, although it is defined elsewhere in another appearanceProperty. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="gml:AbstractGMLType"/>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="_Appearance" type="AbstractAppearanceType" abstract="true" substitutionGroup="gml:_GML"/>
<!-- ========================================================================================= -->
<xs:complexType name="MaterialType">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. Adopted from X3D standard
(http://www.web3d.org/x3d/) </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractAppearanceType">
<xs:sequence>
<xs:element name="shininess" type="core:doubleBetween0and1" minOccurs="0"/>
<xs:element name="transparency" type="core:doubleBetween0and1" minOccurs="0"/>
<xs:element name="ambientIntensity" type="core:doubleBetween0and1" minOccurs="0"/>
<xs:element name="specularColor" type="Color" minOccurs="0"/>
<xs:element name="diffuseColor" type="Color" minOccurs="0"/>
<xs:element name="emissiveColor" type="Color" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="Material" type="MaterialType" substitutionGroup="_Appearance"/>
<!-- ========================================================================================= -->
<xs:complexType name="SimpleTextureType">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. Adopted from X3D standard
(http://www.web3d.org/x3d/). ToDo: repeat </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="AbstractAppearanceType">
<xs:sequence>
<xs:element name="textureMap" type="xs:anyURI"/>
<xs:element name="textureCoordinates" type="gml:doubleList"/>
<xs:element name="textureType" type="TextureTypeType" minOccurs="0"/>
<xs:element name="repeat" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ========================================================================================= -->
<xs:element name="SimpleTexture" type="SimpleTextureType" substitutionGroup="_Appearance"/>
<!-- ========================================================================================= -->
<xs:simpleType name="TextureTypeType">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. Textures can be qualified by
the attribute textureType. The textureType differentiates between textures, which are specific for a certain object and are only used for that
object (specific), and prototypic textures being typical for that kind of object and are used many times for all objects of that kind (typical).
A typical texture may be replaced by a specific, if available. Textures may also be classified as unknown. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="specific"/>
<xs:enumeration value="typical"/>
<xs:enumeration value="unknown"/>
</xs:restriction>
</xs:simpleType>
<!-- ========================================================================================= -->
<xs:simpleType name="Color">
<xs:annotation>
<xs:appinfo>deprecated</xs:appinfo>
<xs:documentation>Deprecated since CityGML version 0.4.0. Use the concepts of the CityGML Appearance module instead. List of three values (red,
green, blue), separated by spaces. The values must be in the range between zero and one. </xs:documentation>
</xs:annotation>
<xs:restriction base="core:doubleBetween0and1List">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- ========================================================================================= -->
</xs:schema>
This diff is collapsed.
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment