deegree Web Map Service

v.2.1





























lat/lon GmbH

Aennchenstr. 19

53177 Bonn

Germany

Tel ++49 - 228 - 184 96-0

Fax ++49 - 228 - 184 96-29

info@lat-lon.de

www.lat-lon.de


Dept. of Geography

Bonn University

Meckenheimer Allee 166

53115 Bonn


Tel. ++49 228 732098

Change log

Date

Description

Author

2006-11-10

Default behaviour for layer data sources adapted to changes in deegree implementation

Andreas Poth

2006-10-18

Description for accessing cascaded GetFeatureInfo request added

Andreas Poth

2006-11-03

Added details of supported SLD functionalities (Remote WFS servers) in section 4.1.4.

Markus Müller

2006-12-22

Added passed/added parameters for data sources.

Andreas Schmitz

2007-01-10

Update using new formatting style

Markus Müller

2007-05-22

Revision for demo version 2.1

Hanko Rubach

2007-12-11

Remove typos; reformatting

Judit Mays



Table of Contents

1 Introduction 4

2 Download / Installation 6

2.1Prerequisites 6

2.2deegree Web Map Service release 6

2.3Testing the installation 6

3 Architecture 9

4 Basic configuration 10

4.1Structure of the configuration files 10

4.2The deegree WMS configuration document 10

4.2.1The deegree WMS configuration document 10

4.2.2Service Parameter 12

4.2.3Capability/Request-Parameter 13

4.2.4Exceptions / UserDefinedSymbolization 15

4.2.5Layer 16

4.3Defining Styles 25

4.3.1Label placement 27

5 Advanced configuration 30

5.1Manual Tomcat integration 30

5.2Offer own vector data (short description) 33

Appendix A Example wms_configuration.xml 35

Appendix B Supported SRS 53

Appendix C Featuretype Definition 55

Appendix D Deployment Descriptor (web.xml) 57



Index of Tables

Table 1: Directory structure of the WMS release 6



Illustration Index

Figure 1: Response of blue lake example GetMap request 7

Figure 2: Response of blue lake example GetMap request 8

Figure 3: WFS, WCS and WMS as data sources for deegree WMS 9

Figure 4: Files affecting the deegree WMS configuration 10



1 Introduction

deegree is a Java Framework offering the main building blocks for Spatial Data Infrastructures (SDIs). Its entire architecture is developed using standards of the Open Geospatial Consortium (OGC) and ISO Technical Committee 211 – Geographic information / Geoinformatics (ISO/TC 211). deegree encompasses OGC Web Services as well as clients. deegree is Free Software protected by the GNU Lesser General Public License (GNU LGPL) and is accessible at http://www.deegree.org.

deegree2 is the new release of deegree supporting a number of features deegree1 was not able to handle. This documentation describes setup and configuration of deegree Web Map Service (WMS), an implementation of OGC's Web Map Service Implementation Specification 1.1.1. deegree WMS is the official Reference Implementation of the OGC for the mentioned standard.

deegree's WMS is able to render vector data as well as raster data from different storage formats and deliver it to any client that is able to perform a HTTP GET or POST request. The currently supported storage formats are:



Besides a WMS, deegree comprises a number of additional services and clients. A complete list of deegree components can be found at:

http://www.lat-lon.de Products

Downloads of packaged deegree components can be found at:

http://www.deegree.org Download

deegree's Web Map Service offers great flexibility regarding its configuration and adaption to different data sources, formats and server environments. The configuration of WMS is similar to the configuration of other deegree web services and requires editing of different XML files which control the functionality of the server.

The web services of deegree are realized as Java modules controlled by one central servlet (a “dispatcher”). This servlet has to be integrated into the respective web server/servlet engine. Most of the common web servers support servlet technology, thus making deegree a universal product. The Apache-Tomcat 5.5 Servlet-Engine is recommended due to its widespread use and its status as an open-source product.

2 Download / Installation



2.1Prerequisites

For deegree2 Web Map Service to run you need:

For installation of these components refer to the corresponding documentation at java.sun.com and tomcat.apache.org.

2.2deegree Web Map Service release

deegree Web Map Service can be downloaded from http://www.deegree.org. The release is packed as a WAR-archive. Simply put this file into your $TOMCAT_HOME$/webapps directory and (re-)start Tomcat. The installation of deegree WMS is already done with this.

Note: It is also possible to extract the WAR archive into another place of your computer and direct Tomcat to this place. Because of this possibility, in the remainder of this document, the directory you extracted the files to is referred to as $wms_home$ (=$TOMCAT_HOME$/webapps/deegree-wms in the standard case).

Your $wms_home$ will contain the following structure:

directory

Content

./WEB-INF

Required by Tomcat, containing all libraries, configuration- and data-files

./WEB-INF/conf/wms

WMS configuration files

./WEB-INF/data

Example datasets

./WEB-INF/conf/tools

SQL scripts for creating and filling example database

Table 1: Directory structure of the WMS release

2.3Testing the installation

deegree WMS comes with two sample data sets:



All of this data is automatically extracted and installed when unpacking the deegree WMS demo.

If installation succeeded, deegree WMS should be running by now with the sample data sets. Try the following request in your web browser:

http://127.0.0.1:8080/deegree-wms/services?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities

This should provide a valid XML Capabilities file (if your browser asks for an application to open the file, try your browser again or any text editor). If this worked fine try a map request:

blue lake

http://127.0.0.1:8080/deegree-wms/services?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=467&HEIGHT=321&LAYERS=Buildings,DividedRoutes,Forests,Lakes,MapNeatline&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-0.004398,-0.003327182608695652,0.004531852173913042,0.0028108956521739124&SRS=EPSG:4326&STYLES

This request should deliver the following picture:

Rahmen1



UTAH

http://127.0.0.1:8080/deegree-wms/services?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=467&HEIGHT=321&LAYERS=Counties&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-27471.97559929872,4039616.6884999997,928973.8818492987,4697045.211499999&SRS=EPSG:26912&STYLES

Rahmen4

If all of this worked fine, your deegree WMS is running and you can now add your own data. But let’s first have a brief look at the architecture of deegree WMS.

3 Architecture

deegree2 WMS does not implement direct data access. All data that is used to create a map will be accessed via a WFS, WCS or another WMS. WFS and WCS can be realized locally – i.e. in the same Virtual Machine (VM) as the deegree WMS – or remotely as a web service (Figure 3). Different WMS layers can be delivered by different WFS, WCS, or WMS servers.

Rahmen2



For configuration purposes this means that if setting up a deegree WMS you also have to configure at least a LOCALWFS or LOCALWCS. Therefore it is recommended to consult these documentations as well if interested in advanced configuration options.

4 Basic configuration

4.1Structure of the configuration files

The following figure shows the relationships between the different configuration files that have to be adapted:




Figure 4: Files affecting the deegree WMS configuration




Besides these files, two additional files have to be adapted (if you do not use the default directories coming with the demo installation). These two files are responsible for configuring the local WFS and WCS; see deegree WFS- and WCS-documentation for details.

4.2The deegree WMS configuration document

The basic configuration allows use of the full set of parameters that can be used for controlling the deegree WMS using the deegree WMS configuration document. This includes the parameters mentioned in the OGC WMS 1.1.1 specification for the Capabilities document, but also additional specific technical parameters as for example descriptions of data sources for each layer or the maximum cache size. You can find the wms_configuration.xml file under $wms-home$/WEB-INF/conf/wms.

In the following, the elements of the configuration file will be described in detail. Appendix A includes the complete configuration document.

4.2.1The deegree WMS configuration document

<?xml version="1.0" encoding="UTF-8"?>

<WMT_MS_Capabilities

xmlns:deegree="http://www.deegree.org/wms"

xmlns:sld="http://www.opengis.net/sld"

xmlns:gml="http://www.opengis.net/gml"

xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1.1" updateSequence="1.1.0">

Here namespace binding and schema locations are referenced. xsi:schemaLocation= Element encapsulates an online resource that references the location of the DTD defining the capabilities format. As default this is the DTD located at the opengis schema server. But if the WMS shall be used behind a firewall, proxy or just locally it may be useful to define another location.

After the root element, some deegree-WMS-specific parameters are defined. The <DefaultOnlineResource> is the URL by which the WMS operations can be invoked. This parameter can be overwritten by the URLs defined in the request-definitions. Both parameters are mandatory. You have to adjust the <DefaultOnlineResource> to your system.

<deegree:DeegreeParam>

<!-- The default online resource will be used for the following: If no LegendURL is provided, a GetLegendGraphic request with this URL will be deprecated automatically. If no OnlineResource element is specified within the Service element, this one will be inserted automatically. The operation specific online resources will NOT be filled automatically, since they also specify the HTTP methhod to be used. -->

<deegree:DefaultOnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services"/>

<!-- default = 100 (MB) -->

<deegree:CacheSize>100</deegree:CacheSize>

<!-- maximum lifetime of the processes in the WMS; default = 3600 (sec)-->

<deegree:MaxLifeTime>3600</deegree:MaxLifeTime>

<!-- maximum time for the execution of a request until an exception of time-exceed is thrown default 15 seconds -->

<deegree:RequestTimeLimit>45</deegree:RequestTimeLimit>

<!-- determines the quality of the map/image generated from a GetMap request.

the parameter will only be evaluated if the desired format is able to handle it. The range of values is 0 ... 1, where 1 is best and 0 is worst. default is 0.95 -->

<deegree:MapQuality>0.95</deegree:MapQuality>

<!-- maximum map width that can be requested. default = 1000 -->

<deegree:MaxMapWidth>1000</deegree:MaxMapWidth>

<!-- maximum map height that can be requested. default = 1000 -->

<deegree:MaxMapHeight>1000</deegree:MaxMapHeight>

<deegree:AntiAliased>true</deegree:AntiAliased>

<!-- copyright note that will be drawn to the left bottom side of the maps ; you can also reference a graphic file using absolute path to file e.g. c:/images/mylogo.jpg -->

<deegree:Copyright>deegree-WMS V.2.1 2007</deegree:Copyright>

<!-- radius of the circle around the point a user has clicked to that will

be considered for creating a search area for a GetFeatureInfo request;

default = 5 -->

<deegree:FeatureInfoRadius>10</deegree:FeatureInfoRadius>

<!-- returns the URl where the DTD for OGC WMS capabilities DOCTYPE definition is located. default = http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd You can also reference this document locally if you run this service without internet connection -->

<deegree:DTDLocation>

<deegree:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd"/>

</deegree:DTDLocation>

<!-- define a proxy server if the WMS is separated by a firewall from the DTD-location or the locations of connected REMOTEWFS, REMOTEWCS and REMOTEWMS as an alternative you can set command line parameters at the call of the java interpreter like this: java -DproxyHost=131.220.106.104 -DproxyPort=1234 -classpath ... -->

<!--Proxy proxyHost="131.220.106.104" proxyPort="1234"/-->

</deegree:DeegreeParam>

The <CacheSize> parameter defines the size of the cache available to deegree-WMS in megabyte (this does not affect the cache for data sources). This parameter is optional, its default value is 100 MB. With the <MaxLifeTime> the user defines the time interval after which the internal processes of the WMS will be stopped if there are no active requests. If this parameter is not supplied, its default is 3600 seconds. By <RequestTimeLimit> the maximum time span is defined after which a request has to be processed. If this value is exceeded the processing is cancelled and an exception will be thrown. Its default value is 15 seconds.

Afterwards a <MapQuality> parameter is defined, by which the quality of the created maps can be controlled. Values for this parameter are between 0 (lowest quality) and 1 (best quality) with the default value being 0.95. This parameter is only used for image formats supporting different quality values (e.g. jpeg).

