Важно

Prevod je zajednički napor :ref:`možete se pridružiti `. Ova stranica je trenutno prevedena na |napredak prevođenja|.

3.3. Web Feature Service (WFS)

WFS standardi 1.0.0 i 1.1.0 implementirani u QGIS Serveru pružaju HTTP interfejs za upite nad geografskim objektima iz QGIS projekta. Tipičan WFS zahtev definiše QGIS projekat koji se koristi i sloj nad kojim se vrši upit.

Dokument sa specifikacijama prema broju verzije servisa:

Standardni zahtevi koje pruža QGIS Server:

Zahtev

Opis

GetCapabilities

Vraća XML metapodatke sa informacijama o serveru

GetFeature

Vraća izbor objekata

DescribeFeatureType

Vraća opis tipova objekata i svojstava

Transaction

Omogućava umetanje, ažuriranje ili brisanje objekata

3.3.1. GetCapabilities

Standardni parametri za zahtev GetCapabilities prema OGC WFS 1.0.0 i 1.1.0 specifikacijama:

Parametar

Obavezno

Opis

SERVICE

Da

Naziv servisa (WFS)

REQUEST

Da

Naziv zahteva (GetCapabilities)

VERSION

Ne

Verzija servisa

Pored standardnih, QGIS Server podržava i sledeće dodatne parametre:

Parametar

Obavezno

Opis

MAP

Da

QGIS projektna datoteka

VERSION

Ovaj parametar omogućava zadavanje verzije servisa koja se koristi. Dostupne vrednosti za parametar VERSION su:

  • 1.0.0

  • 1.1.0

Ako u zahtevu nije naznačena verzija, podrazumevano se koristi 1.1.0.

Primer URL-a:

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

3.3.2. GetFeature

Standardni parametri za zahtev GetFeature prema OGC WFS 1.0.0 i 1.1.0 specifikacijama:

Parametar

Obavezno

Opis

SERVICE

Da

Naziv servisa (WFS)

REQUEST

Da

Naziv zahteva (GetFeature)

VERSION

Ne

Verzija servisa

TYPENAME

Ne

Nazivi slojeva

FEATUREID

Ne

Filtriraj objekte po ID-jevima

OUTPUTFORMAT

Ne

Izlazni format

RESULTTYPE

Ne

Tip rezultata

PROPERTYNAME

Ne

Nazivi svojstava koja se vraćaju

MAXFEATURES

Ne

Maksimalan broj objekata koji se vraćaju

SRSNAME

Ne

Koordinatni referentni sistem

FILTER

Ne

OGC Filter Encoding

BBOX

Ne

Obuhvat karte

SORTBY

Ne

Sortiraj rezultate

Pored standardnih, QGIS Server podržava i sledeće dodatne parametre:

Parametar

Obavezno

Opis

MAP

Da

QGIS projektna datoteka

STARTINDEX

Ne

Straničenje

GEOMETRYNAME

Ne

Tip geometrije koja se vraća

EXP_FILTER

Ne

Filtriranje izrazima

TYPENAME

Ovaj parametar omogućava zadavanje naziva slojeva i obavezan je ako FEATUREID nije postavljen.

Primer URL-a:

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

FEATUREID

Ovaj parametar omogućava zadavanje ID-ja određenog objekta i formira se kao typename.fid,typename.fid,....

Primer URL-a:

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

XML odgovor:

<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

Ovaj parametar se može koristiti za zadavanje formata odgovora. Ako je VERSION veća ili jednaka 1.1.0, podrazumevani format je GML3. U suprotnom se koristi GML2.

Dostupne vrednosti su:

  • 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

Primer URL-a:

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

GeoJSON odgovor:

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

Ovaj parametar se može koristiti za zadavanje vrste rezultata koji se vraća. Dostupne vrednosti su:

  • results: podrazumevano ponašanje

  • hits: vraća samo broj objekata

Primer URL-a:

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

PROPERTYNAME

Ovaj parametar se može koristiti za zadavanje određenog svojstva koje se vraća. Svojstvo mora biti mapirano sa TYPENAME ili FEATUREID:

Primer ispravnog URL-a:

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

Nasuprot tome, sledeći URL će vratiti izuzetak:

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

Ovaj parametar omogućava ograničavanje broja objekata koje zahtev vraća.

Primer URL-a:

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

Белешка

Ovaj parametar može biti koristan za poboljšanje performansi kada su vektorski slojevi u pozadini obimni.

SRSNAME

