[Git][debian-gis-team/owslib][upstream] New upstream version 0.34.0
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Mon Jun 2 15:02:52 BST 2025
Bas Couwenberg pushed to branch upstream at Debian GIS Project / owslib
Commits:
04c7b2f4 by Bas Couwenberg at 2025-06-02T15:58:35+02:00
New upstream version 0.34.0
- - - - -
18 changed files:
- MANIFEST.in
- docs/source/features.rst
- docs/source/usage.rst
- owslib/__init__.py
- owslib/feature/schema.py
- owslib/map/wms111.py
- owslib/map/wms130.py
- owslib/util.py
- owslib/wmts.py
- + tests/resources/wfs_koeln_arcgis_describefeaturetype_110.xml
- + tests/resources/wfs_koeln_arcgis_describefeaturetype_200.xml
- + tests/resources/wfs_koeln_arcgis_getcapabilities_110.xml
- + tests/resources/wfs_koeln_arcgis_getcapabilities_200.xml
- + tests/resources/wfs_mapserver_demo_getcapabilities_100.xml
- tests/test_wfs_schema.py
- + tests/test_wfs_schema_arcgis_server.py
- + tests/test_wmts_cookies.py
- tests/utils.py
Changes:
=====================================
MANIFEST.in
=====================================
@@ -2,3 +2,4 @@ include LICENSE
include *.md
include *.rst
include *.txt
+recursive-exclude tests *
\ No newline at end of file
=====================================
docs/source/features.rst
=====================================
@@ -56,20 +56,24 @@ OGC API Support
+======================================================================================+============+
| `OGC API - Features - Part 1: Core`_ | 1.0 |
+--------------------------------------------------------------------------------------+------------+
-| `OGC API - Coverages - Part 1: Core`_ | draft |
-+--------------------------------------------------------------------------------------+------------+
-| `OGC API - Records - Part 1: Core`_ | draft |
-+--------------------------------------------------------------------------------------+------------+
| `OGC API - Features - Part 3: Filtering and the Common Query Language (CQL)`_ | draft |
+--------------------------------------------------------------------------------------+------------+
| `OGC API - Features - Part 4: Create, Replace, Update and Delete`_ | draft |
+--------------------------------------------------------------------------------------+------------+
+| `OGC API - Coverages - Part 1: Core`_ | draft |
++--------------------------------------------------------------------------------------+------------+
+| `OGC API - Maps - Part 1: Core`_ | 1.0 |
++--------------------------------------------------------------------------------------+------------+
+| `OGC API - Records - Part 1: Core`_ | draft |
++--------------------------------------------------------------------------------------+------------+
| `OGC API - Processes - Part 1: Core`_ | 1.0 |
+--------------------------------------------------------------------------------------+------------+
| `OGC API - Connected Systems - Part 1: Feature Resources`_ | draft |
+--------------------------------------------------------------------------------------+------------+
| `OGC API - Connected Systems - Part 2: Dynamic Data`_ | draft |
+--------------------------------------------------------------------------------------+------------+
+| `OGC API - Environmental Data Retrieval - Part 1: Core`_ | 1.0 |
++--------------------------------------------------------------------------------------+------------+
.. _`OGC WMS`: https://www.opengeospatial.org/standards/wms
.. _`OGC WFS`: https://www.opengeospatial.org/standards/wfs
@@ -95,12 +99,14 @@ OGC API Support
.. _`WaterML`: http://his.cuahsi.org/wofws.html#waterml
.. _`Swiss GM03`: https://www.geocat.admin.ch/en/dokumentation/gm03.html
.. _`OGC API`: https://ogcapi.ogc.org
-.. _`OGC API - Features - Part 1: Core`: https://docs.opengeospatial.org/is/17-069r3/17-069r3.html
-.. _`OGC API - Records - Part 1: Core`: https://github.com/opengeospatial/ogcapi-records
-.. _`OGC API - Features - Part 3: Filtering and the Common Query Language (CQL)`: https://docs.ogc.org/DRAFTS/19-079.html
-.. _`OGC API - Features - Part 4: Create, Replace, Update and Delete`: https://docs.ogc.org/DRAFTS/20-002.html
+.. _`OGC API - Features - Part 1: Core`: https://docs.ogc.org/is/17-069r4/17-069r4.html
+.. _`OGC API - Features - Part 3: Filtering and the Common Query Language (CQL)`: https://docs.ogc.org/is/19-079r2/19-079r2.html
+.. _`OGC API - Features - Part 4: Create, Replace, Update and Delete`: https://docs.ogc.org/DRAFTS/20-002r1.html
+.. _`OGC API - Records - Part 1: Core`: https://docs.ogc.org/is/20-004r1/20-004r1.html
.. _`OGC API - Coverages - Part 1: Core`: https://docs.ogc.org/DRAFTS/19-087.html
+.. _`OGC API - Maps - Part 1: Core`: https://docs.ogc.org/is/20-058/20-058.html
.. _`OGC API - Processes - Part 1: Core`: https://docs.ogc.org/is/18-062r2/18-062r2.html
.. _`OGC API - Connected Systems - Part 1: Feature Resources`: https://docs.ogc.org/DRAFTS/23-001r0.html
.. _`OGC API - Connected Systems - Part 2: Dynamic Data`: https://docs.ogc.org/DRAFTS/23-002r0.html
+.. _`OGC API - Environmental Data Retrieval - Part 1: Core`: https://docs.ogc.org/is/19-086r6/19-086r6.html
.. _`OpenSearch`: https://github.com/dewitt/opensearch
=====================================
docs/source/usage.rst
=====================================
@@ -83,55 +83,92 @@ WFS
---
Connect to a WFS and inspect its capabilities.
-::
+.. code-block:: python
>>> from owslib.wfs import WebFeatureService
- >>> wfs11 = WebFeatureService(url='http://geoserv.weichand.de:8080/geoserver/wfs', version='1.1.0')
- >>> wfs11.identification.title
- 'INSPIRE WFS 2.0 DemoServer Verwaltungsgrenzen Bayern
+ >>> wfs20 = WebFeatureService(url='https://services.rce.geovoorziening.nl/dijken/wfs', version='2.0.0')
+ >>> wfs20.identification.title
+ 'Landschapsatlas'
- >>> [operation.name for operation in wfs11.operations]
- ['GetCapabilities', 'DescribeFeatureType', 'GetFeature', 'GetGmlObject']
+ >>> [operation.name for operation in wfs20.operations]
+ ['GetCapabilities', 'DescribeFeatureType', 'GetFeature', 'GetPropertyValue', 'ListStoredQueries', 'DescribeStoredQueries',
+ 'CreateStoredQuery', 'DropStoredQuery', 'ImplementsBasicWFS', 'ImplementsTransactionalWFS', 'ImplementsLockingWFS',
+ 'KVPEncoding', 'XMLEncoding', 'SOAPEncoding', 'ImplementsInheritance', 'ImplementsRemoteResolve', 'ImplementsResultPaging',
+ 'ImplementsStandardJoins', 'ImplementsSpatialJoins', 'ImplementsTemporalJoins', 'ImplementsFeatureVersioning',
+ 'ManageStoredQueries', 'PagingIsTransactionSafe', 'QueryExpressions']
List FeatureTypes
-::
+.. code-block:: python
- >>> list(wfs11.contents)
- ['bvv:vg_ex', 'bvv:bayern_ex', 'bvv:lkr_ex', 'bvv:regbez_ex', 'bvv:gmd_ex']
+ >>> list(wfs20.contents)
+ ['dijken:dijken_bovenregionale_betekenis', 'dijken:dijklijnenkaart_rce']
Download GML using ``typename``, ``bbox`` and ``srsname``.
-::
+.. code-block:: python
>>> # OWSLib will switch the axis order from EN to NE automatically if designated by EPSG-Registry
- >>> response = wfs11.getfeature(typename='bvv:gmd_ex', bbox=(4500000,5500000,4500500,5500500), srsname='urn:x-ogc:def:crs:EPSG:31468')
+ >>> response = wfs20.getfeature(typename='dijken:dijklijnenkaart_rce', bbox=(173700,440400,178700,441400), srsname='EPSG:28992')
+ >>> str(response.read())
+ 'b\'<?xml version="1.0" encoding="UTF-8"?><dijken:dijklijnenkaart_rce...\''
+
+Download in other formats (if supported by server) and pagination.
+
+.. code-block:: python
+
+ >>> # Check which output formats are available for GetFeature
+ >>> [o.parameters['outputFormat']['values'] for o in wfs20.operations if o.name=='GetFeature']
+ [['application/gml+xml; version=3.2', 'DXF', 'DXF-ZIP', 'GML2', 'KML', 'SHAPE-ZIP', 'application/json', 'application/vnd.google-earth.kml xml',
+ 'application/vnd.google-earth.kml+xml', 'csv', 'gml3', 'gml32', 'json', 'text/csv', 'text/xml; subtype=gml/2.1.2', 'text/xml; subtype=gml/3.1.1', 'text/xml; subtype=gml/3.2']]
+ >>> response = wfs20.getfeature(typename='dijken:dijklijnenkaart_rce', bbox=(173700,440400,178700,441400), srsname='EPSG:28992', outputFormat='application/json')
+ >>> response.read()
+ b'{"type":"FeatureCollection","features":...'
+ >>> response = wfs20.getfeature(typename='dijken:dijklijnenkaart_rce', srsname='EPSG:4326', maxfeatures=20, startindex=1)
+ 'b\'<?xml version="1.0" encoding="UTF-8"?><dijken:dijklijnenkaart_rce...\''
Return a FeatureType's schema via ``DescribeFeatureType``. The dictionary returned is
compatible with a `Fiona schema object <https://fiona.readthedocs.io/en/latest/fiona.html#fiona.collection.Collection.schema>`_.
-::
+.. code-block:: python
- >>> wfs11.get_schema('bvv:vg_ex')
- >>> {'properties': {'land': 'string', 'modellart': 'string', 'objart': 'string', 'objart_txt': 'string', 'objid': 'string', 'hdu_x': 'short', 'beginn': 'string', 'ende': 'string', 'adm': 'string', 'avg': 'string', 'bez_gem': 'string', 'bez_krs': 'string', 'bez_lan': 'string', 'bez_rbz': 'string', 'sch': 'string'}, 'geometry': '3D MultiPolygon', 'geometry_column': 'geom'}
+ >>> wfs20.get_schema('dijken:dijklijnenkaart_rce')
+ {'properties': {'ogc_fid': 'int', 'id': 'string', 'naam': 'string', 'aanleg_beg': 'string', 'aanleg_ein': 'string', 'aanleg_ind': 'string', 'status': 'string', 'herkomst': 'string', 'verdwenen': 'string', 'oorsprfunc': 'string', 'naspfunc': 'string', 'bijzonderh': 'string', 'bron_data': 'string', 'bron_id': 'string', 'bron_geo': 'string', 'rce_zone': 'string', 'waternaam': 'string', 'polder': 'string', 'shape_leng': 'double', 'opmerking': 'string', 'laatst_bew': 'date'}, 'required': ['ogc_fid'], 'geometry': 'GeometryCollection', 'geometry_column': 'wkb_geometry'}
-Download GML using ``typename`` and ``filter``. OWSLib currently only
-support filter building for WFS 1.1 (FE.1.1).
-::
+Download GML using ``typename`` and ``filter``.
+
+Usage with WFS 1.1 (FE.1.1):
+
+.. code-block:: python
>>> from owslib.fes import *
>>> from owslib.etree import etree
>>> from owslib.wfs import WebFeatureService
- >>> wfs11 = WebFeatureService(url='http://geoserv.weichand.de:8080/geoserver/wfs', version='1.1.0')
+ >>> wfs10 = WebFeatureService(url='https://services.rce.geovoorziening.nl/dijken/wfs', version='1.1.0')
+
+ >>> filter = PropertyIsLike(propertyname='naam', literal='Haarlemmer*', wildCard='*')
+ >>> filterxml = etree.tostring(filter.toXML()).decode("utf-8")
+ >>> response = wfs10.getfeature(typename='dijken:dijklijnenkaart_rce', filter=filterxml)
+
+Usage with WFS 2.0 (FE.2.0):
+
+::
+
+ >>> from owslib.fes2 import *
+ >>> from owslib.etree import etree
+ >>> from owslib.wfs import WebFeatureService
+ >>> wfs11 = WebFeatureService(url='http://geoserv.weichand.de:8080/geoserver/wfs', version='2.0.0')
- >>> filter = PropertyIsLike(propertyname='bez_gem', literal='Ingolstadt', wildCard='*')
+ >>> filter = Filter(
+ PropertyIsLike(propertyname='bez_gem', literal='Ingolstadt', wildCard='*')
+ )
>>> filterxml = etree.tostring(filter.toXML()).decode("utf-8")
>>> response = wfs11.getfeature(typename='bvv:gmd_ex', filter=filterxml)
Save response to a file.
-::
+.. code-block:: python
>>> out = open('/tmp/data.gml', 'wb')
>>> out.write(bytes(response.read(), 'UTF-8'))
@@ -140,21 +177,22 @@ Save response to a file.
Download GML using ``StoredQueries``\ (only available for WFS 2.0
services)
-::
+.. code-block:: python
>>> from owslib.wfs import WebFeatureService
- >>> wfs20 = WebFeatureService(url='http://geoserv.weichand.de:8080/geoserver/wfs', version='2.0.0')
+ >>> wfs20 = WebFeatureService(url='https://services.rce.geovoorziening.nl/dijken/wfs', version='2.0.0')
>>> # List StoredQueries
>>> [storedquery.id for storedquery in wfs20.storedqueries]
- ['bboxQuery', 'urn:ogc:def:query:OGC-WFS::GetFeatureById', 'GemeindeByGemeindeschluesselEpsg31468', 'DWithinQuery']
+ ['urn:ogc:def:query:OGC-WFS::GetFeatureById']
- >>> # List Parameters for StoredQuery[1]
- >>> parameter.name for parameter in wfs20.storedqueries[1].parameters]
+ >>> # List Parameters for StoredQuery[0]
+ >>> [parameter.name for parameter in wfs20.storedqueries[0].parameters]
['ID']
-
- >>> response = wfs20.getfeature(storedQueryID='urn:ogc:def:query:OGC-WFS::GetFeatureById', storedQueryParams={'ID':'gmd_ex.1'})
+ >>> response = wfs20.getfeature(storedQueryID='urn:ogc:def:query:OGC-WFS::GetFeatureById', storedQueryParams={'ID':'dijklijnenkaart_rce.13364'})
+ >>> str(response.read())
+ 'b\'<?xml version="1.0" encoding="UTF-8"?><dijken:dijklijnenkaart_rce...\''
OGC API
-------
=====================================
owslib/__init__.py
=====================================
@@ -1 +1 @@
-__version__ = '0.33.0'
+__version__ = '0.34.0'
=====================================
owslib/feature/schema.py
=====================================
@@ -54,6 +54,7 @@ def get_schema(
type_element = root.find("./{%s}element" % XS_NAMESPACE)
if type_element is None:
return None
+
complex_type = type_element.attrib["type"].split(":")[1]
elements = _get_elements(complex_type, root)
nsmap = None
@@ -78,16 +79,45 @@ def _get_elements(complex_type, root):
return found_elements
+def _get_datatype(element, schema_key, gml_key):
+ """Extract the data type from an element based on different XML structure variants.
+
+ :param element: The XML element to extract the data type from
+ :param str schema_key: The XML namespace key for schema elements
+ :param str gml_key: The XML namespace key for GML elements
+ :return: The extracted data type as string
+ """
+ # Case 1: Type defined as attribute
+ if "type" in element.attrib:
+ data_type = element.attrib["type"]
+ # Remove any namespace prefix
+ if ":" in data_type:
+ data_type = data_type.split(":")[-1]
+ return data_type
+ # Case 2: Reference to another element
+ elif "ref" in element.attrib:
+ return element.attrib["ref"].split(":")[-1]
+ # Case 3: Type defined as SimpleType with Restriction
+ simple_type = element.find(".//{%s}restriction" % XS_NAMESPACE)
+ if simple_type is not None:
+ return simple_type.attrib.get("base", "").replace(schema_key + ":", "")
+ # Case 4: Complex Type Definition
+ complex_type = element.find(".//{%s}complexType//{%s}element" % (XS_NAMESPACE, XS_NAMESPACE))
+ if complex_type is not None and "type" in complex_type.attrib:
+ return complex_type.attrib["type"].replace(schema_key + ":", "")
+ return None
+
+
def _construct_schema(elements, nsmap):
- """Consruct fiona schema based on given elements
+ """Construct fiona schema based on given elements
:param list Element: list of elements
:param dict nsmap: namespace map
-
:return dict: schema
"""
if elements is None:
return None
+
schema = {"properties": {}, "required": [], "geometry": None}
schema_key = None
@@ -123,10 +153,16 @@ def _construct_schema(elements, nsmap):
}
for element in elements:
- data_type = element.attrib["type"].replace(gml_key + ":", "")
+ if "name" not in element.attrib:
+ continue
+
name = element.attrib["name"]
non_nillable = element.attrib.get("nillable", "false") == "false"
+ data_type = _get_datatype(element, schema_key, gml_key)
+ if data_type is None:
+ continue
+
if data_type in mappings:
schema["geometry"] = mappings[data_type]
schema["geometry_column"] = name
=====================================
owslib/map/wms111.py
=====================================
@@ -539,8 +539,6 @@ class ContentMetadata(AbstractContentMetadata):
title = s.find('Title')
if name is None and title is None:
raise ValueError('%s missing name and title' % (s,))
- if name is None or title is None:
- warnings.warn('%s missing name or title' % (s,))
title_ = title.text if title is not None else name.text
name_ = name.text if name is not None else title.text
style = {'title': title_}
=====================================
owslib/map/wms130.py
=====================================
@@ -584,8 +584,6 @@ class ContentMetadata(AbstractContentMetadata):
title = s.find(nspath('Title', WMS_NAMESPACE))
if name is None and title is None:
raise ValueError('%s missing name and title' % (s,))
- if name is None or title is None:
- warnings.warn('%s missing name or title' % (s,))
title_ = title.text if title is not None else name.text
name_ = name.text if name is not None else title.text
style = {'title': title_}
=====================================
owslib/util.py
=====================================
@@ -692,9 +692,12 @@ Would be 2006-07-27T21:10:00Z, not 'now'
def extract_xml_list(elements):
"""
-Some people don't have seperate tags for their keywords and seperate them with
+Some people don't have separate tags for their keywords and separate them with
a newline. This will extract out all of the keywords correctly.
"""
+ if elements is None:
+ return []
+
keywords = (re.split(r'[\n\r]+', f.text) for f in elements if f.text)
flattened = (item.strip() for sublist in keywords for item in sublist)
remove_blank = [_f for _f in flattened if _f]
=====================================
owslib/wmts.py
=====================================
@@ -136,7 +136,7 @@ class WebMapTileService(object):
raise KeyError("No content named %s" % name)
def __init__(self, url, version='1.0.0', xml=None, username=None, password=None,
- parse_remote_metadata=False, vendor_kwargs=None, headers=None, auth=None,
+ parse_remote_metadata=False, vendor_kwargs=None, headers=None, auth=None, cookies=None,
timeout=30):
"""Initialize.
@@ -174,12 +174,13 @@ class WebMapTileService(object):
self.vendor_kwargs = vendor_kwargs
self._capabilities = None
self.headers = headers
+ self.cookies = cookies
self.auth = auth or Authentication(username, password)
self.timeout = timeout or 30
# Authentication handled by Reader
reader = WMTSCapabilitiesReader(
- self.version, url=self.url, headers=self.headers, auth=self.auth)
+ self.version, url=self.url, headers=self.headers, auth=self.auth, cookies=self.cookies)
if xml is not None: # read from stored xml
self._capabilities = reader.readString(xml)
else: # read from server
@@ -456,7 +457,7 @@ class WebMapTileService(object):
resurl = self.buildTileResource(
layer, style, format, tilematrixset, tilematrix,
row, column, **vendor_kwargs)
- u = openURL(resurl, headers=self.headers, auth=self.auth, timeout=self.timeout)
+ u = openURL(resurl, headers=self.headers, cookies=self.cookies, auth=self.auth, timeout=self.timeout)
return u
# KVP implemetation
@@ -482,7 +483,7 @@ class WebMapTileService(object):
base_url = get_verbs[0].get('url')
except StopIteration:
pass
- u = openURL(base_url, data, headers=self.headers, auth=self.auth, timeout=self.timeout)
+ u = openURL(base_url, data, headers=self.headers, cookies=self.cookies, auth=self.auth, timeout=self.timeout)
# check for service exceptions, and return
if u.info()['Content-Type'] == 'application/vnd.ogc.se_xml':
@@ -887,7 +888,7 @@ class WMTSCapabilitiesReader:
"""Read and parse capabilities document into a lxml.etree infoset
"""
- def __init__(self, version='1.0.0', url=None, un=None, pw=None, headers=None, auth=None):
+ def __init__(self, version='1.0.0', url=None, un=None, pw=None, headers=None, auth=None, cookies=None):
"""Initialize"""
self.version = version
self._infoset = None
@@ -899,6 +900,7 @@ class WMTSCapabilitiesReader:
auth.password = pw
self.auth = auth or Authentication(un, pw)
self.headers = headers
+ self.cookies = cookies
def capabilities_url(self, service_url, vendor_kwargs=None):
"""Return a capabilities url
@@ -933,7 +935,7 @@ class WMTSCapabilitiesReader:
# now split it up again to use the generic openURL function...
spliturl = getcaprequest.split('?')
- u = openURL(spliturl[0], spliturl[1], method='Get', headers=self.headers, auth=self.auth)
+ u = openURL(spliturl[0], spliturl[1], method='Get', cookies=self.cookies, headers=self.headers, auth=self.auth)
return getXMLTree(u)
def readString(self, st):
=====================================
tests/resources/wfs_koeln_arcgis_describefeaturetype_110.xml
=====================================
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:adressen_stadtteil="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" targetNamespace="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer" elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
+<xsd:element name="Blumenberg" type="adressen_stadtteil:BlumenbergFeatureType" substitutionGroup="gml:_Feature"/>
+<xsd:complexType name="BlumenbergFeatureType">
+ <xsd:complexContent>
+ <xsd:extension base="gml:AbstractFeatureType">
+ <xsd:sequence>
+ <xsd:element minOccurs="0" maxOccurs="1" name="objectid" type="xsd:int"/>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Nummer">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Adresse">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="47"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Strassenschlüssel">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Straße">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Amtl._Straßenname">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Straße__Stadtbezirk_">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Hausnummer">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Gebäude_ID_ALKIS">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="16"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Nutzung__ALKIS_Gebäudefunktion_">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="80"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Blockseite">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="8"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtviertel__Nr._">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtviertel">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Statistisches_Quartier__Nr._">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Statistisches_Quartier">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtteil__Nr._">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtteil">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtbezirk__Nr._">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtbezirk">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stimmbezirk">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Postleitzahlgebiet">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Schiedsamtsbezirk">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Sozialraum__Nr._">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Sozialraum">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="globalid" type="xsd:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1" name="shape" type="gml:PointPropertyType"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+</xsd:schema>
=====================================
tests/resources/wfs_koeln_arcgis_describefeaturetype_200.xml
=====================================
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:adressen_stadtteil="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" targetNamespace="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer" elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xsd:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
+<xsd:element name="Blumenberg" type="adressen_stadtteil:BlumenbergFeatureType" substitutionGroup="gml:AbstractFeature"/>
+<xsd:complexType name="BlumenbergFeatureType">
+ <xsd:complexContent>
+ <xsd:extension base="gml:AbstractFeatureType">
+ <xsd:sequence>
+ <xsd:element minOccurs="0" maxOccurs="1" name="objectid" type="xsd:int"/>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Nummer" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="11"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Adresse" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="47"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Strassenschlüssel" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Straße" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Amtl._Straßenname" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Straße__Stadtbezirk_" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Hausnummer" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Gebäude_ID_ALKIS" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="16"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Nutzung__ALKIS_Gebäudefunktion_" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="80"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Blockseite" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="8"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtviertel__Nr._" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtviertel" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Statistisches_Quartier__Nr._" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Statistisches_Quartier" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtteil__Nr._" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtteil" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtbezirk__Nr._" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stadtbezirk" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Stimmbezirk" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Postleitzahlgebiet" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Schiedsamtsbezirk" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Sozialraum__Nr._" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="Sozialraum" nillable="true">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="1" name="globalid" type="xsd:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1" name="shape" nillable="true" type="gml:PointPropertyType"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+</xsd:schema>
=====================================
tests/resources/wfs_koeln_arcgis_getcapabilities_110.xml
=====================================
@@ -0,0 +1,1256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wfs:WFS_Capabilities
+ xmlns:wfs="http://www.opengis.net/wfs"
+ xmlns:ogc="http://www.opengis.net/ogc"
+ xmlns:gml="http://www.opengis.net/gml"
+ xmlns:ows="http://www.opengis.net/ows"
+ xmlns:adressen_stadtteil="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd http://www.opengis.net/ogc http://schemas.opengis.net/filter/1.1.0/filter.xsd http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/base/gml.xsd http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsAll.xsd https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?service=wfs%26version=1.1.0%26request=DescribeFeatureType"
+ version="1.1.0"
+>
+<ows:ServiceIdentification>
+ <ows:Title>Adressen je Stadtteil</ows:Title>
+ <ows:Abstract></ows:Abstract>
+ <ows:Keywords>
+ <ows:Keyword>ESRI(LongLat)</ows:Keyword>
+ </ows:Keywords>
+ <ows:ServiceType>WFS</ows:ServiceType>
+ <ows:ServiceTypeVersion>1.1.0</ows:ServiceTypeVersion>
+ <ows:Fees></ows:Fees>
+ <ows:AccessConstraints></ows:AccessConstraints>
+</ows:ServiceIdentification>
+<ows:ServiceProvider>
+ <ows:ProviderName>Stadt Köln - Amt für Stadtentwicklung und Statistik</ows:ProviderName>
+ <ows:ServiceContact>
+ <ows:IndividualName>Raumbezugssystem</ows:IndividualName>
+ <ows:PositionName></ows:PositionName>
+ <ows:ContactInfo>
+ <ows:Phone>
+ <ows:Voice></ows:Voice>
+ <ows:Facsimile></ows:Facsimile>
+ </ows:Phone>
+ <ows:Address>
+ <ows:DeliveryPoint>Willy-Brandt-Platz 2</ows:DeliveryPoint>
+ <ows:City>Köln</ows:City>
+ <ows:AdministrativeArea></ows:AdministrativeArea>
+ <ows:PostalCode>50679</ows:PostalCode>
+ <ows:Country>Deutschland</ows:Country>
+ <ows:ElectronicMailAddress>statistik-rbs at stadt-koeln.de</ows:ElectronicMailAddress>
+ </ows:Address>
+ <ows:OnlineResource xlink:href="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer"/>
+ <ows:HoursOfService></ows:HoursOfService>
+ <ows:ContactInstructions></ows:ContactInstructions>
+ </ows:ContactInfo>
+ <ows:Role></ows:Role>
+ </ows:ServiceContact>
+</ows:ServiceProvider>
+<ows:OperationsMetadata>
+ <ows:Operation name="GetCapabilities">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="AcceptVersions">
+ <ows:Value>1.1.0</ows:Value>
+ </ows:Parameter>
+ <ows:Parameter name="AcceptFormats">
+ <ows:Value>GML3</ows:Value>
+ <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="DescribeFeatureType">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="outputFormat">
+ <ows:Value>GML3</ows:Value>
+ <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="GetFeature">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="resultType">
+ <ows:Value>results</ows:Value>
+ <ows:Value>hits</ows:Value>
+ </ows:Parameter>
+ <ows:Parameter name="outputFormat">
+ <ows:Value>GML3</ows:Value>
+ <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
+ </ows:Parameter>
+ </ows:Operation>
+</ows:OperationsMetadata>
+<wfs:FeatureTypeList>
+ <wfs:Operations>
+ <wfs:Operation>Query</wfs:Operation>
+ </wfs:Operations>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Altstadt_Nord</wfs:Name>
+ <wfs:Title>Altstadt_Nord</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Altstadt_Süd</wfs:Name>
+ <wfs:Title>Altstadt_Süd</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bayenthal</wfs:Name>
+ <wfs:Title>Bayenthal</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bickendorf</wfs:Name>
+ <wfs:Title>Bickendorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bilderstöckchen</wfs:Name>
+ <wfs:Title>Bilderstöckchen</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Blumenberg</wfs:Name>
+ <wfs:Title>Blumenberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bocklemünd_Mengenich</wfs:Name>
+ <wfs:Title>Bocklemünd_Mengenich</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Braunsfeld</wfs:Name>
+ <wfs:Title>Braunsfeld</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Brück</wfs:Name>
+ <wfs:Title>Brück</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Buchforst</wfs:Name>
+ <wfs:Title>Buchforst</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Buchheim</wfs:Name>
+ <wfs:Title>Buchheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Chorweiler</wfs:Name>
+ <wfs:Title>Chorweiler</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Dellbrück</wfs:Name>
+ <wfs:Title>Dellbrück</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Deutz</wfs:Name>
+ <wfs:Title>Deutz</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Dünnwald</wfs:Name>
+ <wfs:Title>Dünnwald</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ehrenfeld</wfs:Name>
+ <wfs:Title>Ehrenfeld</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Eil</wfs:Name>
+ <wfs:Title>Eil</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Elsdorf</wfs:Name>
+ <wfs:Title>Elsdorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ensen</wfs:Name>
+ <wfs:Title>Ensen</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Esch_Auweiler</wfs:Name>
+ <wfs:Title>Esch_Auweiler</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Finkenberg</wfs:Name>
+ <wfs:Title>Finkenberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Flittard</wfs:Name>
+ <wfs:Title>Flittard</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Fühlingen</wfs:Name>
+ <wfs:Title>Fühlingen</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Godorf</wfs:Name>
+ <wfs:Title>Godorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Gremberghoven</wfs:Name>
+ <wfs:Title>Gremberghoven</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Grengel</wfs:Name>
+ <wfs:Title>Grengel</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Hahnwald</wfs:Name>
+ <wfs:Title>Hahnwald</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Heimersdorf</wfs:Name>
+ <wfs:Title>Heimersdorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Höhenberg</wfs:Name>
+ <wfs:Title>Höhenberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Höhenhaus</wfs:Name>
+ <wfs:Title>Höhenhaus</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Holweide</wfs:Name>
+ <wfs:Title>Holweide</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Humboldt_Gremberg</wfs:Name>
+ <wfs:Title>Humboldt_Gremberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Immendorf</wfs:Name>
+ <wfs:Title>Immendorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Junkersdorf</wfs:Name>
+ <wfs:Title>Junkersdorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Kalk</wfs:Name>
+ <wfs:Title>Kalk</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Klettenberg</wfs:Name>
+ <wfs:Title>Klettenberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Langel</wfs:Name>
+ <wfs:Title>Langel</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Libur</wfs:Name>
+ <wfs:Title>Libur</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lind</wfs:Name>
+ <wfs:Title>Lind</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lindenthal</wfs:Name>
+ <wfs:Title>Lindenthal</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lindweiler</wfs:Name>
+ <wfs:Title>Lindweiler</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Longerich</wfs:Name>
+ <wfs:Title>Longerich</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lövenich</wfs:Name>
+ <wfs:Title>Lövenich</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Marienburg</wfs:Name>
+ <wfs:Title>Marienburg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Mauenheim</wfs:Name>
+ <wfs:Title>Mauenheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Merheim</wfs:Name>
+ <wfs:Title>Merheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Merkenich</wfs:Name>
+ <wfs:Title>Merkenich</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Meschenich</wfs:Name>
+ <wfs:Title>Meschenich</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Mülheim</wfs:Name>
+ <wfs:Title>Mülheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Müngersdorf</wfs:Name>
+ <wfs:Title>Müngersdorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neubrück</wfs:Name>
+ <wfs:Title>Neubrück</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neuehrenfeld</wfs:Name>
+ <wfs:Title>Neuehrenfeld</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neustadt_Nord</wfs:Name>
+ <wfs:Title>Neustadt_Nord</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neustadt_Süd</wfs:Name>
+ <wfs:Title>Neustadt_Süd</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Niehl</wfs:Name>
+ <wfs:Title>Niehl</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Nippes</wfs:Name>
+ <wfs:Title>Nippes</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ossendorf</wfs:Name>
+ <wfs:Title>Ossendorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ostheim</wfs:Name>
+ <wfs:Title>Ostheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Pesch</wfs:Name>
+ <wfs:Title>Pesch</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Poll</wfs:Name>
+ <wfs:Title>Poll</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Porz</wfs:Name>
+ <wfs:Title>Porz</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Raderberg</wfs:Name>
+ <wfs:Title>Raderberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Raderthal</wfs:Name>
+ <wfs:Title>Raderthal</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rath_Heumar</wfs:Name>
+ <wfs:Title>Rath_Heumar</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Riehl</wfs:Name>
+ <wfs:Title>Riehl</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rodenkirchen</wfs:Name>
+ <wfs:Title>Rodenkirchen</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Roggendorf_Thenhoven</wfs:Name>
+ <wfs:Title>Roggendorf_Thenhoven</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rondorf</wfs:Name>
+ <wfs:Title>Rondorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Seeberg</wfs:Name>
+ <wfs:Title>Seeberg</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Stammheim</wfs:Name>
+ <wfs:Title>Stammheim</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Sülz</wfs:Name>
+ <wfs:Title>Sülz</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Sürth</wfs:Name>
+ <wfs:Title>Sürth</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Urbach</wfs:Name>
+ <wfs:Title>Urbach</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Vingst</wfs:Name>
+ <wfs:Title>Vingst</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Vogelsang</wfs:Name>
+ <wfs:Title>Vogelsang</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Volkhoven_Weiler</wfs:Name>
+ <wfs:Title>Volkhoven_Weiler</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Wahn</wfs:Name>
+ <wfs:Title>Wahn</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Wahnheide</wfs:Name>
+ <wfs:Title>Wahnheide</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weiden</wfs:Name>
+ <wfs:Title>Weiden</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weidenpesch</wfs:Name>
+ <wfs:Title>Weidenpesch</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weiß</wfs:Name>
+ <wfs:Title>Weiß</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Westhoven</wfs:Name>
+ <wfs:Title>Westhoven</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Widdersdorf</wfs:Name>
+ <wfs:Title>Widdersdorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Worringen</wfs:Name>
+ <wfs:Title>Worringen</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Zollstock</wfs:Name>
+ <wfs:Title>Zollstock</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Zündorf</wfs:Name>
+ <wfs:Title>Zündorf</wfs:Title>
+ <wfs:DefaultSRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultSRS>
+ <wfs:OutputFormats>
+ <wfs:Format>GML3</wfs:Format>
+ <wfs:Format>text/xml; subtype=gml/3.1.1</wfs:Format>
+ </wfs:OutputFormats>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+</wfs:FeatureTypeList>
+<ogc:Filter_Capabilities>
+ <ogc:Spatial_Capabilities>
+ <ogc:GeometryOperands>
+ <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>
+ <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>
+ <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>
+ <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>
+ </ogc:GeometryOperands>
+ <ogc:SpatialOperators>
+ <ogc:SpatialOperator name="BBOX"/>
+ <ogc:SpatialOperator name="Equals"/>
+ <ogc:SpatialOperator name="Disjoint"/>
+ <ogc:SpatialOperator name="Intersects"/>
+ <ogc:SpatialOperator name="Crosses"/>
+ <ogc:SpatialOperator name="Touches"/>
+ <ogc:SpatialOperator name="Within"/>
+ <ogc:SpatialOperator name="Contains"/>
+ <ogc:SpatialOperator name="Overlaps"/>
+ </ogc:SpatialOperators>
+ </ogc:Spatial_Capabilities>
+ <ogc:Scalar_Capabilities>
+ <ogc:LogicalOperators/>
+ <ogc:ComparisonOperators>
+ <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>
+ <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>
+ </ogc:ComparisonOperators>
+ </ogc:Scalar_Capabilities>
+ <ogc:Id_Capabilities>
+ <ogc:EID/>
+ <ogc:FID/>
+ </ogc:Id_Capabilities>
+</ogc:Filter_Capabilities>
+</wfs:WFS_Capabilities>
=====================================
tests/resources/wfs_koeln_arcgis_getcapabilities_200.xml
=====================================
@@ -0,0 +1,1022 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wfs:WFS_Capabilities
+ xmlns="http://www.opengis.net/wfs/2.0"
+ xmlns:wfs="http://www.opengis.net/wfs/2.0"
+ xmlns:ows="http://www.opengis.net/ows/1.1"
+ xmlns:fes="http://www.opengis.net/fes/2.0"
+ xmlns:adressen_stadtteil="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ version="2.0.0" xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?service=wfs%26version=2.0.0%26request=DescribeFeatureType"
+>
+ <ows:ServiceIdentification>
+ <ows:Title>WFS</ows:Title>
+ <ows:Abstract></ows:Abstract>
+ <ows:Keywords>
+ <ows:Keyword>ESRI(LongLat)</ows:Keyword>
+ </ows:Keywords>
+ <ows:ServiceType>WFS</ows:ServiceType>
+ <ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion>
+ <ows:Fees></ows:Fees>
+ <ows:AccessConstraints></ows:AccessConstraints>
+ </ows:ServiceIdentification>
+ <ows:ServiceProvider>
+ <ows:ProviderName>Stadt Köln - Amt für Stadtentwicklung und Statistik</ows:ProviderName>
+ <ows:ServiceContact>
+ <ows:IndividualName>Raumbezugssystem</ows:IndividualName>
+ <ows:PositionName></ows:PositionName>
+ <ows:ContactInfo>
+ <ows:Phone>
+ <ows:Voice></ows:Voice>
+ <ows:Facsimile></ows:Facsimile>
+ </ows:Phone>
+ <ows:Address>
+ <ows:DeliveryPoint>Willy-Brandt-Platz 2</ows:DeliveryPoint>
+ <ows:City>Köln</ows:City>
+ <ows:AdministrativeArea></ows:AdministrativeArea>
+ <ows:PostalCode>50679</ows:PostalCode>
+ <ows:Country>Deutschland</ows:Country>
+ <ows:ElectronicMailAddress>statistik-rbs at stadt-koeln.de</ows:ElectronicMailAddress>
+ </ows:Address>
+ <ows:OnlineResource xlink:href="https://k00364:6443/arcgis/admin/services/adressen_stadtteil/MapServer/WFSServer"/>
+ <ows:HoursOfService></ows:HoursOfService>
+ <ows:ContactInstructions></ows:ContactInstructions>
+ </ows:ContactInfo>
+ <ows:Role></ows:Role>
+ </ows:ServiceContact>
+ </ows:ServiceProvider>
+ <ows:OperationsMetadata>
+ <ows:Operation name="GetCapabilities">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="AcceptVersions">
+ <ows:AllowedValues>
+ <ows:Value>1.0.0</ows:Value>
+ <ows:Value>1.1.0</ows:Value>
+ <ows:Value>2.0.0</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="DescribeFeatureType">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="outputFormat">
+ <ows:AllowedValues>
+ <ows:Value>text/xml; subtype=gml/3.2</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="GetPropertyValue">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="resolve">
+ <ows:AllowedValues>
+ <ows:Value>none</ows:Value>
+ <ows:Value>local</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="GetFeature">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ <ows:Parameter name="resultType">
+ <ows:AllowedValues>
+ <ows:Value>results</ows:Value>
+ <ows:Value>hits</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ <ows:Parameter name="outputFormat">
+ <ows:AllowedValues>
+ <ows:Value>GML32</ows:Value>
+ <ows:Value>GML32+ZIP</ows:Value>
+ <ows:Value>GML32+GZIP</ows:Value>
+ <ows:Value>application/gml+xml; version=3.2</ows:Value>
+ <ows:Value>GML3</ows:Value>
+ <ows:Value>GML3+ZIP</ows:Value>
+ <ows:Value>GML3+GZIP</ows:Value>
+ <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
+ <ows:Value>GML2</ows:Value>
+ <ows:Value>GML2+ZIP</ows:Value>
+ <ows:Value>GML2+GZIP</ows:Value>
+ <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>
+ <ows:Value>GEOJSON</ows:Value>
+ <ows:Value>GEOJSON+ZIP</ows:Value>
+ <ows:Value>GEOJSON+GZIP</ows:Value>
+ <ows:Value>ESRIGEOJSON</ows:Value>
+ <ows:Value>ESRIGEOJSON+ZIP</ows:Value>
+ <ows:Value>ESRIGEOJSON+GZIP</ows:Value>
+ <ows:Value>KML</ows:Value>
+ <ows:Value>application/vnd.google-earth.kml xml</ows:Value>
+ <ows:Value>application/vnd.google-earth.kml+xml</ows:Value>
+ <ows:Value>KMZ</ows:Value>
+ <ows:Value>application/vnd.google-earth.kmz</ows:Value>
+ <ows:Value>SHAPE+ZIP</ows:Value>
+ <ows:Value>CSV</ows:Value>
+ <ows:Value>CSV+ZIP</ows:Value>
+ <ows:Value>CSV+GZIP</ows:Value>
+ <ows:Value>Geopackage</ows:Value>
+ <ows:Value>Geopackage+ZIP</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ <ows:Parameter name="resolve">
+ <ows:AllowedValues>
+ <ows:Value>none</ows:Value>
+ <ows:Value>local</ows:Value>
+ </ows:AllowedValues>
+ </ows:Parameter>
+ </ows:Operation>
+ <ows:Operation name="GetGmlObject">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+ <ows:Operation name="ListStoredQueries">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+ <ows:Operation name="DescribeStoredQueries">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?"/>
+ <ows:Post xlink:href="https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer"/>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+ <ows:Constraint name="ImplementsBasicWFS"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsTransactionalWFS"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsLockingWFS"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="KVPEncoding"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="XMLEncoding"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="SOAPEncoding"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsInheritance"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsRemoteResolve"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsResultPaging"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsStandardJoins"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsSpatialJoins"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsTemporalJoins"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ImplementsFeatureVersioning"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ <ows:Constraint name="ManageStoredQueries"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></ows:Constraint>
+ </ows:OperationsMetadata>
+ <wfs:FeatureTypeList>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Altstadt_Nord</wfs:Name>
+ <wfs:Title>Altstadt_Nord</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Altstadt_Süd</wfs:Name>
+ <wfs:Title>Altstadt_Süd</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bayenthal</wfs:Name>
+ <wfs:Title>Bayenthal</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bickendorf</wfs:Name>
+ <wfs:Title>Bickendorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bilderstöckchen</wfs:Name>
+ <wfs:Title>Bilderstöckchen</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Blumenberg</wfs:Name>
+ <wfs:Title>Blumenberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Bocklemünd_Mengenich</wfs:Name>
+ <wfs:Title>Bocklemünd_Mengenich</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Braunsfeld</wfs:Name>
+ <wfs:Title>Braunsfeld</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Brück</wfs:Name>
+ <wfs:Title>Brück</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Buchforst</wfs:Name>
+ <wfs:Title>Buchforst</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Buchheim</wfs:Name>
+ <wfs:Title>Buchheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Chorweiler</wfs:Name>
+ <wfs:Title>Chorweiler</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Dellbrück</wfs:Name>
+ <wfs:Title>Dellbrück</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Deutz</wfs:Name>
+ <wfs:Title>Deutz</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Dünnwald</wfs:Name>
+ <wfs:Title>Dünnwald</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ehrenfeld</wfs:Name>
+ <wfs:Title>Ehrenfeld</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Eil</wfs:Name>
+ <wfs:Title>Eil</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Elsdorf</wfs:Name>
+ <wfs:Title>Elsdorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ensen</wfs:Name>
+ <wfs:Title>Ensen</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Esch_Auweiler</wfs:Name>
+ <wfs:Title>Esch_Auweiler</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Finkenberg</wfs:Name>
+ <wfs:Title>Finkenberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Flittard</wfs:Name>
+ <wfs:Title>Flittard</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Fühlingen</wfs:Name>
+ <wfs:Title>Fühlingen</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Godorf</wfs:Name>
+ <wfs:Title>Godorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Gremberghoven</wfs:Name>
+ <wfs:Title>Gremberghoven</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Grengel</wfs:Name>
+ <wfs:Title>Grengel</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Hahnwald</wfs:Name>
+ <wfs:Title>Hahnwald</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Heimersdorf</wfs:Name>
+ <wfs:Title>Heimersdorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Höhenberg</wfs:Name>
+ <wfs:Title>Höhenberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Höhenhaus</wfs:Name>
+ <wfs:Title>Höhenhaus</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Holweide</wfs:Name>
+ <wfs:Title>Holweide</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Humboldt_Gremberg</wfs:Name>
+ <wfs:Title>Humboldt_Gremberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Immendorf</wfs:Name>
+ <wfs:Title>Immendorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Junkersdorf</wfs:Name>
+ <wfs:Title>Junkersdorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Kalk</wfs:Name>
+ <wfs:Title>Kalk</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Klettenberg</wfs:Name>
+ <wfs:Title>Klettenberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Langel</wfs:Name>
+ <wfs:Title>Langel</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Libur</wfs:Name>
+ <wfs:Title>Libur</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lind</wfs:Name>
+ <wfs:Title>Lind</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lindenthal</wfs:Name>
+ <wfs:Title>Lindenthal</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lindweiler</wfs:Name>
+ <wfs:Title>Lindweiler</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Longerich</wfs:Name>
+ <wfs:Title>Longerich</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Lövenich</wfs:Name>
+ <wfs:Title>Lövenich</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Marienburg</wfs:Name>
+ <wfs:Title>Marienburg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Mauenheim</wfs:Name>
+ <wfs:Title>Mauenheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Merheim</wfs:Name>
+ <wfs:Title>Merheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Merkenich</wfs:Name>
+ <wfs:Title>Merkenich</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Meschenich</wfs:Name>
+ <wfs:Title>Meschenich</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Mülheim</wfs:Name>
+ <wfs:Title>Mülheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Müngersdorf</wfs:Name>
+ <wfs:Title>Müngersdorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neubrück</wfs:Name>
+ <wfs:Title>Neubrück</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neuehrenfeld</wfs:Name>
+ <wfs:Title>Neuehrenfeld</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neustadt_Nord</wfs:Name>
+ <wfs:Title>Neustadt_Nord</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Neustadt_Süd</wfs:Name>
+ <wfs:Title>Neustadt_Süd</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Niehl</wfs:Name>
+ <wfs:Title>Niehl</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Nippes</wfs:Name>
+ <wfs:Title>Nippes</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ossendorf</wfs:Name>
+ <wfs:Title>Ossendorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Ostheim</wfs:Name>
+ <wfs:Title>Ostheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Pesch</wfs:Name>
+ <wfs:Title>Pesch</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Poll</wfs:Name>
+ <wfs:Title>Poll</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Porz</wfs:Name>
+ <wfs:Title>Porz</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Raderberg</wfs:Name>
+ <wfs:Title>Raderberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Raderthal</wfs:Name>
+ <wfs:Title>Raderthal</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rath_Heumar</wfs:Name>
+ <wfs:Title>Rath_Heumar</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Riehl</wfs:Name>
+ <wfs:Title>Riehl</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rodenkirchen</wfs:Name>
+ <wfs:Title>Rodenkirchen</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Roggendorf_Thenhoven</wfs:Name>
+ <wfs:Title>Roggendorf_Thenhoven</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Rondorf</wfs:Name>
+ <wfs:Title>Rondorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Seeberg</wfs:Name>
+ <wfs:Title>Seeberg</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Stammheim</wfs:Name>
+ <wfs:Title>Stammheim</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Sülz</wfs:Name>
+ <wfs:Title>Sülz</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Sürth</wfs:Name>
+ <wfs:Title>Sürth</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Urbach</wfs:Name>
+ <wfs:Title>Urbach</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Vingst</wfs:Name>
+ <wfs:Title>Vingst</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Vogelsang</wfs:Name>
+ <wfs:Title>Vogelsang</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Volkhoven_Weiler</wfs:Name>
+ <wfs:Title>Volkhoven_Weiler</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Wahn</wfs:Name>
+ <wfs:Title>Wahn</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Wahnheide</wfs:Name>
+ <wfs:Title>Wahnheide</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weiden</wfs:Name>
+ <wfs:Title>Weiden</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weidenpesch</wfs:Name>
+ <wfs:Title>Weidenpesch</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Weiß</wfs:Name>
+ <wfs:Title>Weiß</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Westhoven</wfs:Name>
+ <wfs:Title>Westhoven</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Widdersdorf</wfs:Name>
+ <wfs:Title>Widdersdorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Worringen</wfs:Name>
+ <wfs:Title>Worringen</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Zollstock</wfs:Name>
+ <wfs:Title>Zollstock</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ <wfs:FeatureType>
+ <wfs:Name>adressen_stadtteil:Zündorf</wfs:Name>
+ <wfs:Title>Zündorf</wfs:Title>
+ <wfs:DefaultCRS>urn:ogc:def:crs:EPSG::25832</wfs:DefaultCRS>
+ <ows:WGS84BoundingBox>
+ <ows:LowerCorner>6.80534263 50.83164204</ows:LowerCorner>
+ <ows:UpperCorner>7.13337013 51.08846294</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ </wfs:FeatureType>
+ </wfs:FeatureTypeList>
+ <fes:Filter_Capabilities>
+ <fes:Conformance>
+ <fes:Constraint name="ImplementsQuery"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsAdHocQuery"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsFunctions"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsResourceId"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsMinStandardFilter"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsStandardFilter"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsMinSpatialFilter"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsSpatialFilter"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsMinTemporalFilter"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsTemporalFilter"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsVersionNav"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsSorting"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsExtendedOperators"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsMinimumXPath"><ows:NoValues/><ows:DefaultValue>TRUE</ows:DefaultValue></fes:Constraint>
+ <fes:Constraint name="ImplementsSchemaElementFunc"><ows:NoValues/><ows:DefaultValue>FALSE</ows:DefaultValue></fes:Constraint>
+ </fes:Conformance>
+ <fes:Id_Capabilities>
+ <fes:ResourceIdentifier name="fes:ResourceId"/>
+ </fes:Id_Capabilities>
+ <fes:Scalar_Capabilities>
+ <fes:LogicalOperators/>
+ <fes:ComparisonOperators>
+ <fes:ComparisonOperator name="PropertyIsEqualTo"/>
+ <fes:ComparisonOperator name="PropertyIsNotEqualTo"/>
+ <fes:ComparisonOperator name="PropertyIsLessThan"/>
+ <fes:ComparisonOperator name="PropertyIsGreaterThan"/>
+ <fes:ComparisonOperator name="PropertyIsLessThanOrEqualTo"/>
+ <fes:ComparisonOperator name="PropertyIsGreaterThanOrEqualTo"/>
+ <fes:ComparisonOperator name="PropertyIsLike"/>
+ <fes:ComparisonOperator name="PropertyIsNull"/>
+ <fes:ComparisonOperator name="PropertyIsNil"/>
+ <fes:ComparisonOperator name="PropertyIsBetween"/>
+ </fes:ComparisonOperators>
+ </fes:Scalar_Capabilities>
+ <fes:Spatial_Capabilities>
+ <fes:GeometryOperands xmlns:gml="http://www.opengis.net/gml" xmlns:gml32="http://www.opengis.net/gml">
+ <fes:GeometryOperand name="gml:Box"/>
+ <fes:GeometryOperand name="gml:Envelope"/>
+ <fes:GeometryOperand name="gml:Point"/>
+ <fes:GeometryOperand name="gml:LineString"/>
+ <fes:GeometryOperand name="gml:LinearRing"/>
+ <fes:GeometryOperand name="gml:Polygon"/>
+ <fes:GeometryOperand name="gml:MultiPoint"/>
+ <fes:GeometryOperand name="gml:MultiCurve"/>
+ <fes:GeometryOperand name="gml:MultiSurface"/>
+ </fes:GeometryOperands>
+ <fes:SpatialOperators>
+ <fes:SpatialOperator name="BBOX"/>
+ <fes:SpatialOperator name="Equals"/>
+ <fes:SpatialOperator name="Disjoint"/>
+ <fes:SpatialOperator name="Intersects"/>
+ <fes:SpatialOperator name="Touches"/>
+ <fes:SpatialOperator name="Crosses"/>
+ <fes:SpatialOperator name="Within"/>
+ <fes:SpatialOperator name="Contains"/>
+ <fes:SpatialOperator name="Overlaps"/>
+ <fes:SpatialOperator name="Beyond"/>
+ <fes:SpatialOperator name="DWithin"/>
+ </fes:SpatialOperators>
+ </fes:Spatial_Capabilities>
+ </fes:Filter_Capabilities>
+</wfs:WFS_Capabilities>
=====================================
tests/resources/wfs_mapserver_demo_getcapabilities_100.xml
=====================================
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<WFS_Capabilities version="1.0.0" updateSequence="0" xmlns="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd">
+<Service>
+ <Name>MapServer WFS</Name>
+ <Title>WFS Demo Server for MapServer</Title>
+ <Abstract>This demonstration server showcases MapServer (www.mapserver.org) and its OGC support</Abstract>
+ <OnlineResource>https://demo.mapserver.org/cgi-bin/wfs?</OnlineResource>
+</Service>
+
+<Capability>
+ <Request>
+ <GetCapabilities>
+ <DCPType>
+ <HTTP>
+ <Get onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ <DCPType>
+ <HTTP>
+ <Post onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ </GetCapabilities>
+ <DescribeFeatureType>
+ <SchemaDescriptionLanguage>
+ <XMLSCHEMA/>
+ </SchemaDescriptionLanguage>
+ <DCPType>
+ <HTTP>
+ <Get onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ <DCPType>
+ <HTTP>
+ <Post onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ </DescribeFeatureType>
+ <GetFeature>
+ <ResultFormat>
+ <GML2/>
+ <geojson/>
+ </ResultFormat>
+ <DCPType>
+ <HTTP>
+ <Get onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ <DCPType>
+ <HTTP>
+ <Post onlineResource="https://demo.mapserver.org/cgi-bin/wfs?"/>
+ </HTTP>
+ </DCPType>
+ </GetFeature>
+ </Request>
+</Capability>
+
+<FeatureTypeList>
+ <Operations>
+ <Query/>
+ </Operations>
+ <FeatureType>
+ <Name>continents</Name>
+ <Title>World continents</Title>
+ <SRS>EPSG:4326</SRS>
+ <LatLongBoundingBox minx="-180.000000" miny="-90.000000" maxx="180.000000" maxy="83.627419"/>
+ <MetadataURL type="TC211" format="text/xml">https://demo.mapserver.org/cgi-bin/wfs?request=GetMetadata&layer=continents</MetadataURL>
+ </FeatureType>
+ <FeatureType>
+ <Name>cities</Name>
+ <Title>World cities</Title>
+ <SRS>EPSG:4326</SRS>
+ <LatLongBoundingBox minx="-178.166667" miny="-54.800000" maxx="179.383333" maxy="78.933333"/>
+ <MetadataURL type="TC211" format="text/xml">https://demo.mapserver.org/cgi-bin/wfs?request=GetMetadata&layer=cities</MetadataURL>
+ </FeatureType>
+</FeatureTypeList>
+
+<ogc:Filter_Capabilities>
+ <ogc:Spatial_Capabilities>
+ <ogc:Spatial_Operators>
+ <ogc:Equals/>
+ <ogc:Disjoint/>
+ <ogc:Touches/>
+ <ogc:Within/>
+ <ogc:Overlaps/>
+ <ogc:Crosses/>
+ <ogc:Intersect/>
+ <ogc:Contains/>
+ <ogc:DWithin/>
+ <ogc:BBOX/>
+ </ogc:Spatial_Operators>
+ </ogc:Spatial_Capabilities>
+ <ogc:Scalar_Capabilities>
+ <ogc:Logical_Operators/>
+ <ogc:Comparison_Operators>
+ <ogc:Simple_Comparisons/>
+ <ogc:Like/>
+ <ogc:Between/>
+ </ogc:Comparison_Operators>
+ </ogc:Scalar_Capabilities>
+</ogc:Filter_Capabilities>
+
+</WFS_Capabilities>
\ No newline at end of file
=====================================
tests/test_wfs_schema.py
=====================================
@@ -8,6 +8,29 @@ from tests.utils import service_ok
WFS_SERVICE_URL = 'https://www.dov.vlaanderen.be/geoserver/wfs?request=GetCapabilities'
+ at pytest.fixture
+def mp_wfs_100(monkeypatch):
+ """Monkeypatch the call to the remote GetCapabilities request of WFS
+ version 1.0.0.
+
+ Parameters
+ ----------
+ monkeypatch : pytest.fixture
+ PyTest monkeypatch fixture.
+
+ """
+ def read(*args, **kwargs):
+ with open('tests/resources/wfs_mapserver_demo_getcapabilities_100.xml', 'r') as f:
+ data = f.read()
+ if type(data) is not bytes:
+ data = data.encode('utf-8')
+ data = etree.fromstring(data)
+ return data
+
+ monkeypatch.setattr(
+ owslib.feature.common.WFSCapabilitiesReader, 'read', read)
+
+
@pytest.fixture
def mp_wfs_110(monkeypatch):
"""Monkeypatch the call to the remote GetCapabilities request of WFS
@@ -82,6 +105,9 @@ def mp_remote_describefeaturetype_typename_eq_attribute(monkeypatch):
__remote_describefeaturetype)
+
+
+
class TestOnline(object):
"""Class grouping online tests for the WFS get_schema method."""
@pytest.mark.xfail
@@ -119,7 +145,21 @@ class TestOnline(object):
class TestOffline(object):
"""Class grouping offline tests for the WFS get_schema method."""
- def test_get_schema(self, mp_wfs_110, mp_remote_describefeaturetype):
+ def test_get_schema_100(self, mp_wfs_100):
+ """Test the get_schema method for a standard schema.
+
+ Parameters
+ ----------
+ mp_wfs_100 : pytest.fixture
+ Monkeypatch the call to the remote GetCapabilities request.
+ """
+ wfs100 = WebFeatureService(WFS_SERVICE_URL, version='1.0.0')
+ assert wfs100.identification.title == 'WFS Demo Server for MapServer'
+ assert wfs100.identification.keywords == []
+ assert list(wfs100.contents) == ['continents', 'cities']
+
+
+ def test_get_schema(self, mp_wfs_100, mp_remote_describefeaturetype):
"""Test the get_schema method for a standard schema.
Parameters
@@ -173,3 +213,177 @@ class TestOffline(object):
"""
wfs110 = WebFeatureService(WFS_SERVICE_URL, version='1.1.0')
schema = wfs110.get_schema('gw_varia:hhz')
+
+ def test_get_datatype_geometry(self):
+ """Test the _get_datatype helper function with geometry types."""
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test geometry type
+ # XML: <element name="field1" type="gml:PointPropertyType"/>
+ element = etree.Element('{%s}element' % XS_NAMESPACE,
+ attrib={'name': 'field1', 'type': 'gml:PointPropertyType'},
+ nsmap=ns)
+ assert _get_datatype(element, "xsd", "gml") == "PointPropertyType"
+
+ def test_get_datatype_reference(self):
+ """Test the _get_datatype helper function with element references."""
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test element reference
+ # XML: <element name="field2" ref="gml:polygonProperty"/>
+ element = etree.Element('{%s}element' % XS_NAMESPACE,
+ attrib={'name': 'field2', 'ref': 'gml:polygonProperty'},
+ nsmap=ns)
+ assert _get_datatype(element, "xsd", "gml") == "polygonProperty"
+
+ @pytest.mark.parametrize("data_type", [
+ "xsd:boolean",
+ "xsd:date",
+ "xsd:dateTime",
+ "xsd:double",
+ "xsd:float",
+ "xsd:integer",
+ "xsd:int",
+ "xsd:string",
+ ])
+ def test_get_datatype_simple_types(self, data_type):
+ """Test the _get_datatype helper function with different simple types.
+
+ Parameters
+ ----------
+ data_type : str
+ The XML Schema data type to test
+ """
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test simple type with restriction
+ # XML:
+ # <element name="field3">
+ # <simpleType>
+ # <restriction base="[data_type]"/>
+ # </simpleType>
+ # </element>
+ element = etree.Element('{%s}element' % XS_NAMESPACE, attrib={'name': 'field3'}, nsmap=ns)
+ simple_type = etree.SubElement(element, '{%s}simpleType' % XS_NAMESPACE)
+ restriction = etree.SubElement(simple_type, '{%s}restriction' % XS_NAMESPACE,
+ attrib={'base': data_type})
+ expected_type = data_type.split(":")[-1]
+ assert _get_datatype(element, "xsd", "gml") == expected_type
+
+ @pytest.mark.parametrize("data_type", [
+ "xsd:boolean",
+ "xsd:date",
+ "xsd:dateTime",
+ "xsd:double",
+ "xsd:float",
+ "xsd:integer",
+ "xsd:int",
+ "xsd:string",
+ ])
+ def test_get_datatype_direct_types(self, data_type):
+ """Test the _get_datatype helper function with direct type attributes.
+
+ Parameters
+ ----------
+ data_type : str
+ The XML Schema data type to test
+ """
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test direct type attribute
+ # XML: <element name="field1" type="xsd:string"/>
+ element = etree.Element('{%s}element' % XS_NAMESPACE,
+ attrib={'name': 'field1', 'type': data_type},
+ nsmap=ns)
+ expected_type = data_type.split(":")[-1]
+ assert _get_datatype(element, "xsd", "gml") == expected_type
+
+ @pytest.mark.parametrize("data_type", [
+ "xsd:boolean",
+ "xsd:date",
+ "xsd:dateTime",
+ "xsd:double",
+ "xsd:float",
+ "xsd:integer",
+ "xsd:int",
+ "xsd:string",
+ ])
+ def test_get_datatype_complex_types(self, data_type):
+ """Test the _get_datatype helper function with complex type definitions.
+
+ Parameters
+ ----------
+ data_type : str
+ The XML Schema data type to test
+ """
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test complex type
+ # XML:
+ # <element name="field4">
+ # <complexType>
+ # <sequence>
+ # <element type="xsd:type"/>
+ # </sequence>
+ # </complexType>
+ # </element>
+ element = etree.Element('{%s}element' % XS_NAMESPACE, attrib={'name': 'field4'}, nsmap=ns)
+ complex_type = etree.SubElement(element, '{%s}complexType' % XS_NAMESPACE)
+ sequence = etree.SubElement(complex_type, '{%s}sequence' % XS_NAMESPACE)
+ sub_element = etree.SubElement(sequence, '{%s}element' % XS_NAMESPACE,
+ attrib={'type': data_type})
+ expected_type = data_type.split(":")[-1]
+ assert _get_datatype(element, "xsd", "gml") == expected_type
+
+
+
+ def test_get_datatype_unknown(self):
+ """Test the _get_datatype helper function with unknown structure."""
+ from owslib.feature.schema import _get_datatype, XS_NAMESPACE
+ from owslib.etree import etree
+
+ ns = {
+ 'xs': XS_NAMESPACE,
+ 'gml': 'http://www.opengis.net/gml',
+ 'xsd': 'http://www.w3.org/2001/XMLSchema'
+ }
+
+ # Test unknown structure
+ # XML: <element name="field5"/>
+ element = etree.Element('{%s}element' % XS_NAMESPACE, attrib={'name': 'field5'}, nsmap=ns)
+ assert _get_datatype(element, "xsd", "gml") is None
=====================================
tests/test_wfs_schema_arcgis_server.py
=====================================
@@ -0,0 +1,154 @@
+import pytest
+
+import owslib
+from owslib.etree import etree
+from owslib.wfs import WebFeatureService
+from tests.utils import service_ok
+
+WFS_SERVICE_URL = 'https://geoportal.stadt-koeln.de/arcgis/services/basiskarten/adressen_stadtteil/MapServer/WFSServer?SERVICE=WFS&request=GetCapabilities'
+
+
+ at pytest.fixture
+def mp_wfs_110(monkeypatch):
+ """Monkeypatch the call to the remote GetCapabilities request of WFS
+ version 1.1.0.
+
+ Parameters
+ ----------
+ monkeypatch : pytest.fixture
+ PyTest monkeypatch fixture.
+ """
+ def read(*args, **kwargs):
+ with open('tests/resources/wfs_koeln_arcgis_getcapabilities_110.xml', 'r') as f:
+ data = f.read()
+ if type(data) is not bytes:
+ data = data.encode('utf-8')
+ data = etree.fromstring(data)
+ return data
+
+ monkeypatch.setattr(
+ owslib.feature.common.WFSCapabilitiesReader, 'read', read)
+
+
+ at pytest.fixture
+def mp_wfs_200(monkeypatch):
+ """Monkeypatch the call to the remote GetCapabilities request of WFS
+ version 2.0.0.
+
+ Parameters
+ ----------
+ monkeypatch : pytest.fixture
+ PyTest monkeypatch fixture.
+ """
+ def read(*args, **kwargs):
+ with open('tests/resources/wfs_koeln_arcgis_getcapabilities_200.xml', 'r') as f:
+ data = f.read()
+ if type(data) is not bytes:
+ data = data.encode('utf-8')
+ data = etree.fromstring(data)
+ return data
+
+ monkeypatch.setattr(
+ owslib.feature.common.WFSCapabilitiesReader, 'read', read)
+
+
+ at pytest.fixture()
+def mp_remote_describefeaturetype(monkeypatch):
+ """Monkeypatch the call to the remote DescribeFeatureType request.
+
+ Returns a standard DescribeFeatureType response.
+
+ Parameters
+ ----------
+ monkeypatch : pytest.fixture
+ PyTest monkeypatch fixture.
+ """
+ def __remote_describefeaturetype(*args, **kwargs):
+ with open('tests/resources/wfs_koeln_arcgis_describefeaturetype_110.xml', 'r') as f:
+ data = f.read()
+ if type(data) is not bytes:
+ data = data.encode('utf-8')
+ data = etree.fromstring(data)
+ return data
+
+ monkeypatch.setattr(owslib.feature.schema,
+ '_get_remote_describefeaturetype',
+ __remote_describefeaturetype)
+
+
+class TestOnline(object):
+ """Class grouping online tests for the WFS get_schema method."""
+
+ @pytest.mark.xfail
+ @pytest.mark.online
+ @pytest.mark.skipif(not service_ok(WFS_SERVICE_URL),
+ reason="WFS service is unreachable")
+ @pytest.mark.parametrize("wfs_version", ["1.1.0", "2.0.0"])
+ def test_get_schema(self, wfs_version):
+ """Test the get_schema method for a standard schema."""
+ wfs = WebFeatureService(WFS_SERVICE_URL, version=wfs_version)
+ schema = wfs.get_schema('adressen_stadtteil:Blumenberg')
+
+ @pytest.mark.xfail
+ @pytest.mark.online
+ @pytest.mark.skipif(not service_ok(WFS_SERVICE_URL),
+ reason="WFS service is unreachable")
+ @pytest.mark.parametrize("wfs_version", ["1.1.0", "2.0.0"])
+ def test_schema_result(self, wfs_version):
+ """Test whether the output from get_schema is a wellformed dictionary."""
+ wfs = WebFeatureService(WFS_SERVICE_URL, version=wfs_version)
+ schema = wfs.get_schema('adressen_stadtteil:Blumenberg')
+ assert isinstance(schema, dict)
+
+ assert 'properties' in schema or 'geometry' in schema
+
+ if 'geometry' in schema:
+ assert 'geometry_column' in schema
+
+ if 'properties' in schema:
+ assert isinstance(schema['properties'], dict)
+
+ assert 'required' in schema
+ assert isinstance(schema['required'], list)
+
+
+class TestOffline(object):
+ """Class grouping offline tests for the WFS get_schema method."""
+
+ def test_get_schema(self, mp_wfs_110, mp_remote_describefeaturetype):
+ """Test the get_schema method for a standard schema.
+
+ Parameters
+ ----------
+ mp_wfs_110 : pytest.fixture
+ Monkeypatch the call to the remote GetCapabilities request.
+ mp_remote_describefeaturetype : pytest.fixture
+ Monkeypatch the call to the remote DescribeFeatureType request.
+ """
+ wfs = WebFeatureService(WFS_SERVICE_URL, version='1.1.0')
+ schema = wfs.get_schema('adressen_stadtteil:Blumenberg')
+
+ def test_schema_result(self, mp_wfs_110, mp_remote_describefeaturetype):
+ """Test whether the output from get_schema is a wellformed dictionary.
+
+ Parameters
+ ----------
+ mp_wfs_110 : pytest.fixture
+ Monkeypatch the call to the remote GetCapabilities request.
+ mp_remote_describefeaturetype : pytest.fixture
+ Monkeypatch the call to the remote DescribeFeatureType request.
+ """
+ wfs = WebFeatureService(WFS_SERVICE_URL, version='1.1.0')
+ schema = wfs.get_schema('adressen_stadtteil:Blumenberg')
+ assert isinstance(schema, dict)
+
+ assert 'properties' in schema or 'geometry' in schema
+
+ if 'geometry' in schema:
+ assert 'geometry_column' in schema
+
+ if 'properties' in schema:
+ assert isinstance(schema['properties'], dict)
+
+ assert 'required' in schema
+ assert isinstance(schema['required'], list)
=====================================
tests/test_wmts_cookies.py
=====================================
@@ -0,0 +1,25 @@
+from tests.utils import scratch_file
+from tests.utils import service_ok
+
+from owslib.wmts import WebMapTileService
+
+import pytest
+
+SERVICE_URL_EXAMPLE = 'https://mapsneu.wien.gv.at/basemapneu/1.0.0/WMTSCapabilities.xml'
+
+
+ at pytest.mark.online
+ at pytest.mark.skipif(not service_ok(SERVICE_URL_EXAMPLE, timeout=20),
+ reason="WMTS service is unreachable")
+def test_wmts_cookies():
+ from owslib.wmts import WebMapTileService
+ cookies = {
+ 'cookie1': 'example1',
+ 'cookie2': 'example2'
+ }
+ wmts = WebMapTileService(SERVICE_URL_EXAMPLE, cookies=cookies)
+ tile = wmts.gettile(layer="bmaporthofoto30cm", tilematrix="10", row=357, column=547)
+ tile_raw_cookies = tile._response.request.headers['Cookie']
+ tile_cookies = (dict(i.split('=',1) for i in tile_raw_cookies.split('; ')))
+ assert tile_cookies.get('cookie1') == 'example1'
+ assert tile_cookies.get('cookie2') == 'example2'
\ No newline at end of file
=====================================
tests/utils.py
=====================================
@@ -83,12 +83,13 @@ def sorted_url_query(url):
def service_ok(url, timeout=5):
try:
- resp = requests.head(url, allow_redirects=True, timeout=timeout)
+ resp = requests.get(url, allow_redirects=True, timeout=timeout, stream=True)
if 'html' in resp.headers.get('content-type', '').lower():
+ resp.close()
return False
- if not resp.ok: # if HEAD is not supported try GET with streaming
- resp = requests.get(url, timeout=timeout, stream=True)
- return resp.ok
+ ok = resp.ok
+ resp.close()
+ return ok
except requests.exceptions.ReadTimeout:
ok = False
except requests.exceptions.ConnectTimeout:
View it on GitLab: https://salsa.debian.org/debian-gis-team/owslib/-/commit/04c7b2f4eace05942612e40fcde411624a04f825
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/owslib/-/commit/04c7b2f4eace05942612e40fcde411624a04f825
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20250602/4c260c08/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list