The following two parameters limit the maximum size of a map that can be requested via WMS. It has to be considered that requesting large maps is very taxing on a server as the processing cost increases with the square of the border length of a map. For example, the creation a map having 1000x1000 pixel takes four times the memory than creating a map with size 500x500 pixel. Default is 1000 pixel for width and height.

With the <Copyright> parameter it is possible to write a copyright mark in the lower left corner of each map. A copyright note can be either a text fragment or a reference to an image (e.g. c:/images/copyright.gif). In case this parameter is not supplied no output is produced.

If the WMS runs behind a firewall/proxy it is necessary to publish the proxy server address and port to the WMS (Java runtime environment) if data from remote data sources outside the firewall are included in the WMS. Because in this case the WMS has to access servers from outside the firewall the network connection have to be passed through the proxy. Alternatively the proxy parameters can be passed to the Java runtime environment by command line parameters when starting the servlet engine (see java documentation).

4.2.2Service Parameter

The following definition of service metadata is adopted from the WMS 1.1.1 specification.

<Service>

<Name>WMS</Name>

<Title>deegree2.1 demowms</Title>

<!-- abstract and keywords are optional -->

<Abstract>WMS reference implementation</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>wms</Keyword>

</KeywordList>

<!-- The default online resource above will fill this one in for us, as well as in capabilities section. -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://localhost:8080/deegree-wms/services?" />

<!-- the following service information is optional -->

<ContactInformation>

<ContactPersonPrimary>

<ContactPerson>Andreas Poth</ContactPerson>

<ContactOrganization>lat/lon</ContactOrganization>

</ContactPersonPrimary>

<ContactPosition>Technical Director</ContactPosition>

<ContactAddress>

<AddressType>Postal</AddressType>

<Address>Aennchenstr. 19</Address>

<City>Bonn</City>

<StateOrProvince>NRW</StateOrProvince>

<PostCode>53177</PostCode>

<Country>Germany</Country>

</ContactAddress>

<ContactVoiceTelephone>0049228184960</ContactVoiceTelephone>

<ContactFacsimileTelephone>00492281849629</ContactFacsimileTelephone>

<ContactElectronicMailAddress>info@lat-lon.de

</ContactElectronicMailAddress>

</ContactInformation>

<Fees>none</Fees>

<AccessConstraints>none</AccessConstraints>

</Service>

4.2.3Capability/Request-Parameter

The request-definition (GetCapabilities, GetMap and GetFeatureInfo) is in its form very similar to the definitions in OGC WMS 1.1.1 specification. However, some of the mandatory elements are declared optional. In case they are not supplied, deegree uses the corresponding default values. It is for example possible to not reference any of the requests explicitly. By default, GetCapabilities, GetMap and GetFeatureInfo will be initialized.

The following example is used to explain this by means of a GetMap request.

<GetMap>

<!-- default = image/gif; image/png; image/jpg -->

<!-- mandatory = image/png -->

<Format>image/gif</Format>

<Format>image/png</Format>

<Format>image/jpeg</Format>

<Format>image/jpg</Format>

<!--Format>image/tif</Format-->

<!--Format>image/tiff</Format-->

<!--Format>image/bmp</Format-->

<DCPType>

<HTTP>

<Get>

<!--

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple">

<xlink:href="http://localhost:8080/deegree-wms/services?" />

-->

</Get>

<Post>

<!--

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"xlink:type="simple"

xlink:href="http://localhost:8080/deegree-wms/services?" />

-->

</Post>

</HTTP>

</DCPType>

</GetMap>


You have to adjust the "xlink:href" attribute of the <OnlineResource> element to your system or leave it empty.

In case no <GetMap> element is defined, a GetMap with the formats image/gif, image/png and image/jpg will be initialized using the <DefaultOnlineResource> as web address for http-POST and GET. If a <GetMap> element is defined supplying information regarding Online-Resources but not the format, the above mentioned formats will be supported and initialized.

If only http-GET is defined, only this protocol is supported. Otherwise, if only http-POST is defined, http-GET is complemented as it is mandatory. The behaviour of the server regarding the image formats is likewise, all mandatory image formats will be initialized even if not defined by the user. An exception to this behaviour is the format image/png that is initialized anyway, as the OGC WMS 1.1.1 specification suggests the support of one format able to define an alpha-channel.

The behaviour of the initialization for GetCapabilities and GetFeature is similar to GetMap. Configuration of the operations DescribeLayer, GetLegendGraphic, GetStyles and PutStyles is also optional, but they will not be initialized with default values.

The format definition of GetFeatureInfo-Requests is distinctly different to the other format definitions. Its default format is application/vnd.ogc.gml. However, further user-defined formats are possible. These are created using XSLT-transformations of the original GML output format. For allowing users (WMS-administrators) to define the output format without restrictions, it is possible to set the attribute ‘filter’ for the <Format>-elements of the GetFeatureInfo definition (with the exception of <Format>application/vnd.ogc.se_xml</Format>). This attribute references an XSLT-script, performing the output formatting.

<GetFeatureInfo>

<!-- default & mandatory = application/vnd.ogc.gml -->

<Format>application/vnd.ogc.gml</Format>

<Format>text/plain</Format>

<Format>text/html</Format>

<!-- <Format filter="file:///c:/deegreewms/wms/toXML.xsl">application/vnd.ogc.wms_xml</Format> -->

<DCPType>

<HTTP>

<Get>

<!-- <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services?" /> -->

</Get>

</HTTP>

</DCPType>

</GetFeatureInfo>

In this example the XSLT-script file:///c:/deegreewms/wms/toXML.xsl is used as filter for the output format 'application/vnd.ogc.wms_xml', but there is no filter definition for 'text/html'. In this special case deegree is using a default filter defined by $wms-home$/WEB-INF/conf/wms/featureinfo2html.xsl.

The "xlink:href" attribute of the <OnlineResource> element can be left empty (will be inserted automatically) or be set manually.

<sld:GetLegendGraphic>

<Format>image/gif</Format>

<Format>image/png</Format>

<Format>image/jpeg</Format>

<Format>image/jpg</Format>

<Format>image/tif</Format>

<Format>image/bmp</Format>

<DCPType>

<HTTP>

<Get>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://localhost:8080/deegree-wms/services?" />

</Get>

</HTTP>

</DCPType>

</sld:GetLegendGraphic>

4.2.4Exceptions / UserDefinedSymbolization

Just as there are default initializations for the output formats of GetMap, GetCapabilities and GetFeatureInfo, the same is true for the exception formats supplied by deegree-WMS.

The settings in the configuration will be adapted depending on the requested version.

<Exception>

<!-- default & mandatory= application/vnd.ogc.se_xml -->

<Format>application/vnd.ogc.se_xml</Format>

<Format>application/vnd.ogc.se_inimage</Format>

<Format>application/vnd.ogc.se_blank</Format>

</Exception>

If this information is not supplied, the default value 'XML' is used. If one or more Exception-formats are defined, this default format is complemented.



The next element defines if the WMS is capable of supporting SLDs.


<UserDefinedSymbolization SupportSLD="1" UserLayer="1" UserStyle="1" RemoteWFS="1"/>


This element as well as its attributes are optional. Its lacking indicates that the WMS is not able to support SLD, even if the WMS is technically capable to handle this kind of requests.

SLD allows three alternatives to access remote servers (using GetMap Parameters, <remoteOWS> element or some default WFS); deegree WMS only supports the second option: a <remoteOWS-element that is part of a <UserLayer>.

4.2.5Layer

In the following, the layers known to the WMS are defined. Some elements here are not defined by the WMS 1.1.1 specification, especially those creating the association between layer and its data source.

It is possible, that a WMS supplies no layer definitions, indicating it serves no data of its own (a ‘component’ WMS as defined in the SLD specification). Such a server is nonetheless capable of serving maps by obtaining data directly or indirectly from the SLD documents sent to it.

The additional elements of the deegree-WMS configuration define the association of a layer with a data source (i.e. from a WFS or WCS). If a <Layer> has a <Name> but does not define a data source, using this layer with a GetMap or a GetFeatureInfo request causes that all <Layer>s nested within this layer will be affected by a request.

Simple reduced overview of example configuration:

<Layer>

<Layer>nested Cite layers

<Layer>Cite layer 1

</Layer>

<Layer>Cite layer 2

</Layer>

<Layer>Cite layer X

</Layer>

</Layer>

<Layer>nested Utah layer

<Layer>nested Utah administration

<Layer>Utah county

</Layer>

<Layer>Utah Municipalities

</Layer>

</Layer>

<Layer>Cite layer2

</Layer>

<Layer>Cite layerX

</Layer>

</Layer>

</Layer>

Full example for one nested layer:

...

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>citelayers</Name>

<Title>Cite Layers</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- queryable="1" sets GetFeatureInfo to enabled. If set to "1" at least one datasource must be set to "1" too -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<!-- please choose a unique <name> without spaces and a title which can contain more details -->

<Name>BasicPolygons</Name>

<Title>BasicPolygons</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<!-- queryable="1" sets GetFeatureInfo to enabled for this datasource -->

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:BasicPolygons</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<!--name of the property that contains the geometries for this layer this element will only be resolved if the data source is a LOCALWFS or a REMOTEWFS default = 'app:GEOM' -->

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:BasicPolygons</Name>

<Title>default:BasicPolygons</Title>

<deegree:StyleResource>cite.xml</deegree:StyleResource>

</Style>

<!-- In case you do not wish to use the automatic legend generation you need to set the <sld:GetLegendGraphic> here. Refer to the documentation for details -->

</Layer>

<!-- The following Layer definition could be used as default for your own layers -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Bridges</Name>

<Title>Bridges</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Bridges</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Bridges</Name>

<Title>default:Bridges</Title>

<deegree:StyleResource>cite.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>

...



The configuration given in the example above will enable to perform a GetMap or GetFeatureInfo request on layer 'cite'. Because 'cite' itself does not define its own data source but nests two layers its resulting map/info result will be the same as performing a GetMap or GetFeatureInfo request against 'BasicPolygons' and 'Bridges'.

<Layer xmlns:app="http://www.deegree.org/app" queryable="1" cascaded="0" opaque="1" noSubsets="1">

<Name>Europe</Name>

<Title>Datenlayer 1</Title>

<Abstract>first testing layer</Abstract>

<deegree:DataSource xmlns:deegree="http://www.deegree.org/wms"

failOnException="1" queryable="1">

<!-- default = equals the layer name and must be equal to the feature type

or the layer name of the connected OWS -->

<deegree:Name>app:Europe</deegree:Name>

<!--name of the property that contains the geometries for this layer .

this element will only be resolved if the data source is a LOCALWFS or a

REMOTEWFS, the value is case sensitive

default = 'app:GEOM' -->

<deegree:GeometryProperty>app:GEOM</deegree:GeometryProperty>

<!--possible values: LOCALWFS, LOCALWCS, REMOTEWFS, REMOTEWCS,

REMOTEWMS -->

<!-- default = LOCALWFS -->

<deegree:Type>LOCALWFS</deegree:Type>

<!-- default is %Type%_capabilities.xml at the directory

$wms-home$/WEB-INF/xml;

default can only be used if data source type is LOCALXXX otherwise

reference to the capabilities of the remote service must be set -->

<deegree:OWSCapabilities>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"

type="simple"

xlink:href="http://www.lat-lon.de/documents/capabilities.xml"/>

</deegree:OWSCapabilities>

