3.3. Web Feature Service (WFS)
De WFS standaarden 1.0.0 en 1.1.0, geïmplementeerd in QGIS Server, verschaffen een interface voor HTTP voor het verzoeken van geografische objecten uit een project van QGIS. Een typisch WFS-verzoek definieert het te gebruiken project van QGIS, en de te bevragen laag.
Specificatiedocument overeenkomstig het versienummer van de service:
Standaardverzoeken verschaft door QGIS Server:
Verzoek |
Omschrijving |
---|---|
Geeft XML-metadata terug met informatie over de server |
|
Geeft een selectie van objecten terug |
|
Geeft een beschrijving van typen objecten en eigenschappen terug |
|
Staat toe dat objecten worden ingevoegd, bijgewerkt of verwijderd |
3.3.1. GetCapabilities
Standaardparameters voor het verzoek GetCapabilities overeenkomstig de specificaties van OGC WFS 1.0.0 en 1.1.0:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
Naam van de service (WFS) |
|
Ja |
Naam van het verzoek (GetCapabilities) |
|
Nee |
Versie van de service |
In aanvulling op de standaard parameters ondersteunt QGIS Server de volgende extra parameters:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
QGIS projectbestand |
VERSION
Deze parameter maakt het mogelijk de versie van de te gebruiken service te specificeren. Beschikbare waarden voor de parameter VERSION
zijn:
1.0.0
1.1.0
Indien geen versie wordt aangegeven in het verzoek, dan wordt standaard 1.1.0
gebruikt.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&...
3.3.2. GetFeature
Standaardparameters voor het verzoek GetFeature overeenkomstig de specificaties van OGC WFS 1.0.0 en 1.1.0:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
Naam van de service (WFS) |
|
Ja |
Naam van het verzoek (GetFeature) |
|
Nee |
Versie van de service |
|
Nee |
Naam van de lagen |
|
Nee |
Objecten filteren op ID |
|
Nee |
Indeling uitvoer |
|
Nee |
Type resultaat |
|
Nee |
Naam van de eigenschappen die moeten worden teruggegeven |
|
Nee |
Maximale aantal terug te geven objecten |
|
Nee |
Coördinaten referentiesysteem |
|
Nee |
OGC codering filter |
|
Nee |
Kaartbereik |
|
Nee |
Sorteer de resultaten |
In aanvulling op de standaard parameters ondersteunt QGIS Server de volgende extra parameters:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
QGIS projectbestand |
|
Nee |
Paginanummer |
|
Nee |
Type terug te geven geometrie |
|
Nee |
Expressie filteren |
TYPENAME
Deze parameter maakt het mogelijk laagnamen te specificeren en is verplicht als FEATUREID
niet is ingesteld.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&TYPENAME=countries
FEATUREID
Deze parameter maakt het mogelijk de ID van een specifiek object te specificeren en wordt gevormd als typename.fid,typename.fid,...
.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0,places.1
XML-antwoord:
<wfs:FeatureCollection 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:xlink="http://www.w3.org/1999/xlink" xmlns:qgs="http://www.qgis.org/gml" 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.qgis.org/gml http://192.168.1.15/qgisserver?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=countries,places&OUTPUTFORMAT=text/xml; subtype%3Dgml/3.1.1">
<gml:boundedBy>
...
</gml:boundedBy>
<gml:featureMember>
<qgs:countries gml:id="countries.1">
...
</qgs:countries>
</gml:featureMember>
<gml:featureMember>
<qgs:places gml:id="places.1">
...
</qgs:places>
</gml:featureMember>
</wfs:FeatureCollection>
OUTPUTFORMAT
Deze parameter kan worden gebruikt om de indeling van het antwoord te specificeren. Als VERSION
groter of gelijk is aan 1.1.0
dan is GML3 de standaard indeling. Anders wordt GML2 gebruikt.
Beschikbare waarden zijn:
gml2
text/xml; subtype=gml/2.1.2
gml3
text/xml; subtype=gml/3.1.1
geojson
application/vnd.geo+json
,application/vnd.geo json
application/geo+json
application/geo json
application/json
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0
&OUTPUTFORMAT=geojson
GeoJSON-antwoord:
{
"type":"FeatureCollection",
"bbox":[
-180,
-90,
180,
83.6236
],
"features":[
{
"bbox":[
-61.891113,
16.989719,
-61.666389,
17.724998
],
"geometry":{
"coordinates":[
"..."
],
"type":"MultiPolygon"
},
"id":"countries.1",
"properties":{
"id":1,
"name":"Antigua and Barbuda"
},
"type":"Feature"
}
]
}
RESULTTYPE
Deze parameter kan worden gebruikt om het terug te geven resultaat te specificeren. Beschikbare waarden zijn:
results
: het standaard gedraghits
: geeft alleen het aantal objecten terug
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&RESULTTYPE=hits
&...
PROPERTYNAME
Deze parameter kan worden gebruikt om een specifieke terug te geven eigenschap te specificeren. Een eigenschap dient te worden aangeduid met een TYPENAME
of een FEATUREID
:
Geldig voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&PROPERTYNAME=name
&TYPENAME=places
In het andere geval zal de volgende URL een uitzondering teruggeven:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&PROPERTYNAME=name
&TYPENAME=places,countries
<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" version="1.2.0">
<ServiceException code="RequestNotWellFormed">There has to be a 1:1 mapping between each element in a TYPENAME and the PROPERTYNAME list</ServiceException>
</ServiceExceptionReport>
MAXFEATURES
Deze parameter maakt het mogelijk het aantal terug te geven objecten door het verzoek te beperken.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&MAXFEATURES=1000
Notitie
Deze parameter kan nuttig zijn om de uitvoering te verbeteren als onderliggende vectorlagen zwaar zijn.
SRSNAME
Deze parameter maakt het mogelijk het Ruimtelijke ReferentieSysteem en ook het CRS voor BBOX
aan te geven en moet zijn gevormd als EPSG:XXXX
.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&SRSNAME=EPSG:32620
FILTER
Deze parameter maakt het mogelijk het antwoord te filteren op de taal voor Filter Encoding, gedefinieerd door de OGC Filter Encoding standard. Bijvoorbeeld:
http://localhost/qgisserver?
SERVICE=WFS&
REQUEST=GetFeature&
TYPENAME=places&
FILTER=<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName><Literal>Paris</Literal></PropertyIsEqualTo></Filter>
In het geval van meerdere typenamen moeten filters worden omsloten door haakjes:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places,countries
&FILTER=(<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName><Literal>Paris</Literal></PropertyIsEqualTo></Filter>)(<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName><Literal>France</Literal></PropertyIsEqualTo></Filter>)
Objecten filteren die kruisen met een polygoon:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&VERSION=1.1.0
&TYPENAME=places
&FILTER=<Filter xmlns="http://www.opengis.net/ogc">
<Intersects>
<PropertyName>geometry</PropertyName>
<Polygon xmlns="http://www.opengis.net/gml" srsName="EPSG:4326">
<exterior>
<LinearRing>
<posList>
-0.6389 42.5922
10.2683 51.9106
14.5196 41.0320
-0.6389 42.5922
</posList>
</LinearRing>
</exterior>
</Polygon>
</Intersects>
</Filter>
BBOX
Deze parameter maakt het mogelijk het kaartbereik te specificeren in kaarteenheden overeenkomstig het huidige CRS. Coördinaten moeten worden gescheiden door een komma.
De parameter SRSNAME
kan het CRS van het bereik specificeren. Indien niet gespecificeerd wordt het CRS van de laag gebruikt.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&BBOX=-11.84,42.53,8.46,50.98
De parameter FEATUREID
kan niet worden gebruikt met de parameter BBOX
. Elke poging zal resulteren in een uitzondering:
<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" version="1.2.0">
<ServiceException code="RequestNotWellFormed">FEATUREID FILTER and BBOX parameters are mutually exclusive</ServiceException>
</ServiceExceptionReport>
SORTBY
Deze parameter maakt het mogelijk resulterende objecten te sorteren overeenkomstig waarden van eigenschappen en moet worden gevormd als naam eigenschap SORTRULE
.
Beschikbare waarden voor SORTRULE
in het geval van aflopend sorteren:
D
+D
DESC
+DESC
Beschikbare waarden voor SORTRULE
in het geval van oplopend sorteren:
A
+A
ASC
+ASC
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&PROPERTYNAME=name
&MAXFEATURES=3
&SORTBY=name DESC
Het corresponderende resultaat:
<wfs:FeatureCollection 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:xlink="http://www.w3.org/1999/xlink" xmlns:qgs="http://www.qgis.org/gml" 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.qgis.org/gml http://192.168.1.15/qgisserver?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=places&OUTPUTFORMAT=text/xml; subtype%3Dgml/3.1.1">
<gml:boundedBy>
...
</gml:boundedBy>
<gml:featureMember>
<qgs:places gml:id="places.90">
<qgs:name>Zagreb</qgs:name>
</qgs:places>
</gml:featureMember>
<gml:featureMember>
<qgs:places gml:id="places.113">
<qgs:name>Yerevan</qgs:name>
</qgs:places>
</gml:featureMember>
<gml:featureMember>
<qgs:places gml:id="places.111">
<qgs:name>Yaounde</qgs:name>
</qgs:places>
</gml:featureMember>
</wfs:FeatureCollection>
GEOMETRYNAME
Deze parameter kan worden gebruikt om het terug te geven soort geometrie te specificeren. Beschikbare waarden zijn:
extent
centroid
none
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&GEOMETRYNAME=centroid
&...
STARTINDEX
Deze parameter is standaard in WFS 2.0, maar het is een uitbreiding voor WFS 1.0.0.
In feite kan hij worden gebruikt om enkele objecten in de set met resultaten over te slaan en in combinatie met MAXFEATURES
verschaft het de mogelijkheid om door de resultaten te bladeren.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&STARTINDEX=2
&...
EXP_FILTER
Deze parameter maakt het mogelijk het antwoord te filteren met expressies van QGIS. Het teken ;
wordt gebruikt om filters te scheiden in het geval van meerdere typenamen.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places,countries
&EXP_FILTER="name"='Paris';"name"='France'
3.3.3. DescribeFeatureType
Standaardparameters voor het verzoek DescribeFeatureType overeenkomstig de specificaties van OGC WFS 1.0.0 en 1.1.0:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
Naam van de service (WFS) |
|
Ja |
Naam van het verzoek (DescribeFeatureType) |
|
Nee |
Versie van de service |
|
Nee |
Indeling van het antwoord |
|
Nee |
Naam van de lagen |
In aanvulling op de standaard parameters ondersteunt QGIS Server de volgende extra parameters:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
QGIS projectbestand |
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=DescribeFeatureType
&TYPENAME=countries
Uitvoer antwoord:
<schema xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:qgs="http://www.qgis.org/gml" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.qgis.org/gml" version="1.0" elementFormDefault="qualified">
<import schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd" namespace="http://www.opengis.net/gml"/>
<element type="qgs:countriesType" substitutionGroup="gml:_Feature" name="countries"/>
<complexType name="countriesType">
<complexContent>
<extension base="gml:AbstractFeatureType">
<sequence>
<element minOccurs="0" type="gml:MultiPolygonPropertyType" maxOccurs="1" name="geometry"/>
<element type="long" name="id"/>
<element nillable="true" type="string" name="name"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
3.3.4. Transaction
Dit verzoek maakt het mogelijk een of verscheidene objecten bij te werken, te verwijderen of toe te voegen met een XML-document. De actie verwijderen kan worden bereikt met een verzoek POST, als ook met de parameter OPERATION, terwijl de bewerkingen toevoegen en bijwerken alleen kunnen worden bereikt door een verzoek POST.
Standaardparameters voor het verzoek Transaction overeenkomstig de specificaties van OGC WFS 1.0.0 en 1.1.0:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
Naam van de service (WFS) |
|
Ja |
Naam van het verzoek (Transaction) |
|
Nee |
Versie van de service |
|
Nee |
OGC codering filter |
|
Nee |
Kaartbereik |
|
Nee |
Objecten filteren op ID |
|
Nee |
Naam van de lagen |
In aanvulling op de standaard parameters ondersteunt QGIS Server de volgende extra parameters:
Parameter |
Vereist |
Omschrijving |
---|---|---|
Ja |
QGIS projectbestand |
|
Nee |
De bewerking specificeren |
|
Nee |
Expressie filteren |
OPERATION
Deze parameter maakt het mogelijk een object te verwijderen zonder en verzoek POST met een toegewezen XML-document.
Voorbeeld URL:
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=Transaction
&OPERATION=DELETE
&FEATUREID=24
Notitie
Parameters FEATUREID
, BBOX
en FILTER
sluiten elkaar uit en geprioriteerd in deze volgorde.
Objecten toevoegen
Voorbeeld verzoek POST:
wget --post-file=add.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
met het document add.xml:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:Transaction service="WFS" version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns="http://www.opengis.net/wfs" updateSequence="0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows">
<wfs:Insert idgen="GenerateNew">
<qgs:places>
<qgs:geometry>
<gml:Point srsDimension="2" srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
<gml:coordinates decimal="." cs="," ts=" ">-4.6167,48.3833</gml:coordinates>
</gml:Point>
</qgs:geometry>
<qgs:name>Locmaria-Plouzané</qgs:name>
</qgs:places>
</wfs:Insert>
</wfs:Transaction>
Objecten bijwerken
Voorbeeld verzoek POST:
wget --post-file=update.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
met het document update.xml:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:Transaction service="WFS" version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns="http://www.opengis.net/wfs" updateSequence="0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows">
<wfs:Update typeName="places">
<wfs:Property>
<wfs:Name>name</wfs:Name>
<wfs:Value>Lutece</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:FeatureId fid="24"/>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>
Objecten verwijderen
Voorbeeld verzoek POST:
wget --post-file=delete.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
met het document delete.xml:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:Transaction service="WFS" version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns="http://www.opengis.net/wfs" updateSequence="0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows">
<wfs:Delete typeName="places">
<ogc:Filter>
<ogc:FeatureId fid="24"/>
</ogc:Filter>
</wfs:Delete>
</wfs:Transaction>