Svarbu

Vertimas yra bendruomenės pastangos, prie kurių jūs galite prisijungti. Šis puslapis šiuo metu išverstas 100.00%.

3.3. Tinklo Geoobjektų Paslauga - Web Feature Service (WFS)

QGIS Serveryje įgyvendinti 1.0.0 ir 1.1.0 WFS standartai teikia HTTP sąsają gauti geografinius geoobjektus iš QGIS projekto. Tipinėje WFS užklausoje nurodomas QGIS projektas ir sluoksnis, kuriame turi būti vykdoma užklausa.

Specifikacijos dokumentas pagal paslaugos versiją:

Standartinės QGIS Serverio teikiamos užklausos:

Užklausa

Aprašymas

GetCapabilities

Grąžina XML metaduomenis su informacija apie serverį

GetFeature

Grąžina geoobjektų rinkinį

DescribeFeatureType

Grąžina geoobjektų tipų ir savybių aprašymą

Transaction

Leidžia įterpti, pakeisti ar ištrinti geoobjektus

3.3.1. GetCapabilities

Standartiniai GetCapabilities užklausos parametrai pagal OGC WFS 1.0.0 ir 1.1.0 specifikacijas:

Parametras

Privalomas

Aprašymas

SERVICE

Taip

Paslaugos pavadinimas (WFS)

REQUEST

Taip

Užklausos pavadinimas (GetCapabilities)

VERSION

Ne

Paslaugos versija

Be standartinių, QGIS Serveris palaiko ir šiuos papildomus parametrus:

Parametras

Privalomas

Aprašymas

MAP

Taip

QGIS projekto failas

VERSION

Šis parametras leidžia nurodyti jūsų naudojamų paslaugų versiją. Tinkamos VERSION parametro reikšmės yra:

  • 1.0.0

  • 1.1.0

Jei versija nenurodyta, pagal nutylėjimą naudojama 1.1.0 versija.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&...

3.3.2. GetFeature

Standartiniai GetFeature užklausos parametrai pagal OGC WFS 1.0.0 ir 1.1.0 specifikacijas:

Parametras

Privalomas

Aprašymas

SERVICE

Taip

Paslaugos pavadinimas (WFS)

REQUEST

Taip

Užklausos pavadinimas (GetFeature)

VERSION

Ne

Paslaugos versija

TYPENAME

Ne

Sluoksnių pavadinimai

FEATUREID

Ne

Filtruoti geoobjektus pagal id

OUTPUTFORMAT

Ne

Išvesties formatas

RESULTTYPE

Ne

Rezultato tipas

PROPERTYNAME

Ne

Grąžinamų savybių pavadinimas

MAXFEATURES

Ne

Maksimalus grąžinamų geoobjektų skaičius

SRSNAME

Ne

Koordinačių atskaitos sistema

FILTER

Ne

OGC filtro koduotė

BBOX

Ne

Žemėlapio apimtis

SORTBY

Ne

Rikiuoti rezultatus

Be standartinių, QGIS Serveris palaiko ir šiuos papildomus parametrus:

Parametras

Privalomas

Aprašymas

MAP

Taip

QGIS projekto failas

STARTINDEX

Ne

Puslapiavimas

GEOMETRYNAME

Ne

Grąžinamos geometrijos tipas

EXP_FILTER

Ne

Išraiškų filtras

TYPENAME

Šis parametras leidžia nurodyti sluoksnių pavadinimus ir yra privalomas, jei nenurodytas FEATUREID.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&TYPENAME=countries

FEATUREID

Šis parametras leidžia nurodyti konkretaus geoobjekto ID ir jo forma yra typename.fid,typename.fid,....

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0,places.1

XML atsakas:

<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

Šį parametrą galima naudoti, jei reikia nurodyti atsakymo formatą. Jei VERSION yra naujesnė už 1.1.0, numatytasis formatas yra GML3. Priešingu atveju naudojamas GML2.

Galimos reikšmės yra:

  • 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

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&FEATUREID=countries.0
&OUTPUTFORMAT=geojson

GeoJSON atsakas:

{
    "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

Šį parametrą galima naudoti, jei reikia nurodyti kokio tipo rezultatą reikia grąžinti. Galimos reikšmės yra:

  • results: numatytoji elgsena

  • hits: grąžina tik geoobjektų skaičių

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&RESULTTYPE=hits
&...

PROPERTYNAME

Šį parametrą galima naudoti, jei reikia nurodyti konkrečią grąžinamą savybę. Savybė turi būti sutapatinta su TYPENAME ar FEATUREID:

Tinkamo URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&PROPERTYNAME=name
&TYPENAME=places

O štai toks URL grąžins klaidą:

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

Šis parametras leidžia riboti užklausa grąžinamų geoobjektų skaičių.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&MAXFEATURES=1000

Pastaba

Šį parametrą galima naudoti greitaveikos gerinimui, kai teikiami sunkūs vektoriniai sluoksniai.

SRSNAME

Šis parametras leidžia nurodyti užklausos išvesties erdvinę atskaitos sistemą bei BBOX CRS ir turi būti pateiktas formatu EPSG:XXXX.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&SRSNAME=EPSG:32620

FILTER

Šis parametras leidžia filtruoti atsaką naudojant Filtro kodavimo kalbą, kuri apibrėžta OGC Filtro kodavimo standarte. Pavyzdžiui:

http://localhost/qgisserver?
SERVICE=WFS&
REQUEST=GetFeature&
TYPENAME=places&
FILTER=<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName><Literal>Paris</Literal></PropertyIsEqualTo></Filter>

Kelių tipų atveju filtrus reikia apgaubti skliausteliais:

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>)