<deegree:ScaleHint min="0" max="1000"/>

<!-- optional; the filter expression will be completed with the requested

bounding box -->

<deegree:FilterCondition>

<wfs:Query typeName="app:Europe" xmlns:gml="http://www.opengis.net/gml"

xmlns:ogc="http://www.opengis.net/ogc"

xmlns:wfs="http://www.opengis.net/wfs">

<wfs:PropertyName>app:Name</wfs:PropertyName>

<wfs:PropertyName>app:Area</wfs:PropertyName>

<wfs:PropertyName>app:Border</wfs:PropertyName>

<ogc:Filter>

<ogc:And>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>app:Area</ogc:PropertyName>

<ogc:Literal>50000</ogc:Literal>

</ogc:PropertyIsLessThan>

<ogc:PropertyIsLike wildCard="*" singleChar="?"

escape="\">

<ogc:PropertyName>

app:Administrator/app:City</ogc:PropertyName>

<ogc:Literal>53115 Bonn</ogc:Literal>

</ogc:PropertyIsLike>

</ogc:And>

</ogc:Filter>

</wfs:Query>

</deegree:FilterCondition>

</deegree:DataSource>

<deegree:DataSource failOnException="1" queryable="0">

<!-- default = equals the layer name and must be equal to the feature type

or the layer name of the conected OWS -->

<deegree:Name>app:EuropeanRivers</deegree:Name>

<!--name of the property that contains the geometries for this layer .

this element will only be solved if the data source is a LOCALWFS or a

REMOTEWFS

default = 'app:GEOM' -->

<deegree:GeometryProperty>app:the_geom</deegree:GeometryProperty>

<!-- default is %Type%_capabilities.xml at the directory

$wms-home$/WEB-INF/xml;

default can only be used if data source type is LOCALXXX otherwise

reference to the capabilities of the remote service must be set -->

<deegree:OWSCapabilities>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"

type="simple"

xlink:href="http://www.lat-lon.de/documents/another_capabilities_file.xml"/>

</deegree:OWSCapabilities>

<deegree:ScaleHint min="0" max="1000"/>

</deegree:DataSource>

<deegree:DataSource failOnException="0" queryable="0">

<deegree:Name>TK500</deegree:Name>

<deegree:Type>REMOTEWMS</deegree:Type>

<deegree:OWSCapabilities>

<deegree:OnlineResource xlink:href="http://www.geoserver.nrw.de/GeoOgcWms1.3/

servlet/NRW500?SERVICE=WMS&amp;VERSION=1.1.0&amp;REQUEST=GetCapabilities"

xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink"/>

</deegree:OWSCapabilities>

<deegree:FilterCondition>

<deegree:WMSRequest><![CDATA[Version=1.1.0&FORMAT=image/jpeg&

TRANSPARENT=false&EXCEPTIONS=application/vnd.ogc.se_inimage&BGCOLOR=

0xffffff&LAYERS=Raster:UEK500:UEK500&STYLES=]]></deegree:WMSRequest>

<deegree:VendorspecificParameterDefinition>


<deegree:PassedVendorspecificParameter>

<deegree:Name>sessionid</deegree:Name>

<deegree:Name>another</deegree:Name>

</deegree:PassedVendorspecificParameter>


<deegree:AddedVendorspecificParameter>

<deegree:VendorspecificParameter>

<deegree:Name>user</deegree:Name>

<deegree:Value>aUser</deegree:Value>

</deegree:VendorspecificParameter>

<deegree:VendorspecificParameter>

<deegree:Name>password</deegree:Name>

<deegree:Value>aPassword</deegree:Value>

</deegree:VendorspecificParameter>

</deegree:AddedVendorspecificParameter>


</deegree:VendorspecificParameterDefinition>

</deegree:FilterCondition>

<deegree:FeatureInfoTransformation>

<deegree:OnlineResource

xlink:href="file:///C:/deegree/wms/transformRemoteWMS.xsl"

xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink"/>

</deegree:FeatureInfoTransformation>

<deegree:ValidArea>

<gml:Polygon srsName="EPSG:4326">

<gml:outerBoundaryIs>

<gml:LinearRing>

<gml:coordinates>0,0 100,0 100,100 0,100 0,0</gml:coordinates>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</deegree:ValidArea>

<deegree:TransparentColors>

<deegree:Color>#000000</deegree:Color>

<deegree:Color>#FF0000</deegree:Color>

</deegree:TransparentColors>

</deegree:DataSource>

</Layer>

4.2.5.1DataSource

After the optional element <Abstract>, zero, one or more <deegree:DataSource> elements are defined. <deegree:DataSource> can be provided multiple times in case a scale-dependent definition or an overlay is needed that uses different featuretypes/layers. A <deegree:DataSource> may have two attributes:

The <Name> element of the DataSource supplies the name of the FeatureType, Coverage or Layer of the data that is supplied by the afterwards described OWS. The <Name> must be defined.

After the FeatureType/Coverage/Layer name the properties of the data source are defined. If a WFS will be used as data source <deegree:GeometryProperty> may be defined. As a WFS can use arbitrarily defined properties to store geometries, this element is only needed if the data store is a LOCALWFS or a REMOTEWFS. Its default value is ‘app:GEOM’.

The third sub element of <deegree:DataSource> declares the type of the data source. Five different values are possible for this:

To be able to use the full set of opportunities the deegree WMS offers you should read the deegree WFS and WCS documentation. There will be explained how to configure access to a database and file-based raster and vector data sources. If you use a remote OWS as data source you may have to study its configuration documentation.

<deegree:Type> is also optional, its default value is LOCALWFS.

<deegree:OWSCapabilities> specifies access to the capabilities of a remote or local data source. If for example a REMOTEWFS is defined as data source, the <deegree:OWSCapabilities> - respectively the <OnlineResource> - has to point to the Capabilities-document of the WFS.

If no <deegree:OWSCapabilities> is supplied, only the values LOCALWFS and LOCALWCS are valid. In case a WCS or a REMOTEWMS is defined as data source, it is necessary to assure that they can deliver their data as image/gif, image/png, image/tif, image/jpeg or as image/bmp.

<deegree:OWSCapabilities>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://www.lat-lon.de/documents/capabilities.xml"/>

</deegree:OWSCapabilities>

or

<deegree:OWSCapabilities>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://remote-wfs-server.de/servicename?SERVICE=WFS&amp;
VERSION=1.1.0&amp;REQUEST=GetCapabilities"/>

</deegree:OWSCapabilities>

In case you use a local WFS but do not use the default capabilities (LOCALWFS_capabilities.xml) a file URL will be used to reference the capabilities document of the WFS.

<deegree:OWSCapabilities>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="file:///c:/documents/capabilities.xml"/>

</deegree:OWSCapabilities>

In case neither <deegree:Type> nor <deegree:OWSCapabilities> are supplied it is assumed that the data source is a LOCALWFS whose Capabilities are in a document named 'LOCALWFS_capabilities.xml' in the directory $wms-home$/WEB-INF/conf/wms/. If LOCALWCS is defined as <Type> and no <OWSCapabilities> element is supplied it is assumed that the Capabilities of the WCS are in a document named 'LOCALWCS_capabilities.xml' in the directory $wms-home$/WEB-INF/conf/wms/.

The optional element <deegree:ScaleHint> indicates the span of scales for which the respective data source is valid, it corresponds to the element defined by OGC WMS 1.1.1. If multiple data sources are defined for one layer, the spans supplied by <deegree:ScaleHint> must not overlap.

As next sub-element of <deegree:DataSource> a <deegree:FilterCondition> can be defined, that constrains the data delivered by a data source. For example a layer might be associated only with those features of the feature type ‘app:Europe’ (Type = REMOTEWFS or LOCALWFS), whose areas are smaller than 50000 m² and whose data administrator is working in Bonn. Please refer wms_configuration.xml to find a different example.


<!-- optional; the filter expression will be enhanced by the bounding box of the current request -->

<deegree:FilterCondition>

<wfs:Query typeName="app:Europe" xmlns:gml="http://www.opengis.net/gml"

xmlns:ogc="http://www.opengis.net/ogc"

xmlns:wfs="http://www.opengis.net/wfs">

<wfs:PropertyName>app:Name</wfs:PropertyName>

<wfs:PropertyName>app:Area</wfs:PropertyName>

<wfs:PropertyName>app:Border</wfs:PropertyName>

<ogc:Filter>

<ogc:And>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>app:Area</ogc:PropertyName>

<ogc:Literal>50000</ogc:Literal>

</ogc:PropertyIsLessThan>

<ogc:PropertyIsLike wildCard="*" singleChar="?"

escape="\">

<ogc:PropertyName>

app:Administrator/app:City</ogc:PropertyName>

<ogc:Literal>53115 Bonn</ogc:Literal>

</ogc:PropertyIsLike>

</ogc:And>

</ogc:Filter>

</wfs:Query>

</deegree:FilterCondition>



The filter expression must be applicable to the defined type of the data source, meaning that for example the filter defined above can only be used in conjunction with a WFS, that stores features belonging to the feature type app:Europe. The <typeName> of the query in this case overwrites the value of the element <Name> defined above in the DataSource tag.

The following example shows the <FilterCondition> for a REMOTEWMS:

<FilterCondition>

<WMSRequest><![CDATA[VERSION=1.1.1&LAYERS=Ortsteile,Bezirke&

STYLES=style1,default&FORMAT=jpg&BGCOLOR=0xFFFFFF&

TRANSPARENT=true]]></WMSRequest>

<deegree:VendorspecificParameterDefinition>


<deegree:PassedVendorspecificParameter>

<deegree:Name>sessionid</deegree:Name>

<deegree:Name>another</deegree:Name>

</deegree:PassedVendorspecificParameter>


<deegree:AddedVendorspecificParameter>

<deegree:VendorspecificParameter>

<deegree:Name>user</deegree:Name>

<deegree:Value>aUser</deegree:Value>

</deegree:VendorspecificParameter>

<deegree:VendorspecificParameter>

<deegree:Name>password</deegree:Name>

<deegree:Value>aPassword</deegree:Value>

</deegree:VendorspecificParameter>

</deegree:AddedVendorspecificParameter>


</deegree:VendorspecificParameterDefinition>

</FilterCondition>

In this case the filter expression is overwriting several parameters of the layers (Name of the data store, styles) and of an incoming request (VERSION, FORMAT, BGCOLOR, TRANSPARENT). Other parameters (SRS, WIDTH, HEIGHT, BBOX, EXCEPTION, REQUEST) must not be overwritten, as this might lead to inconsistencies when processing GetMap and GetFeatureInfo-Requests.

It is also possible to tell deegree which vendor specific parameters of an incoming request will be passed on to the remote server (the rest will be ignored) and which ones shall be automatically added to each request. This may be useful if the remote WMS does not know about a session ID, but requires extra login information, for example.

In the above example, the parameters “sessionid” and “another” would be passed along with their values, as well as the additional “user” and “password” parameters with their values “aUser” and “aPassword”.

The VendorspecificParameterDefinition element is optional.

A filter for a WCS is similar to one for WMS:

<FilterCondition>

<WCSRequest>

<![CDATA[version=1.0.0&Coverage=world&Format=jpg]]>

</WCSRequest>

</FilterCondition>


To all filters a BoundingBox is dynamically added, when a GetMap-request is processed.

When assigning a RemoteWMS as a data source you may not just perform GetMap requests against it but also GetFeatureInfo requests. Because OGC WMS specification does not define a clear format for GetFeatureInfo responses deegree WMS may not be able to process results returned by a cascaded WMS. If a cascaded server returns an XML format you have the option to register an XSLT-script to the corresponding data source that transforms incoming XML documents into flat GML2 compliant feature collections. Registration of such an XSL script is done by adding the following element:

