Important
La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 98.08%.
3.3. Web Feature Service (WFS)
Les normes 1.0.0 et 1.1.0 WFS implémentées dans QGIS Server fournissent une interface HTTP pour interroger les entités géographiques d’un projet QGIS. Une demande WFS typique définit le projet QGIS à utiliser et la couche à interroger.
Document de spécifications en fonction du numéro de version du service:
Requêtes standard fournies par QGIS Server:
Requête |
Description |
---|---|
Renvoie des métadonnées XML avec des informations sur le serveur |
|
Renvoie une sélection d’entité |
|
Renvoie une description des types d’entités et des propriétés |
|
Permet aux entités d’être insérées, mises à jour ou supprimées |
3.3.1. GetCapabilities
Paramètres standard pour la demande GetCapabilities selon les spécifications OGC WFS 1.0.0 et 1.1.0:
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Nom du service (WFS) |
|
Oui |
Nom de la requête (GetCapabilities) |
|
Non |
Version du service |
Outre les paramètres standard, QGIS prend en charge les paramètres suivants :
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Fichier du projet QGIS |
VERSION
Ce paramètre permet de spécifier la version du service à utiliser. Les valeurs disponibles pour le paramètre VERSION
sont:
1.0.0
1.1.0
Si aucune version n’est indiquée dans la requête, alors 1.1.0
est utilisée par défaut.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&...
3.3.2. GetFeature
Paramètres standard pour la demande GetFeature selon les spécifications OGC WFS 1.0.0 et 1.1.0:
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Nom du service (WFS) |
|
Oui |
nom de la requête (GetFeature) |
|
Non |
Version du service |
|
Non |
Nom des couches |
|
Non |
Filtre les entités par leur identifiant |
|
Non |
Format de sortie |
|
Non |
Type de résultat |
|
Non |
Nom des propriétés à renvoyer |
|
Non |
Nombre maximum d’entités à renvoyer |
|
Non |
Système de coordonnées de référence |
|
Non |
Encodage du filtre OGC |
|
Non |
Emprise de la carte |
|
Non |
Trie les résultats |
Outre les paramètres standard, QGIS prend en charge les paramètres suivants :
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Fichier du projet QGIS |
|
Non |
Pagination |
|
Non |
Type de géométrie à renvoyer |
|
Non |
Expression de filtrage |
TYPENAME
Ce paramètre permet de spécifier les noms des couches et est obligatoire si FEATUREID
n’est pas défini.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&TYPENAME=countries
FEATUREID
Ce paramètre permet de spécifier l’ID d’une entité spécifique et est formé avec typename.fid,typename.fid,…`.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0,places.1
réponse XML :
<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
Ce paramètre peut être utilisé pour spécifier le format de la réponse. Si VERSION` est supérieur ou égal à ``1.1.0
, GML3 est le format par défaut. Sinon, GML2 est utilisé.
Les valeurs disponibles sont :
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
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0
&OUTPUTFORMAT=geojson
réponse GeoJSON :
{
"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
Ce paramètre peut être utilisé pour indiquer le genre de résultat attendu. Les valeurs possibles sont :
results
: le comportement par défauthits
: renvoie seulement le décompte des entités
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&RESULTTYPE=hits
&...
PROPERTYNAME
Ce paramètre peut être utilisé pour spécifier une propriété spécifique à retourner. Une propriété doit être associée à un TYPENAME
ou à un FEATUREID
:
Exemple d’URL valide :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&PROPERTYNAME=name
&TYPENAME=places
Au contraire, l’URL suivante renverra une exception :
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
Ce paramètre permet de limiter le nombre d’entités renvoyées par la requête.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&MAXFEATURES=1000
Note
Ce paramètre peut être utile pour améliorer les performances lorsque les couches vectorielles sous-jacentes sont lourdes.
SRSNAME
Ce paramètre permet d’indiquer le Système de Référence Spatial de sortie de la réponse ainsi que le SCR BBOX`
et doit être formé comme EPSG:XXXX
.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&SRSNAME=EPSG:32620
FILTER
This parameter allows to filter the response with the Filter Encoding language defined by the OGC Filter Encoding standard. For example:
http://localhost/qgisserver?
SERVICE=WFS&
REQUEST=GetFeature&
TYPENAME=places&
FILTER=<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName><Literal>Paris</Literal></PropertyIsEqualTo></Filter>
In case of multiple typenames, filters have to be enclosed in parentheses:
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>)
Filter features that intersect with a polygon:
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
Ce paramètre permet de spécifier l’étendue de la carte avec des unités en fonction du SCR actuel. Les coordonnées doivent être séparées par une virgule.
L paramètre ``SRSNAME``peut spécifier le SCR de l’étendue. S’il n’est pas spécifié, le SCR de la couche est utilisé.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&BBOX=-11.84,42.53,8.46,50.98
Le paramètre FEATUREID
ne peut pas être utilisé avec le paramètre BBOX
. Toute tentative entraînera une exception :
<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
Ce paramètre permet de trier les entités résultantes selon les valeurs des propriétés et doit être formé comme propertyname SORTRULE
.
Valeurs disponibles pour SORTRULE
en cas de tri descendant :
D
+D
DESC
+DESC
Valeurs disponibles pour SORTRULE
en cas de tri ascendant :
A
+A
ASC
+ASC
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&PROPERTYNAME=name
&MAXFEATURES=3
&SORTBY=name DESC
Le résultat correspondant :
<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
Ce paramètre peut être utilisé pour indiquer le type de géométrie attendu pour les entités. Les valeurs possibles sont :
extent
centroid
none
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&GEOMETRYNAME=centroid
&...
STARTINDEX
Ce paramètre est standard dans WFS 2.0, mais c’est une extension pour WFS 1.0.0.
En fait, il peut être utilisé pour ignorer certaines entités dans l’ensemble des résultats et, en combinaison avec MAXFEATURES
, il offre la possibilité de paginer les résultats.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&STARTINDEX=2
&...
EXP_FILTER
This parameter allows to filter the response with QGIS expressions. The ;
character is used to separate filters in case of multiple typenames.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places,countries
&EXP_FILTER="name"='Paris';"name"='France'
3.3.3. DescribeFeatureType
Paramètres standard pour la requête DescribeFeatureType selon les spécifications OGC WFS 1.0.0 et 1.1.0 :
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Nom du service (WFS) |
|
Oui |
Nom de la requête (DescribeFeatureType) |
|
Non |
Version du service |
|
Non |
Format de la reponse |
|
Non |
Nom des couches |
Outre les paramètres standard, QGIS prend en charge les paramètres suivants :
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Fichier du projet QGIS |
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=DescribeFeatureType
&TYPENAME=countries
Réponse en sortie
<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
Cette requête permet de mettre à jour, supprimer ou ajouter une ou plusieurs entités grâce à un document XML. L’action delete peut être réalisée par une requête POST ainsi qu’avec le paramètre OPERATION tandis que les opérations add et update ne peuvent être réalisées que par une requête POST.
Paramètres standard pour la requête Transaction selon les spécifications OGC WFS 1.0.0 et 1.1.0:
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Nom du service (WFS) |
|
Oui |
nom de la requête (Transaction) |
|
Non |
Version du service |
|
Non |
Encodage du filtre OGC |
|
Non |
Emprise de la carte |
|
Non |
Filtre les entités par leur identifiant |
|
Non |
Nom des couches |
Outre les paramètres standard, QGIS prend en charge les paramètres suivants :
Paramètre |
Requis |
Description |
---|---|---|
Oui |
Fichier du projet QGIS |
|
Non |
Spécifie l’opération |
|
Non |
Expression de filtrage |
OPERATION
Ce paramètre permet de supprimer une entité sans utiliser une requête POST avec un document XML dédié.
Exemple d’URL :
http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=Transaction
&OPERATION=DELETE
&FEATUREID=24
Note
Les paramètres FEATUREID
, BBOX
et FILTER
sont mutuellement exclusifs et hiérarchisés dans cet ordre.
Ajout d’entités
Exemple de requête POST
wget --post-file=add.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
avec le 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>
Mise à jour d’entités
Exemple de requête POST
wget --post-file=update.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
avec le 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>
Suppression d’entités
Exemple de requête POST
wget --post-file=delete.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"
avec le 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>