Filtruoti geoobjektus, kurie kerta poligoną:

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

Šis parametras leidžia nurodyti žemėlapio apimtį vienetais pagal dabartinį CRS. Koordinates reikia atskirti kableliais.

Parametras SRSNAME leidžia nurodyti apimties CRS. Jei jis nenurodytas, naudojamas sluoksnio CRS.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&BBOX=-11.84,42.53,8.46,50.98

Parametro FEATUREID negalima naudoti kartu su BBOX. Toks bandymas reikš klaidą:

<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

Šis parametras leidžia rikiuoti gaunamus geoobjektus pagal savybių reikšmes ir turi būti suformuotas taip savybėspavadinimas SORTRULE.

Tinkamos SORTRULE reikšmės mažėjančiam rikiavimui:

  • D

  • +D

  • DESC

  • +DESC

Tinkamos SORTRULE reikšmės didėjančiam rikiavimui:

  • A

  • +A

  • ASC

  • +ASC

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places
&PROPERTYNAME=name
&MAXFEATURES=3
&SORTBY=name DESC

Atitinkamas rezultatas:

<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

Šį parametrą galima naudoti, jei reikia nurodyti, kokią geoobjektų geometriją reikia grąžinti. Galimos reikšmės yra:

  • extent

  • centroid

  • none

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&GEOMETRYNAME=centroid
&...

STARTINDEX

Tai standartinis WFS 2.0 parametras, o WFS 1.0.0 atveju jis yra plėtinys.

Jį galima naudoti, norint praleisti kelis geoobjektus rezultate, ir, kartu su MAXFEATURES, leidžia gauti rezultatų puslapius.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&STARTINDEX=2
&...

EXP_FILTER

Šis parametras leidžia filtruoti atsaką naudojant QGIS išraiškas. Simbolis ; naudojamas atskirti filtrus, jei yra keli tipų pavadinimai.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&REQUEST=GetFeature
&TYPENAME=places,countries
&EXP_FILTER="name"='Paris';"name"='France'

3.3.3. DescribeFeatureType

Standartiniai DescribeFeatureType užklausos parametrai pagal OGC WFS 1.0.0 ir 1.1.0 specifikacijas:

Parametras

Privalomas

Aprašymas

SERVICE

Taip

Paslaugos pavadinimas (WFS)

REQUEST

Taip

Užklausos pavadinimas (DescribeFeatureType)

VERSION

Ne

Paslaugos versija

OUTPUTFORMAT

Ne

Atsako formatas

TYPENAME

Ne

Sluoksnių pavadinimai

Be standartinių, QGIS Serveris palaiko ir šiuos papildomus parametrus:

Parametras

Privalomas

Aprašymas

MAP

Taip

QGIS projekto failas

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=DescribeFeatureType
&TYPENAME=countries

Atsako išvestis:

<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. Transakcija

Ši užklausa leidžia keisti, trinti ar pridėti vieną ar kelis geoobjektus XML dokumento dėka. Veiksmą delete galima vykdyti tiek su POST užklausa, tiek ir su parametru OPERATION, o štai add ir update veiksmus galima vykdyti tik su POST užklausomis.

Standartiniai Transaction užklausos parametrai pagal OGC WFS 1.0.0 ir 1.1.0 specifikacijas:

Parametras

Privalomas

Aprašymas

SERVICE

Taip

Paslaugos pavadinimas (WFS)

REQUEST

Taip

Užklausos pavadinimas (Transaction)

VERSION

Ne

Paslaugos versija

FILTER

Ne

OGC filtro koduotė

BBOX

Ne

Žemėlapio apimtis

FEATUREID

Ne

Filtruoti geoobjektus pagal id

TYPENAME

Ne

Sluoksnių pavadinimai

Be standartinių, QGIS Serveris palaiko ir šiuos papildomus parametrus:

Parametras

Privalomas

Aprašymas

MAP

Taip

QGIS projekto failas

OPERATION

Ne

Nurodykite veiksmą

EXP_FILTER

Ne

Išraiškų filtras

OPERATION

Šis parametras leidžia trinti geoobjektą nenaudojant POST užklausos su dedikuotu XML dokumentu.

URL pavyzdys:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=Transaction
&OPERATION=DELETE
&FEATUREID=24

Pastaba

FEATUREID, BBOX ir FILTER parametrai vienas kitą pašalina ir prioritetizuojami tokia tvarka.

Pridėti geoobjektus

POST užklausos pavyzdys:

wget --post-file=add.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"

su add.xml dokumentu:

<?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>

Keisti geoobjektus

POST užklausos pavyzdys:

wget --post-file=update.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"

su update.xml dokumentu:

<?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>

Trinti geoobjektus

POST užklausos pavyzdys:

wget --post-file=delete.xml "http://localhost/qgisserver?SERVICE=WFS&REQUEST=Transaction"

su delete.xml dokumentu:

<?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>