Ovaj parametar omogućava naznačavanje prostornog referentnog sistema izlaznog odgovora, kao i CRS-a za BBOX, i mora biti formiran kao EPSG:XXXX.

Primer URL-a:

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

FILTER

Ovaj parametar omogućava filtriranje odgovora pomoću jezika Filter Encoding definisanog OGC Filter Encoding standardom. Na primer:

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

U slučaju više naziva tipova, filteri moraju biti u zagradama:

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

Filtriraj objekte koji se seku sa poligonom:

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

Ovaj parametar omogućava zadavanje obuhvata karte u jedinicama prema tekućem CRS-u. Koordinate moraju biti razdvojene zarezom.

Parametar SRSNAME može zadati CRS obuhvata. Ako nije zadat, koristi se CRS sloja.

Primer URL-a:

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

Parametar FEATUREID ne može se koristiti sa BBOX. Svaki pokušaj rezultiraće izuzetkom:

<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

Ovaj parametar omogućava sortiranje rezultujućih objekata prema vrednostima svojstava i mora biti formiran kao propertyname SORTRULE.

Dostupne vrednosti za SORTRULE u slučaju opadajućeg sortiranja:

  • D

  • +D

  • DESC

  • +DESC

Dostupne vrednosti za SORTRULE u slučaju rastućeg sortiranja:

  • A

  • +A

  • ASC

  • +ASC

Primer URL-a:

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

Odgovarajući rezultat:

<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

Ovaj parametar se može koristiti za zadavanje vrste geometrije koja se vraća za objekte. Dostupne vrednosti su:

  • extent

  • centroid

  • none

Primer URL-a:

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

STARTINDEX

Ovaj parametar je standardan u WFS 2.0, ali je proširenje za WFS 1.0.0.

Zapravo, može se koristiti za preskakanje nekih objekata u skupu rezultata, a u kombinaciji sa MAXFEATURES omogućava straničenje kroz rezultate.

Primer URL-a:

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

EXP_FILTER

Ovaj parametar omogućava filtriranje odgovora pomoću QGIS izraza. Znak ; se koristi za razdvajanje filtera u slučaju više naziva tipova.

Primer URL-a:

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

3.3.3. DescribeFeatureType

Standardni parametri za zahtev DescribeFeatureType prema OGC WFS 1.0.0 i 1.1.0 specifikacijama:

Parametar

Obavezno

Opis

SERVICE

Da

Naziv servisa (WFS)

REQUEST

Da

Naziv zahteva (DescribeFeatureType)

VERSION

Ne

Verzija servisa

OUTPUTFORMAT

Ne

Format odgovora

TYPENAME

Ne

Nazivi slojeva

Pored standardnih, QGIS Server podržava i sledeće dodatne parametre:

Parametar

Obavezno

Opis

MAP

Da

QGIS projektna datoteka

Primer URL-a:

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

Izlazni odgovor:

<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

Ovaj zahtev omogućava ažuriranje, brisanje ili dodavanje jednog ili više objekata pomoću XML dokumenta. Akcija delete može se izvršiti POST zahtevom, kao i pomoću parametra OPERATION, dok se operacije add i update mogu izvršiti samo POST zahtevom.

Standardni parametri za zahtev Transaction prema OGC WFS 1.0.0 i 1.1.0 specifikacijama:

Parametar

Obavezno

Opis

SERVICE

Da

Naziv servisa (WFS)

REQUEST

Da

Naziv zahteva (Transaction)

VERSION

Ne

Verzija servisa

FILTER

Ne

OGC Filter Encoding

BBOX

Ne

Obuhvat karte

FEATUREID

Ne

Filtriraj objekte po ID-jevima

TYPENAME

Ne

Nazivi slojeva

Pored standardnih, QGIS Server podržava i sledeće dodatne parametre:

Parametar

Obavezno

Opis

MAP

Da

QGIS projektna datoteka

OPERATION

Ne

Zadajte operaciju

EXP_FILTER

Ne

Filtriranje izrazima

OPERATION

Ovaj parametar omogućava brisanje objekta bez korišćenja POST zahteva sa posebnim XML dokumentom.

Primer URL-a:

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

Белешка

Parametri FEATUREID, BBOX i FILTER međusobno se isključuju i imaju prioritet ovim redosledom.

Dodavanje objekata

Primer POST zahteva:

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

sa dokumentom 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>

Ažuriranje objekata

Primer POST zahteva:

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

sa dokumentom 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>

Brisanje objekata

Primer POST zahteva:

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

sa dokumentom 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>