<deegree:FeatureInfoTransformation>

<deegree:OnlineResource

xlink:href="file:///C:/deegree/wms/transformRemoteWMS.xsl"

xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink"/>

</deegree:FeatureInfoTransformation>


The element <deegree:ValidArea> defines the area for which the data source is valid. Any polygon can be used for defining a valid area. This can be useful if a layer integrates more than one data source where each data source is responsible for a different area because it may be served by different vendors.

<deegree:ValidArea>

<gml:Polygon srsName="EPSG:4326">

<gml:outerBoundaryIs>

<gml:LinearRing>

<gml:coordinates>0,0 100,0 100,100 0,100 0,0</gml:coordinates>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</deegree:ValidArea>


At last the element <deegree:TransparentColors> can be used with raster data sources (WMS, WCS). It defines a list of colors that shall be turned to be transparent. For each color of a raster that shall be transformed to be transparent one <deegree:Color> element is added to <deegree:TransparentColors>. Colors are defined as hexadecimal RGB code with a leading '#'.

<deegree:TransparentColors>

<deegree:Color>#000000</deegree:Color>

<deegree:Color>#FF0000</deegree:Color>

</deegree:TransparentColors>

4.2.5.2SRS / BoundingBox / Style

The following elements are optional elements defined by WMS 1.1.1. They are not modified by the deegree-configuration and not initialized with default values.

<!-- Just add the <SRS> you wish to support with your WMS -->

<!-- default = EPSG:4326 -->

<SRS>EPSG:4326</SRS>

<SRS>EPSG:26912</SRS>

<!-- It is strongly recommended that you set a LatLonBoundingBox; further <BoundingBox>es are optional. Each layer inherits the BBoxes of the parent layer as long as no explicit on is set. -->

<LatLonBoundingBox miny="-90" maxy="90" minx="-180" maxx="180" />

<!-- Setting <BoundingBox>es ist optional but if set be sure to set the correct SRS="EPSG:" -->

<BoundingBox SRS="EPSG:26912" miny="3581352" maxy="5432672" minx="0" maxx="1504379" />

Note that the deegree WMS supports automatic coordinate reference system (CRS) for vector data (In WMS Specification the notion SRS instead of CRS is used). This means each layer based on a vector data set coming from a shape file or an Oracle Spatial database is available in nearly 300 CRS; you just have to define the ones you like for each layer or group of layers through <SRS> elements as in the code fragment above. A list of supported CRS is given in appendix B. There, you also find a java request to extract the latest list of supported CRS.

Next are the optional styles definitions for a layer. A <deegree:StyleResource> element was added here, giving information about the resource where the style is defined. The resource where a style is defined must be a valid Styled Layer Descriptor document (see below)

<Style>

<Name>teststyle</Name>

<Title>ein teststype</Title>

<!-- here you set the name of the style and the location <deegree: StyleResource> where the WMS will find a style definition with the same <UserStyle> name-->

<deegree:StyleResource>styles.xml</deegree:StyleResource>

<Abstract>dies ist nur ein test</Abstract>

<LegendURL width="50" height="50">

<Format>image/jpg</Format>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://www.deegree.org/legend/teststyle.jpg"/>

</LegendURL>

<StyleSheetURL>

<Format>/xsl</Format>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://www.deegree.org/legend/teststyle.xsl"/>

</StyleSheetURL>

<StyleURL>

<Format>/css</Format>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://www.deegree.org/legend/teststyle.css"/>

</StyleURL>

</Style>


Default value for <deegree:StyleResource> is '$wms_home$/WEB-INF/conf/wms/styles.xml'.

Besides individually defined styles, each layer knows a default-style, that can be address either by the name 'default' or with a missing style parameter. If there is no style defined for a layer and cannot be inherited, such a layer knows exclusively the default style. deegree-WMS allows definition of distinct default styles for each layer individually. For this purpose a style can be defined in '$wms_home$/WEB-INF/conf/wms/styles.xml' with its name beginning with 'default:' and displaying the name of the layer (default:%layername%). If for example a layer named 'Counties' is defined the name of its default style is default:Counties. If no individual default style is provided, the internal default style of deegree is used (area = 50% gray, lines = 1 pixel width an black, points = 7 pixel square 50% gray.

4.3Defining Styles

Style definition for the deegree WMS will be done by creating one or more Styled Layer Descriptor (SLD) documents and assigning the UserStyles defined within it to one or more layers of the WMS. An SLD document that can be used for deegree WMS style definitions is valid against the OGC SLD 1.0.0 specification and defines one single 'NamedLayer'. The name of the <NamedLayer> element can be chosen freely and won't be evaluated currently. Within the <NamedLayer> element the user may define as many <UserStyle> elements as he likes. For better clarity we recommend to use more than one SLD document if the WMS offers a great amount of layers. The name of the 'UserStyles' corresponds to the name of the styles that can be assigned to a layer within the WMS configuration file as described above.

The following extract shows an example of an SLD

<?xml version="1.0" encoding="UTF-8"?>

<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" xmlns:java="java" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xslutil="de.latlon.deejump.plugin.style.XSLUtility" xmlns:deegreewfs="http://www.deegree.org/wfs" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:gml="http://www.opengis.net/gml" xmlns:app="http://www.deegree.org/app" xmlns:ogc="http://www.opengis.net/ogc" xmlns="http://www.opengis.net/sld" version="1.0.0">

<!-- Please be aware, that namespaces are used. So if you use featuretypes which are bound to app: the property names in this document must use them too. e.g. <ogc:PropertyName>app:geometry</ogc:PropertyName> -->

<sld:NamedLayer>

<sld:Name>Administration_etc</sld:Name>

<sld:UserStyle>

<!-- The <sld:Name> of the <sld:UserStyle> must be identical to the one referenced in the wms_configuration.xml -->

<sld:Name>default:StateBoundary</sld:Name>

<sld:Title>default:StateBoundary</sld:Title>

<sld:IsDefault>0</sld:IsDefault>

<sld:FeatureTypeStyle>

<sld:Name>SGID024_StateBoundary</sld:Name>

<sld:Rule>

<sld:Name>State Boundary</sld:Name>

<sld:MinScaleDenominator>0</sld:MinScaleDenominator>

<sld:MaxScaleDenominator>99999999</sld:MaxScaleDenominator>

<sld:PolygonSymbolizer>

<ogc:Geometry>

<ogc:PropertyName>app:geometry</ogc:PropertyName>

</ogc:Geometry>

<sld:Fill>

<sld:CssParameter name="fill">#00b400</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1.0</sld:CssParameter>

</sld:Fill>

<sld:Stroke>

<sld:CssParameter name="stroke">#007d00</sld:CssParameter>

<sld:CssParameter name="stroke-opacity">1.0</sld:CssParameter>

<sld:CssParameter name="stroke-width">3</sld:CssParameter>

<sld:CssParameter name="stroke-dasharray">1</sld:CssParameter>

</sld:Stroke>

</sld:PolygonSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle>

</sld:UserStyle>

<sld:UserStyle>

<sld:Name>default:Municipalities</sld:Name>

<sld:Title>default:Municipalities</sld:Title>

<sld:IsDefault>0</sld:IsDefault>

<sld:FeatureTypeStyle>

<sld:Name>Municipalities 2004</sld:Name>

<sld:Rule>

<sld:Name>Municipalities</sld:Name>

<sld:MinScaleDenominator>0</sld:MinScaleDenominator>

<sld:MaxScaleDenominator>99999999</sld:MaxScaleDenominator>

<sld:PolygonSymbolizer>

<ogc:Geometry>

<ogc:PropertyName>app:geometry</ogc:PropertyName>

</ogc:Geometry>

<sld:Fill>

<sld:CssParameter name="fill">#e1b33f</sld:CssParameter>

<sld:CssParameter name="fill-opacity">0.1</sld:CssParameter>

</sld:Fill>

<sld:Stroke>

<sld:CssParameter name="stroke">#5f3d03</sld:CssParameter>

<sld:CssParameter name="stroke-opacity">1.0</sld:CssParameter>

<sld:CssParameter name="stroke-width">1</sld:CssParameter>

<sld:CssParameter name="stroke-dasharray">1</sld:CssParameter>

</sld:Stroke>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:MinScaleDenominator>0</sld:MinScaleDenominator>

<sld:MaxScaleDenominator>1600000</sld:MaxScaleDenominator>

<sld:TextSymbolizer>

<sld:Label>

<ogc:PropertyName>app:name</ogc:PropertyName>

</sld:Label>

<sld:Font>

<sld:CssParameter name="font-family">Arial</sld:CssParameter>

<sld:CssParameter name="font-family">Sans-Serif</sld:CssParameter>

<sld:CssParameter name="font-size">11</sld:CssParameter>

<sld:CssParameter name="font-color">#000000</sld:CssParameter>

</sld:Font>

<sld:LabelPlacement>

<sld:PointPlacement>

<sld:Displacement>

<sld:DisplacementX>0</sld:DisplacementX>

<sld:DisplacementY>0</sld:DisplacementY>

</sld:Displacement>

</sld:PointPlacement>

</sld:LabelPlacement>

</sld:TextSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle>

</sld:UserStyle>

</sld:NamedLayer>

</sld:StyledLayerDescriptor>

For a detailed description of defining a Styled Layer Descriptor document please have a look at the OGC SLD 1.0.0 specification. deegree supports most forms of style definition except for raster data (RasterSymbolizer).

One additional feature of the deegree WMS in context of defining styles that has been mentioned before is its capability of using an individual default style for each layer. To realize this for each layer a <UserStyle> must be defined that has a name starting with 'default:' followed by the layer’s name (e.g. default:StateBoundary is the default style for the layer StateBoundary; see SLD fragment above). So if the default style is defined in a GetMap request the individual default style will be selected. If you don't define an individual default style 50% gray for fills and 1 pixel thick black lines will be used.

TIP:

To convert existing ESRI .avl visualization rules to SLD use the following command

java -classpath .:deegree2.jar org.deegree.tools.shape.AVL2SLD

There is a AVL2SLDtool.sh/.bat in the tools directory which you can adapt to your demands.

4.3.1Label placement

The deegree WMS supports the automatic and optimized placement of labels for points and polygons. To force an automatic label placement an additional attribute has to be used at the <PointPlacement> element of the <TextSymbolizer>.

<sld:UserStyle>

<sld:Name>default:Springs</sld:Name>

<sld:Title>default:Springs</sld:Title>

<sld:IsDefault>1</sld:IsDefault>

<sld:FeatureTypeStyle>

<sld:Name>Springs</sld:Name>

<sld:Rule>

...

</sld:Rule>

<sld:Rule>

<sld:Name>Springs</sld:Name>

<sld:MinScaleDenominator>0</sld:MinScaleDenominator>

<sld:MaxScaleDenominator>500000</sld:MaxScaleDenominator>

<sld:TextSymbolizer>

<sld:Geometry>

<ogc:PropertyName>app:geometry</ogc:PropertyName>

</sld:Geometry>

<sld:Label>

<ogc:PropertyName>app:source</ogc:PropertyName>

</sld:Label>

<sld:Font>

<sld:CssParameter name="font-family">Arial</sld:CssParameter>

<sld:CssParameter name="font-family">Sans-Serif</sld:CssParameter>

<sld:CssParameter name="font-style">italic</sld:CssParameter>

<sld:CssParameter name="font-size">10</sld:CssParameter>

<sld:CssParameter name="font-color">#222222</sld:CssParameter>

</sld:Font>

<sld:LabelPlacement>

<!-- There are two options to place the text either automatically or by setting AnchorPoint/Displacement -->

<sld:PointPlacement auto="true" />

<!-- <sld:PointPlacement>

<sld:Displacement></sld:Displacement>-->

<!-- The coordinates are given as two floating-point numbers in the AnchorPointX and AnchorPointY elements each with values between 0.0 and 1.0 inclusive. The bounding box of the label to be rendered is considered to be in a coordinate space from 0.0 (lower-left corner) to 1.0 (upper-right corner), and the anchor position is specified as a point in this space. The default point is X=0, Y=0.5, which is at the middle height of the left-hand side of the label. -->

<!-- <sld:AnchorPoint>

<sld:AnchorPointX>0</sld:AnchorPointX>

<sld:AnchorPointY>0.5</sld:AnchorPointY>

</sld:AnchorPoint>-->

<!-- This will often be used to avoid over-plotting a graphic symbol marking a city or some such feature. The displacements are in units of pixels above and to the right of the point. A system may reflect this displacement about the X and/or Y axes to de-conflict labels. The default displacement is X=0, Y=0 -->

<!--<sld:Displacement>

<sld:DisplacementX>5</sld:DisplacementX>

<sld:DisplacementY>-10</sld:DisplacementY>

</sld:Displacement>

</sld:PointPlacement>-->

</sld:LabelPlacement>

<sld:Halo>

<sld:Fill>

<sld:CssParameter name="fill">#0080C0</sld:CssParameter>

<sld:CssParameter name="fill-opacity">0.6</sld:CssParameter>

</sld:Fill>

</sld:Halo>

</sld:TextSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle>

</sld:UserStyle>


The <UserStyle> given above defines a label for the geometry of a feature named 'app:geometry'. The label will print the content of the features 'app:source' property. The geometry can be a point, a polygon or a multi-polygon. As <LabelPlacement> <PointPlacement> is chosen so the label is related to a point which is the point geometry by itself or the centroid of the visible part of a polygon (<LinePlacement> isn't supported yet). It has an additional attribute named 'auto' not defined in the SLD specification that forces a label placement optimization if it is set to 'true'. If it is missing or set to 'false' no optimization will be done and the user is free to fix the position of the labels by its own definitions (e.g. AnchorPoint, Displacement, Rotation, ... ; see SLD specifications how to do this).

LabelPlacement for Linestrings is a little bit different, but not much:

<sld:Rule>

<sld:Name>Textsymbolizer</sld:Name>

<sld:MinScaleDenominator>0</sld:MinScaleDenominator>

<sld:MaxScaleDenominator>500000</sld:MaxScaleDenominator>

<sld:TextSymbolizer>

<sld:Geometry>

<ogc:PropertyName>app:geometry</ogc:PropertyName>

</sld:Geometry>

<sld:Label>

<ogc:PropertyName>app:code</ogc:PropertyName>

</sld:Label>

<sld:Font>

<CssParameter name="font-family">Serif</CssParameter>

<CssParameter name="font-style">normal</CssParameter>

<CssParameter name="font-weight">normal</CssParameter>

<CssParameter name="font-size">12</CssParameter>

<CssParameter name="font-color">#000000</CssParameter>

</sld:Font>

<sld:LabelPlacement>

<sld:LinePlacement>

<sld:PerpendicularOffset>above</sld:PerpendicularOffset>

<!-- width of the line the label is associated with -->

<sld:LineWidth>2.5</sld:LineWidth>

<!-- gap between labels measured in label width -->

<sld:Gap>5</sld:Gap>

</sld:LinePlacement>

</sld:LabelPlacement>

</sld:TextSymbolizer>

</sld:Rule>

Instead of <PointPlacement> the Element <LinePlacement> will be used. At the moment LinePlacement doesn't support automatic label placement optimization but using the three elements contained in the <LinePlacement> element you can already realize good results. The <PerpendicularOffset> defines the relative position of the label according to the line. You can use a number as defined in the SLD specifications or set a predefined value (above, below, center). If you use one of predefined values it is useful to set a value for <LineWidth> to ensure that if you choose 'above' the label will be really above the line and not partially within it.

Using the <Gap> element you can determine the gap between the labels of one Linestring. The value of <Gap> is measured in the length of the label string. This means if a river shall be labeled with 'Rhine' one gap will have the length of the string 'Rhine'. The labeling will look like this Rhine Rhine Rhine. If you choose <Gap>0</Gap> you will get a labelling like this Rhine Rhine Rhine Rhine Rhine.

5 Advanced configuration

5.1Manual Tomcat integration

The location of deegree's libraries and the central deegree wms configuration file wms_configuration.xml should be registered with the Servlet Engine (in this case Apache Tomcat 5.5). Tomcat offers several possibilities to register and configure web contexts.

The easiest way to register deegree web services with Tomcat is to copy the deegree-wms.war file to the $TOMCAT_HOME$/webapps directory. You can do this either with running or stopped tomcat. If the tomcat is started afterwards, the application should be automatically deployed. Tomcat will unpack the deegree-wms.war file (which is nothing more than a .zip file) to the webapps directory. The name of the .war sets the name of the service address:

http://localhost:8080/deegree-wms

If you want to do the Tomcat installation process manually use the steps described in the following.

Unpack the deegree-wms.war to a directory of your choice (e.g. c:/deegree/webapps/deegree-wms).

Afterwards Tomcat needs information about the root directory of the WMS. The easiest way is to create an XML-file in the directory $TOMCAT_HOME$/conf/Catalina/localhost, named exactly as the service e.g. deegree-wms.xml, and fill it with the following information

<Context docBase="c:/deegree/webapps/deegree-wms" path="/deegree-wms">

</Context>

where the docBase attribute reflects the physical location of the deegree service in the file system and the path attribute describes the virtual location of the main directory of the deegree web service. In the example, the root directory of the service is accessible at http://my.server.domain/deegree-wms/. For further information have a look at the Tomcat documentation included in the installation.

The name of the deegree-service directory is arbitrary whereas Tomcat definitely looks for a subdirectory WEB-INF (in capital letters – even on a Windows system) in the root directory. You will find this directory after tomcat automatically unpacked the war archive. Here the Deployment-Descriptor (web.xml) is located, which is analysed by Tomcat to identify the servlet(s) belonging to the application, their names, the parameters that are delivered to the servlet(s) and information about the existing access restrictions.

Before starting deegree WMS the following dataset entry in web.xml is essential:

<?xml version="1.0"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>deegree 2.1</display-name>

<description>deegree 2.1 OWS</description>

<servlet>

<servlet-name>owservice</servlet-name>

<servlet-class>org.deegree.enterprise.servlet.OGCServletController</servlet-class>


<init-param>

<param-name>services</param-name>

<param-value>wms</param-value>

<description>

list of supported services, e.g.: wfs,wms,wcs (comma separated) always use lowercase

</description>

</init-param>


<!-- WMS INITIALIZING PARAMETERS -->

<init-param>

<param-name>wms.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WMSHandler</param-value>

</init-param>

<init-param>

<param-name>wms.config</param-name>

<param-value>WEB-INF/conf/wms/wms_configuration.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>owservice</servlet-name>

<url-pattern>/services</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/index.jsp</welcome-file>

</welcome-file-list>

<error-page>

<error-code>500</error-code>

<location>/error.jsp</location>

</error-page>

<error-page>

<exception-type>org.deegree.ogcwebservices.OGCWebServiceException</exception-type>

<location>/error.jsp</location>

</error-page>

</web-app>

The name of the servlet and of the java-class representing the servlet should be indicated in the <servlet> tags. The servlet-name can be user defined, but care should be taken that the same name that is defined here is also used in the servlet-mapping. The servlet is located in the deegree2.jar library.

The tag <init-param> defines parameters that are analyzed by the servlet, during initialization. The transferred parameters are

If you want to make more than one service available through a servlet context, web.xml looks like this (the example defines a 'wms' as well as a 'wfs' and if you uncomment the WCS section even this one is accessible):

<?xml version="1.0"?>
<!
DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>deegree 2.1</display-name>

<description>deegree 2.1 OWS</description>

<servlet>

<servlet-name>owservice</servlet-name>

<servlet-class>org.deegree.enterprise.servlet.OGCServletController</servlet-class>


<init-param>

<param-name>services</param-name>

<param-value>wms,wfs</param-value>

<description>

list of supported services, e.g.: wfs,wms,wcs (comma separated) always use lowercase

</description>

</init-param>


<!-- WMS INITIALIZING PARAMETERS -->

<init-param>

<param-name>wms.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WMSHandler</param-value>

</init-param>

<init-param>

<param-name>wms.config</param-name>

<param-value>WEB-INF/conf/wms/wms_configuration.xml</param-value>

</init-param>


<!-- WFS INITIALIZING PARAMETERS -->

<init-param>

<param-name>wfs.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WFSHandler</param-value>

</init-param>

<init-param>

<param-name>wfs.config</param-name>

<param-value>WEB-INF/conf/wms/LOCALWFS_capabilities.xml</param-value>

</init-param>


<!-- WCS INITIALIZING PARAMETERS -->

<!--

<init-param>

<param-name>wcs.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WCSHandler</param-value>

</init-param>

<init-param>

<param-name>wcs.config</param-name>

<param-value>WEB-INF/conf/wcs/LOCALWCS_capabilities.xml</param-value>

</init-param>

-->

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>owservice</servlet-name>

<url-pattern>/services</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/index.jsp</welcome-file>

</welcome-file-list>

<error-page>

<error-code>500</error-code>

<location>/error.jsp</location>

</error-page>

<error-page>

<exception-type>org.deegree.ogcwebservices.OGCWebServiceException</exception-type>

<location>/error.jsp</location>

</error-page>

</web-app>

The tag <servlet-mapping> defines the alias name for the servlet. It is not necessary that the <servlet-name> and <url-pattern> are identical. <url-pattern> is the name for the parameter the servlet will be called through (part of the base-URL of the service that all requests have to use). Combined with the path settings in $TOMCAT_HOME$/conf/Catalina/localhost/deegree-wms.xml and respectively the name of the .war which you deployed in the $TOMCAT_HOME$/webapps (in our example deegree-wms) you should be able to point to your WMS (OWS) via the following URL: http://my.server.domain/deegree-wms/services?

5.2Offer own vector data (short description)

This deegree 2.1 WMS release comes bundled with a configuration of WFS and WCS as these are the data sources of the WMS. It is not possible for the WMS to connect to databases or files directly. You will find detailed information on how to configure the deegree 2.1 WFS and 2.1 WCS in separate download packages/documentation. But still you find some scripts under $wms_home$/WEB-INF/conf/tools with some short hints to assist you to add own data. The three steps you have to take are

  1. create a featuretypedefiniton.xsd for the LOCALWFS and place it in $wms_home$/WEB-INF/conf/wms/featuretypes

  2. Adapt the $wms_home$/WEB-INF/conf/wms/wms_configuration.xml to your demands (add needed SRS support, bounding boxes, etc) and add a layer definition

  3. create a style.xml or use an existing file. Create a <UserStyle> and reference it in the wms_configuration.xml (refer Chapter 4.2 et seqq)

  4. restart tomcat and you ready!

Featuretype definitions can be created with support by tools. Tools are supplied for Windows (xxx.bat) and Linux (xxx.sh) operating systems. Before you start one of the tools you have to adapt them to your demands. You find preconfigured commands for the demo datasets which you can uncomment and adapt. You can edit these scripts with any text editor. Afterwards just go with your shell/console to the mentioned tools directory and run the desired script. To create a featuretype defninition on shape files use the script 'ShapetoFeatureTypeDef', to create Postgis database access use the script 03_DBtoFeatureTypeDef.

Open the created featuretypedefinition.xsd and do further manual configuration:

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<deegreewfs:MappingField field='the_geom' type='GEOMETRY' srs='26912'/>

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>


Follow with the steps 2 & 3 and you are ready.

Appendix A Example wms_configuration.xml

Path of file: $wms_home$/WEB-INF/conf/wms/

<?xml version="1.0" encoding="UTF-8"?>

<WMT_MS_Capabilities xmlns:deegree="http://www.deegree.org/wms"

xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml"

xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1.1" updateSequence="1.1.0">


<deegree:DeegreeParam>

<!-- The online resource parameter must be set here: The 'deegree-wms' originates form the context file in apache under $Tomcat_home$/conf/Catalina/
localhost/deegree-wms.xml or the name of the .war file under $Tomcat_home$/
webapps/ depending on where the root directory of the service is located; the services url-pattern originates from the deployment descriptor under $w
ms_home$/WEB-INF/web.xml <url-pattern>/services</url-pattern> -->

<deegree:DefaultOnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services" />

<!-- default = 100 (MB) -->

<deegree:CacheSize>100</deegree:CacheSize>

<!-- maximum lifetime of the processes in the WMS; default = 3600 (sec)-->

<deegree:MaxLifeTime>3600</deegree:MaxLifeTime>

<!-- maximum time for the execution of a request until an exception of time-exceed is thrown default 15 Sekunden -->

<deegree:RequestTimeLimit>45</deegree:RequestTimeLimit>

<!-- determines the quality of the map/image generated from a GetMap request.

the parameter only will be evaluated if the desired format is able to handle it. the range of values is 0 ... 1, where 1 is best and 0 is worst. default is 0.95 -->

<deegree:MapQuality>0.95</deegree:MapQuality>

<!-- maximum map width that can be requested. default = 1000 -->

<deegree:MaxMapWidth>1000</deegree:MaxMapWidth>

<!-- maximum map height that can be requested. default = 1000 -->

<deegree:MaxMapHeight>1000</deegree:MaxMapHeight>

<deegree:AntiAliased>true</deegree:AntiAliased>

<!-- copyright note that will be drawn to the left bottom side of the maps ; you can also reference a graphic file using absolute path to file e.g. c:/images/mylogo.jpg -->

<deegree:Copyright>deegree-WMS V.2.1 2007</deegree:Copyright>

<!-- radius of the circle around the point a user has clicked to that will

be considered for creating a search area for a GetFeatureInfo request;

default = 5 -->

<deegree:FeatureInfoRadius>10</deegree:FeatureInfoRadius>

<!-- returns the URl where the DTD for OGC WMS capabilities DOCTYPE definition

is located. default = http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd -->

<deegree:DTDLocation>

<deegree:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="WMS_MS_Capabilities.dtd" />

</deegree:DTDLocation>

<!--deegree:DTDLocation>

<deegree:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd"/>

</deegree:DTDLocation-->

<!-- define a proxy server if the WMS is separated by a firewall from the DTD-location or the locations of connected REMOTEWFS, REMOTEWCS and REMOTEWMS as an alternative you can set command line parameters at the call of the java interpreter like this: java -DproxyHost=131.220.106.104 -DproxyPort=1234 -classpath ... -->

<!--Proxy proxyHost="131.220.106.104" proxyPort="1234"/-->

</deegree:DeegreeParam>


<Service>

<Name>deegree wms</Name>

<Title>deegree wms</Title>

<!-- abstract und keywords are optional -->

<Abstract>wms reference implementation</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>wms</Keyword>

</KeywordList>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://localhost:8080/deegree-wms/services" />

<!-- the following service information is optional -->

<ContactInformation>

<ContactPersonPrimary>

<ContactPerson>Andreas Poth</ContactPerson>

<ContactOrganization>lat/lon</ContactOrganization>

</ContactPersonPrimary>

<ContactPosition>Technical Director</ContactPosition>

<ContactAddress>

<AddressType>XXXX</AddressType>

<Address>Aennchenstr. 19</Address>

<City>Bonn</City>

<StateOrProvince>NRW</StateOrProvince>

<PostCode>53177</PostCode>

<Country>Germany</Country>

</ContactAddress>

<ContactVoiceTelephone>0049228184960</ContactVoiceTelephone>

<ContactFacsimileTelephone>00492281849629</ContactFacsimileTelephone>

<ContactElectronicMailAddress>info@lat-lon.de</ContactElectronicMailAddress>

</ContactInformation>

<Fees>none</Fees>

<AccessConstraints>none</AccessConstraints>

</Service>

<Capability>

<Request>

<!-- by default available -->

<GetCapabilities>

<!-- default and mandatory = application/vnd.ogc.wms_xml -->

<Format>application/vnd.ogc.wms_xml</Format>

<DCPType>

<HTTP>

<Get>

<!-- If left empty, it will be automatically filled with the parameters of <deegree:DefaultOnlineResource> -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services?" />

</Get>

<!-- POST isn't supported -->

</HTTP>

</DCPType>

</GetCapabilities>

<!-- by default available -->

<GetMap>

<!-- default = image/gif; image/png; image/jpg -->

<!-- mandatory = image/png -->

<Format>image/gif</Format>

<Format>image/png</Format>

<Format>image/jpg</Format>

<Format>image/tif</Format>

<Format>image/bmp</Format>

<DCPType>

<HTTP>

<Get>

<!-- If left empty, it will be automatically filled with the

parameters of <deegree:DefaultOnlineResource> -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services?" />

</Get>

<Post>

<!-- If left empty, it will be automatically filled with the

parameters of <deegree:DefaultOnlineResource> -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services?" />

</Post>

</HTTP>

</DCPType>

</GetMap>

<!-- by default available -->

<GetFeatureInfo>

<!-- default & mandatory = application/vnd.ogc.gml -->

<Format>application/vnd.ogc.gml</Format>

<Format>text/plain</Format>

<Format>text/html</Format>

<DCPType>

<HTTP>

<Get>

<!-- If left empty, it will be automatically filled with the

parameters of <deegree:DefaultOnlineResource> -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://localhost:8080/deegree-wms/services?" />

</Get>

<!-- POST isn't supported -->

</HTTP>

</DCPType>

</GetFeatureInfo>

<GetLegendGraphic>

<!-- default = image/gif; image/png; image/jpg -->

<!-- mandatory = image/png -->

<Format>image/gif</Format>

<Format>image/png</Format>

<Format>image/jpeg</Format>

<Format>image/jpg</Format>

<Format>image/tif</Format>

<Format>image/bmp</Format>

<DCPType>

<HTTP>

<Get>

<!-- If left empty, it will be automatically filled with the

parameters of <deegree:DefaultOnlineResource> -->

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost:8080/deegree-wms/services?" />

</Get>

<!-- POST isn't supported -->

</HTTP>

</DCPType>

</GetLegendGraphic>

</Request>

<Exception>

<!-- default & mandatory= application/vnd.ogc.se_xml -->

<Format>application/vnd.ogc.se_xml</Format>

<Format>application/vnd.ogc.se_inimage</Format>

<Format>application/vnd.ogc.se_blank</Format>

</Exception>

<!-- optional; default = all false -->

<UserDefinedSymbolization SupportSLD="1" UserLayer="1" UserStyle="1" RemoteWFS="0" />

<!-- cascaded is optional and default=false -->

<!-- TOP LAYER As you are able to nest Layers as in this example please always make sure that you have the appropriate number of opening layer tags <Layer> and closing layer tags </Layer> -->

<Layer queryable="0" cascaded="0" noSubsets="0" xmlns:app="http://www.deegree.org/app">

<Title>deegree 2.1 Demo WMS</Title>

<!-- abstract and keyword are optonal -->

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<!-- Just add the <SRS> you wish to support with your WMS -->

<!-- default = EPSG:4326 -->

<SRS>EPSG:4326</SRS>

<SRS>EPSG:26912</SRS>

<!-- It is strongly recommended that you set a LatLonBoundingBox; further <BoundingBox>es are optional. Each layer inherits the BBoxes of the parent layer as long as no explicit on is set. -->

<LatLonBoundingBox miny="-90" maxy="90" minx="-180" maxx="180" />

<!-- Setting <BoundingBox>es ist optional but if set be sure to set the correct SRS="EPSG:" -->

<BoundingBox SRS="EPSG:26912" miny="3581352" maxy="5432672" minx="0" maxx="1504379" />

<!-- default 0 ; 9E99 -->

<ScaleHint min="0" max="100000000" />

<!-- This layer has a <Name>, but no data source. You can request this layer anyway as you get all the sub-layers. You even get the GetFeatureInfo but your client must be able to handle the result as each sublayer has it's own properties (attributes). If you don't want this layer to be accessible remove the name tag (<Name>citelayers</Name>). -->


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>citelayers</Name>

<Title>Cite Layers</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>


<LatLonBoundingBox miny="-0.004" maxy="0.004" minx="-0.004" maxx="0.004" />

<!-- queryable="1" sets whether GetFeatureinfo is enabled or not. for this layer if set to "1" at least one data source must be set to "1" too -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<!-- please choose a unique <name> without spaces and a title which can contain more details -->

<Name>BasicPolygons</Name>

<Title>BasicPolygons</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- sets the range of scale, where the WMS will serve data for this layer -->

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<!-- queryable="1" sets whether GetFeatureinfo is enabled or not for this datasource -->

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:BasicPolygons</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<!--name of the property that contains the geometries for this layer this element will only be solved if the data source is a LOCALWFS or a REMOTEWFS default = 'app:GEOM' -->

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<!-- here you set the name of the style and the location <deegree:StyleResource> where the WMS will find a style definition with the same <UserStyle> name-->

<Name>default:BasicPolygons</Name>

<Title>default:BasicPolygons</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

<!-- If LegendURL is set for layers the default automated legend graphic

will be overwritten -->

<!--<LegendURL width="50" height="50">

<Format>image/jpg</Format>

<OnlineResource xlink="http://www.w3.org/1999/xlink" type="simple"

xlink:href="http://www.yourdomain.com/legend/teststyle.jpg"/>

</LegendURL>-->

</Style>

</Layer>

<!-- The following Layer definition could be uses as default for your own layers -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Bridges</Name>

<Title>Bridges</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Bridges</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Bridges</Name>

<Title>default:Bridges</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Buildings</Name>

<Title>Buildings</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Buildings</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Buildings</Name>

<Title>default:Buildings</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>BuildingCenters</Name>

<Title>BuildingCenters</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Buildings</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:BuildingCenters</Name>

<Title>default:BuildingCenters</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>DividedRoutes</Name>

<Title>DividedRoutes</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:DividedRoutes</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:DividedRoutes</Name>

<Title>default:DividedRoutes</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Forests</Name>

<Title>Forests</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Forests</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Forests</Name>

<Title>default:Forests</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Lakes</Name>

<Title>Lakes</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Lakes</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Lakes</Name>

<Title>default:Lakes</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>MapNeatline</Name>

<Title>MapNeatline</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:MapNeatline</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:MapNeatline</Name>

<Title>default:MapNeatline</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>NamedPlaces</Name>

<Title>NamedPlaces</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:NamedPlaces</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:NamedPlaces</Name>

<Title>default:NamedPlaces</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Ponds</Name>

<Title>Ponds</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Ponds</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Ponds</Name>

<Title>default:Ponds</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>RoadSegments</Name>

<Title>RoadSegments</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:RoadSegments</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:RoadSegments</Name>

<Title>default:RoadSegments</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Streams</Name>

<Title>Streams</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Streams</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geom</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Streams</Name>

<Title>default:Streams</Title>

<deegree:StyleResource>cite_style.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>


<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->

<!-- +++++++++++++++++++ Utah ++++++++++++++++++++++ -->

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>utah</Name>

<Title>Utah Demo Data</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- Example for a LOCALWCS -->

<Layer queryable="0" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>orthoimage</Name>

<Title>Ortho Imagery of Salt Lake City</Title>

<SRS>EPSG:26912</SRS>

<deegree:DataSource failOnException="0" queryable="0">

<deegree:Name>saltlakesatelite</deegree:Name>

<deegree:Type>LOCALWCS</deegree:Type>

<deegree:OWSCapabilities>

<deegree:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="LOCALWCS_capabilities.xml" />

</deegree:OWSCapabilities>

<deegree:FilterCondition>

<deegree:WCSRequest>

<![CDATA[VERSION=1.0.0&coverage=saltlakesatelite&TRANSPARENT=TRUE&FORMAT=jpg&EXCEPTIONS=application/vnd.ogc.se_xml]]>

</deegree:WCSRequest>

</deegree:FilterCondition>

</deegree:DataSource>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>StateBoundary</Name>

<Title>StateBoundary</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:StateBoundary</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:StateBoundary</Name>

<Title>default:StateBoundary</Title>

<deegree:StyleResource>state_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>StateOverview</Name>

<Title>StateOverview</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>100000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:StateBoundary</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:CountyBoundaries_edited</deegree:Name>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>


<Style>

<Name>default:StateOverview</Name>

<Title>default:StateOverview</Title>

<deegree:StyleResource>state_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<!-- Example for a REMOTEWMS; cascaded="1" indicates, that this layer originates from a remote WMS -->

<Layer queryable="1" cascaded="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>landcover</Name>

<Title>National Land Cover Dataset (JUST EPSG:4326 => WGS 84)</Title>

<SRS>EPSG:4326</SRS>

<LatLonBoundingBox miny="37.88970184326172" maxy="42.91960144042969"

minx="-115.55139923095703" maxx="-110.41089630126953" />

<deegree:DataSource failOnException="1" queryable="1">

<deegree:Name>3:5</deegree:Name>

<deegree:Type>REMOTEWMS</deegree:Type>

<deegree:OWSCapabilities>

<deegree:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/Utah_State_University_Water_Initiative.wms?SERVICE=WMS&amp;VERSION=1.1.1&amp;REQUEST=GetCapabilities" />

</deegree:OWSCapabilities>

<deegree:FilterCondition>

<deegree:WMSRequest>

<![CDATA[Version=1.1.1&FORMAT=image/png&TRANSPARENT=true&EXCEPTIONS=application/vnd.ogc.se_inimage&BGCOLOR=0xffffff&LAYERS=3:5&STYLES=]]>

</deegree:WMSRequest>

</deegree:FilterCondition>

<deegree:ScaleHint min="0.0" max="9999999999" />

<!-- Specifies the color to be transparent -->

<!-- <deegree:TransparentColors>

<deegree:Color>#000000</deegree:Color>

<deegree:Color>#FF0000</deegree:Color>

</deegree:TransparentColors>-->

</deegree:DataSource>

</Layer>


<!-- This layer contains several sublayers and is able load these as one as it has a <name> -->


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Administration</Name>

<Title>Administration</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- This layer contains 3 style definitions -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Counties</Name>

<Title>County Boundaries</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:CountyBoundaries_edited</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Counties</Name>

<Title>default:Counties</Title>

<deegree:StyleResource>county_styles.xml</deegree:StyleResource>

</Style>

<Style>

<Name>GreyCounties</Name>

<Title>GreyCounties</Title>

<deegree:StyleResource>county_styles.xml</deegree:StyleResource>

</Style>

<Style>

<Name>ColourfulCounties</Name>

<Title>ColourfulCounties</Title>

<deegree:StyleResource>county_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<!-- This Layer contains 2 style definitions -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>ZipCodes</Name>

<Title>Zip Codes</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:ZipCodes</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:ZipCodes</Name>

<Title>default:ZipCodes</Title>

<deegree:StyleResource>state_styles.xml</deegree:StyleResource>

</Style>

<Style>

<Name>ZipCodesPop</Name>

<Title>ZipCodes Population</Title>

<deegree:StyleResource>state_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Municipalities</Name>

<Title>Municipalities</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>1000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Municipalities_edited</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Municipalities</Name>

<Title>default:Municipalities</Title>

<deegree:StyleResource>state_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>


<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Geology</Name>

<Title>Geology</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- This layer contains OGC filter encoding. The WMS collects just defined WFS properties (attributes) as well as selected content (COAL*,PC,GF) -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>EnergyResources</Name>

<Title>Energy Resources</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:EnergyResources</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

<deegree:FilterCondition>

<wfs:Query typeName="app:EnergyResources" xmlns:gml="http://www.opengis.net/gml"

xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs">

<wfs:PropertyName>app:code</wfs:PropertyName>

<!-- <wfs:PropertyName>app:shape_area</wfs:PropertyName> -->

<wfs:PropertyName>app:shape_len</wfs:PropertyName>

<ogc:Filter>

<ogc:Or>

<ogc:Or>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName>app:code</ogc:PropertyName>

<ogc:Literal>PC</ogc:Literal>

</ogc:PropertyIsEqualTo>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName>app:code</ogc:PropertyName>

<ogc:Literal>GF</ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Or>

<ogc:PropertyIsLike wildCard="*" singleChar="?" escape="\">

<ogc:PropertyName>app:code</ogc:PropertyName>

<ogc:Literal>COAL*</ogc:Literal>

</ogc:PropertyIsLike>

</ogc:Or>

</ogc:Filter>

</wfs:Query>

</deegree:FilterCondition>

</deegree:DataSource>

<Style>

<Name>default:EnergyResources</Name>

<Title>default:EnergyResources</Title>

<deegree:StyleResource>geology_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>



<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Hydrology</Name>

<Title>Hydrology</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- Layer containing points -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Springs</Name>

<Title>Springs of Utah</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Springs</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Springs</Name>

<Title>default:Springs</Title>

<deegree:StyleResource>hydro_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Lake</Name>

<Title>Lakes of Utah</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Lake</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Lake</Name>

<Title>default:Lake</Title>

<deegree:StyleResource>hydro_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>



<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>LandUse</Name>

<Title>Land Use</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Vegetation</Name>

<Title>Dominant Vegetation</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Vegetation</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Vegetation</Name>

<Title>default:Vegetation</Title>

<deegree:StyleResource>vegie_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>



<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Infrastructure</Name>

<Title>Infrastructure</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Airports</Name>

<Title>Airports of Utah</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Airports</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Airports</Name>

<Title>default:Airports</Title>

<deegree:StyleResource>infra_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<!-- This layer has 2 data sources used for different scales -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Roads</Name>

<Title>Roads of Utah</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Roads</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

<deegree:ScaleHint min="0.0" max="50" />

</deegree:DataSource>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Roads500</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

<deegree:ScaleHint min="50.0" max="2000000000" />

</deegree:DataSource>

<Style>

<Name>default:Roads</Name>

<Title>default:Roads</Title>

<deegree:StyleResource>roads_styles.xml</deegree:StyleResource>

</Style>

</Layer>

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Railroads</Name>

<Title>Railroads of Utah</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>10000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Railroads</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:geometry</deegree:GeometryProperty>

</deegree:DataSource>

<Style>

<Name>default:Railroads</Name>

<Title>default:Railroads</Title>

<deegree:StyleResource>infra_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>



<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>Elevation</Name>

<Title>Elevation</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<!-- This layer has 3 data sources used for different scale ranges; additional the geometry property is renamed in the featuretype definition file to contourLine which has also to be set in the featuretype definition -->

<Layer queryable="1" noSubsets="0" fixedWidth="0" fixedHeight="0">

<Name>ElevationContours</Name>

<Title>Elevation Contours</Title>

<Abstract>deegree demo WMS</Abstract>

<KeywordList>

<Keyword>deegree</Keyword>

<Keyword>layer</Keyword>

</KeywordList>

<MetadataURL type="ISO19115:2003">

<Format>text/html</Format>

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"

xlink:href="http://www.deegree.org" />

</MetadataURL>

<MinScaleDenominator>0</MinScaleDenominator>

<MaxScaleDenominator>100000000</MaxScaleDenominator>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Contours500Ft</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:contourLine</deegree:GeometryProperty>

<deegree:ScaleHint min="0.0" max="150" />

</deegree:DataSource>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Contours1000Ft</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:contourLine</deegree:GeometryProperty>

<deegree:ScaleHint min="150" max="500" />

</deegree:DataSource>

<deegree:DataSource failOnException="0" queryable="1">

<deegree:Name>app:Contours2500Ft</deegree:Name>

<deegree:Type>LOCALWFS</deegree:Type>

<deegree:GeometryProperty>app:contourLine</deegree:GeometryProperty>

<deegree:ScaleHint min="500" max="200000000" />

</deegree:DataSource>

<Style>

<Name>default:ElevationContours</Name>

<Title>default:ElevationContours</Title>

<deegree:StyleResource>general_styles.xml</deegree:StyleResource>

</Style>

</Layer>

</Layer>

</Layer>

</Layer>

</Capability>

</WMT_MS_Capabilities>





Appendix B Supported SRS

Change in commandline to $wms_home$/WEB-INF/conf/tools and execute:

Linux:

java -cp ../../lib/deegree2.jar:../../lib/jai/jai_core.jar org.deegree.tools.srs.SRSInfo

Windows

java -cp ..\..\lib\deegree2.jar;..\..\lib\jai\jai_core.jar org.deegree.tools.srs.SRSInfo





EPSG:2152

EPSG:4120

EPSG:4121

EPSG:4124

EPSG:4149

EPSG:4150

EPSG:4151

EPSG:4171

EPSG:4173

EPSG:4230

EPSG:4231

EPSG:4237

EPSG:4258

EPSG:4265

EPSG:4267

EPSG:4269

EPSG:4272

EPSG:4274

EPSG:4275

EPSG:4277

EPSG:4284

EPSG:4289

EPSG:4299

EPSG:4308

EPSG:4312

EPSG:4313

EPSG:4314

EPSG:4322

EPSG:4324

EPSG:4326

EPSG:4801

EPSG:4803

EPSG:4806

EPSG:4807

EPSG:4817

EPSG:20790

EPSG:21780

EPSG:21781

EPSG:23028

EPSG:23029

EPSG:23030

EPSG:23031

EPSG:23032

EPSG:23033

EPSG:23034

EPSG:23035

EPSG:23036

EPSG:23037

EPSG:23038

EPSG:23090

EPSG:23095

EPSG:25828

EPSG:25829

EPSG:25830

EPSG:25831

EPSG:25832

EPSG:25833

EPSG:25834

EPSG:25835

EPSG:25836

EPSG:25837

EPSG:25838

EPSG:25884

EPSG:26591

EPSG:26592

EPSG:26716

EPSG:26912

EPSG:27200

EPSG:27291

EPSG:27292

EPSG:27391

EPSG:27392

EPSG:27393

EPSG:27394

EPSG:27395

EPSG:27396

EPSG:27397

EPSG:27398

EPSG:27429

EPSG:27561

EPSG:27562

EPSG:27563

EPSG:27564

EPSG:27571

EPSG:27572

EPSG:27573

EPSG:27574

EPSG:27581

EPSG:27582

EPSG:27583

EPSG:27584

EPSG:27591

EPSG:27592

EPSG:27593

EPSG:27594

EPSG:27700

EPSG:28402

EPSG:28403

EPSG:28404

EPSG:28405

EPSG:28406

EPSG:28407

EPSG:28408

EPSG:28409

EPSG:28462

EPSG:28992

EPSG:29900

EPSG:30800

EPSG:31275

EPSG:31276

EPSG:31277

EPSG:31278

EPSG:31281

EPSG:31282

EPSG:31283

EPSG:31284

EPSG:31285

EPSG:31286

EPSG:31287

EPSG:31300

EPSG:31466

EPSG:31467

EPSG:31468

EPSG:31469

EPSG:31491

EPSG:31492

EPSG:31493

EPSG:31494

EPSG:31495

EPSG:32201

EPSG:32202

EPSG:32203

EPSG:32204

EPSG:32205

EPSG:32206

EPSG:32207

EPSG:32208

EPSG:32209

EPSG:32210

EPSG:32211

EPSG:32212

EPSG:32213

EPSG:32214

EPSG:32215

EPSG:32216

EPSG:32217

EPSG:32218

EPSG:32219

EPSG:32220

EPSG:32221

EPSG:32222

EPSG:32223

EPSG:32224

EPSG:32225

EPSG:32226

EPSG:32227

EPSG:32228

EPSG:32229

EPSG:32230

EPSG:32231

EPSG:32232

EPSG:32233

EPSG:32234

EPSG:32235

EPSG:32236

EPSG:32237

EPSG:32238

EPSG:32239

EPSG:32240

EPSG:32241

EPSG:32242

EPSG:32243

EPSG:32244

EPSG:32245

EPSG:32246

EPSG:32247

EPSG:32248

EPSG:32249

EPSG:32250

EPSG:32251

EPSG:32252

EPSG:32253

EPSG:32254

EPSG:32255

EPSG:32256

EPSG:32257

EPSG:32258

EPSG:32259

EPSG:32260

EPSG:32401

EPSG:32402

EPSG:32403

EPSG:32404

EPSG:32405

EPSG:32406

EPSG:32407

EPSG:32408

EPSG:32409

EPSG:32410

EPSG:32411

EPSG:32412

EPSG:32413

EPSG:32414

EPSG:32415

EPSG:32416

EPSG:32417

EPSG:32418

EPSG:32419

EPSG:32420

EPSG:32421

EPSG:32422

EPSG:32423

EPSG:32424

EPSG:32425

EPSG:32426

EPSG:32427

EPSG:32428

EPSG:32429

EPSG:32430

EPSG:32431

EPSG:32432

EPSG:32433

EPSG:32434

EPSG:32435

EPSG:32436

EPSG:32437

EPSG:32438

EPSG:32439

EPSG:32440

EPSG:32441

EPSG:32442

EPSG:32443

EPSG:32444

EPSG:32445

EPSG:32446

EPSG:32447

EPSG:32448

EPSG:32449

EPSG:32450

EPSG:32451

EPSG:32452

EPSG:32453

EPSG:32454

EPSG:32455

EPSG:32456

EPSG:32457

EPSG:32458

EPSG:32459

EPSG:32460

EPSG:32601

EPSG:32602

EPSG:32603

EPSG:32604

EPSG:32605

EPSG:32606

EPSG:32607

EPSG:32608

EPSG:32609

EPSG:32610

EPSG:32611

EPSG:32612

EPSG:32613

EPSG:32614

EPSG:32615

EPSG:32616

EPSG:32617

EPSG:32618

EPSG:32619

EPSG:32620

EPSG:32621

EPSG:32622

EPSG:32623

EPSG:32624

EPSG:32625

EPSG:32626

EPSG:32627

EPSG:32628

EPSG:32629

EPSG:32630

EPSG:32631

EPSG:32632

EPSG:32633

EPSG:32634

EPSG:32635

EPSG:32636

EPSG:32637

EPSG:32638

EPSG:32639

EPSG:32640

EPSG:32641

EPSG:32642

EPSG:32643

EPSG:32644

EPSG:32645

EPSG:32646

EPSG:32647

EPSG:32648

EPSG:32649

EPSG:32650

EPSG:32651

EPSG:32652

EPSG:32653

EPSG:32654

EPSG:32655

EPSG:32656

EPSG:32657

EPSG:32658

EPSG:32659

EPSG:32660

EPSG:32661

EPSG:32706

EPSG:32707

EPSG:32708

EPSG:32709

EPSG:32710

EPSG:32711

EPSG:32712

EPSG:32713

EPSG:32714

EPSG:32715

EPSG:32716

EPSG:32717

EPSG:32718

EPSG:32719

EPSG:32720

EPSG:32721

EPSG:32722

EPSG:32723

EPSG:32724

EPSG:32725

EPSG:32726

EPSG:32727

EPSG:32728

EPSG:32729

EPSG:32730

EPSG:32731

EPSG:32732

EPSG:32733

EPSG:32734

EPSG:32735

EPSG:32736

EPSG:32737

EPSG:32738

EPSG:32739

EPSG:32740

EPSG:32741

EPSG:32742

EPSG:32743

EPSG:32744

EPSG:32745

EPSG:32746

EPSG:32747

EPSG:32748

EPSG:32749

EPSG:32750

EPSG:32751

EPSG:32752

EPSG:32753

EPSG:32754

EPSG:32755

EPSG:32756

EPSG:32757

EPSG:32758

EPSG:32759

EPSG:32760

EPSG:41001







Appendix C Featuretype Definition

Path of file: $wms_home$/WEB-INF/conf/wms/featuretypes/


<xsd:schema targetNamespace="http://www.deegree.org/app" xmlns:gml="http://www.opengis.net/gml"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:deegreewfs="http://www.deegree.org/wfs"

xmlns:ogc="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"

elementFormDefault="qualified" attributeFormDefault="unqualified">

<xsd:import namespace="http://www.opengis.net/gml"

schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/feature.xsd" />

<xsd:import namespace="http://www.opengis.net/gml"

schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/geometryAggregates.xsd" />

<!-- configuration for the persistence backend to be used -->

<!-- This is an automatic generated and manually extended featuretype definition file; it associates the WFS with the data source(s) -->

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Prefix>app</deegreewfs:Prefix>

<!--Please refer the demo definitons for accessing HSQLDB, SHAPE or POSTGIS -->

<deegreewfs:Backend>SHAPE</deegreewfs:Backend>

<!-- This part varies depending on the backend type -->

<deegreewfs:File>../../../data/utah/vector/SGID500_EnergyResourcesPoly</deegreewfs:File>

<!-- This will NOT be set by the creation-tool so please insert the EPSG: appropriate to your data source SRS -->

<deegreewfs:DefaultSRS>EPSG:26912</deegreewfs:DefaultSRS>

</xsd:appinfo>

</xsd:annotation>

<!-- ============================================================== -->

<!-- here the featuretype name is set, under which the WFS will offer this featuretype. If you would

like to change this featuretype name make sure, you also change the type='app:EnergyResourcesType' and

further below the <xsd:complexType name='EnergyResourcesType'> -->

<xsd:element name='EnergyResources' type='app:EnergyResourcesType'

substitutionGroup="gml:_Feature">

<xsd:annotation>

<xsd:appinfo>

<!-- the referenced table in the DB/file is set here. Never change this unless your sources have changed -->

<deegreewfs:table>SGID500_EnergyResourcesPoly</deegreewfs:table>

<!-- The unique identifier is set here -->

<deegreewfs:gmlId prefix="ID_">

<deegreewfs:MappingField field='ID' type="INTEGER" />

</deegreewfs:gmlId>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<!-- ============================================================== -->

<xsd:complexType name='EnergyResourcesType'>

<xsd:complexContent>

<xsd:extension base="gml:AbstractFeatureType">

<xsd:sequence>

<!-- The geometry property will be mapped here. As you can see property naming ( <xsd:element name='geometry') can differ from the source name (<deegreewfs:MappingField field='GEOM' ...) -->

<xsd:element name='geometry' type='gml:GeometryPropertyType'>

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<!-- the srs='' specifies how the data is saved in the database/file table; for shapes this is -1 as this information is not stored in the file, for databases it depends on the DB-Settings, wether the SRS is saved or not. -->

<deegreewfs:MappingField field='GEOM' type='GEOMETRY' srs='-1' />

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name='objectid' type='xsd:integer'>

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<deegreewfs:MappingField field='OBJECTID' type='NUMERIC' />

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<!-- You are free to change the order of the elements or reduce the number -->

<!-- By default the featuretypedefinition creation tool sets no minOccurs=""; minOccurs sets whether or not a property CAN (minOccurs="0") or MUST (minOccurs="1") be delivered by WFS. If not set minOccurs="1". In the demos the EnergyResources WMS layer uses this mechanism as it has a filter condition which requests just some properties of the WFS -->

<xsd:element name='code' type='xsd:string' minOccurs="0">

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<deegreewfs:MappingField field='CODE' type='VARCHAR' />

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name='shape_area' type='xsd:double' minOccurs="0">

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<deegreewfs:MappingField field='SHAPE_AREA' type='NUMERIC' />

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name='shape_len' type='xsd:double' minOccurs="0">

<xsd:annotation>

<xsd:appinfo>

<deegreewfs:Content>

<deegreewfs:MappingField field='SHAPE_LEN' type='NUMERIC' />

</deegreewfs:Content>

</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

</xsd:schema>


Appendix D Deployment Descriptor (web.xml)

Path of file: $wms_home$/WEB-INF/

<?xml version="1.0"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>deegree 2.1</display-name>

<description>deegree 2.1 OWS</description>

<servlet>

<servlet-name>owservice</servlet-name>

<servlet-class>org.deegree.enterprise.servlet.OGCServletController</servlet-class>


<init-param>

<param-name>services</param-name>

<param-value>wms,wfs</param-value>

<description>

list of supported services, e.g.: wfs,wms,wcs (comma separated) allways use lowercase

</description>

</init-param>


<!-- WMS INITIALIZING PARAMETERS -->

<init-param>

<param-name>wms.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WMSHandler</param-value>

</init-param>

<init-param>

<param-name>wms.config</param-name>

<param-value>WEB-INF/conf/wms/wms_configuration.xml</param-value>

</init-param>


<!-- WFS INITIALIZING PARAMETERS -->

<init-param>

<param-name>wfs.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WFSHandler</param-value>

</init-param>

<init-param>

<param-name>wfs.config</param-name>

<param-value>WEB-INF/conf/wms/LOCALWFS_capabilities.xml</param-value>

</init-param>


<!-- WCS INITIALIZING PARAMETERS -->

<!--

<init-param>

<param-name>wcs.handler</param-name>

<param-value>org.deegree.enterprise.servlet.WCSHandler</param-value>

</init-param>

<init-param>

<param-name>wcs.config</param-name>

<param-value>WEB-INF/conf/wcs/LOCALWCS_capabilities.xml</param-value>

</init-param>

-->

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>owservice</servlet-name>

<url-pattern>/services</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/index.jsp</welcome-file>

</welcome-file-list>

<error-page>

<error-code>500</error-code>

<location>/error.jsp</location>

</error-page>

<error-page>

<exception-type>org.deegree.ogcwebservices.OGCWebServiceException</exception-type>

<location>/error.jsp</location>

</error-page>

</web-app>