Svarbu
Vertimas yra bendruomenės pastangos, prie kurių jūs galite prisijungti. Šis puslapis šiuo metu išverstas 100.00%.
3.6. OGC API Features (Geoobjektai)
OGC API Features (OAPIF) yra pirmas naujos OGC protokolų kartos įgyvendinimas. Jį aprašo dokumentas OGC API - Geoobjektai - 1 dalis: Pagrindas.
Tipiniuose diegimuose šį API galima pasiekti adresu http://localhost/qgisserver/wfs3
.
Čia yra greitas neformalus svarbiausių skirtumų tarp gerai žinomo WFS protokolo ir OAPIF apibendrinimas:
OAPIF remiasi REST API
OAPIF turi atitikti OPENAPI specifikacijas
OAPIF palaiko kelis išvesties formatus, bet nei vieno iš jų nediktuoja (QGIS OAPIF šiuo metu teikia tik GeoJSON ir HTML) ir naudoja turinio derybas, kad nustatytų, kurį formatą pateikti klientui
Pirmos klasės OAPIF piliečiai yra JSON ir HTML
OAPIF yra save-aprašantis (per prieigos tašką
/api
)OAPIF yra pilnai naviguojamas (per nuorodas) ir naršomas
Svarbu
Nors QGIS OGC API Geoobjektų įgyvendinimas leidžia naudoti MAP
parametrą nurodant projekto failą, jokie papildomi parametrai neleidžiami pagal OPENAPI specifikaciją. Dėl šios priežasties stipriai rekomenduojama, kad MAP
nebūtų išleidžiamas į URL ir projekto failas nurodomas aplinkoje kitomis priemonėmis (pvz. nustatant aplinkoje QGIS_PROJECT_FILE
žiniatinklio serverio perrašymo taisyklių pagalba).
Pastaba
API prieigos taškas teikia visų jūsų paslaugos palaikomų parametrų ir išvesties formatų pilną dokumentaciją. Žemiau pateikiamose pastraipose bus aprašome tik patys svarbiausi.
3.6.1. Resursų reprezentacija
QGIS Serverio OGC API Features įgyvendinimas šiuo metu palaiko šiuos resursų reprezentacijos (pateikties) formatus:
HTML
JSON
Realiai pateikiamas formatas priklauso nuo turinio derybų, bet galima paprašyti konkretaus formato prieigos taškui perduodant formato specifikaciją.
Palaikomi formatų plėtiniai yra:
.json
.html
Papildomi formatų specifikavimo pseudonimai gali būti apibrėžti konkretiems prieigos taškams:
.openapi
:.json
pseudonimas palaikomas API prieigos taške.geojson
:.json
pseudonimas palaikomas Features ir Feature prieigos taškuose
3.6.2. Prieigos taškai
API teikia sąrašą prieigos taškų, kuriuos klientai gali gauti. Sistema sukurta tokiu būdu, kad kiekvienas atsakas teikia aibę nuorodų, leidžiančių naviguoti per visus teikiamus resursus.
QGIS įgyvendinimo teikiami prieigos taškai yra:
Pavadinimas |
Kelias |
Aprašymas |
---|---|---|
Pradinis puslapis |
|
Bendra informacija apie paslaugą, kurioje teikiamos nuorodos į visus prieigos taškus |
Atitikimas |
|
Informacija apie paslaugos atitikimą standartams |
API |
|
Pilnas paslaugos teikiamų prieigos taškų aprašymas ir grąžinamų duomenų struktūra |
Rinkiniai |
|
Sąrašas visų paslaugos teikiamų rinkinių (pvz. „vektorinių sluoksnių“) |
Rinkinys |
|
Informacija apie rinkinį (pavadinimas, metaduomenys, apimtis ir pan.) |
Savybės |
|
Sąrašas rinkinio teikiamų geoobjektų |
Geoobjektas |
|
Informacija apie vieną geoobjektą |
Kaip ir WFS-T (transakcinio žiniatinklio geoobjektų paslaugos) atveju, galima pridėti, pakeisti ir trinti geoobjektus (CRUD). Atitinkamos užklausos aprašomos „/api
“.
Pradinis puslapis
Pagrindinis prieigos taškas yra Pradinis puslapis. Iš šio puslapio galima patekti į visus prieinamus paslaugos prieigos taškus. Pradinis puslapis privalo teikti nuorodas į:
API apibrėžimą (kelias
/api
nuorodosservice-desc
irservice-doc
),atitikimo deklaracija (kelias
/conformance
, nuorodaconformance
), irrinkiniai (kelias
/collections
, nuorodadata
).

Fig. 3.25 Serverio OAPIF pradinis puslapis
API apibrėžimas
API apibrėžimas yra su OPENAPI suderinamas API apibrėžimas, kurį teikia paslauga. Jo HTML reprezentacijoje tai naršomas puslapis, kuriame yra visi prieigos taškai, kur jų atsakymų formatai aiškiai išvardinti ir dokumentuoti. Šio prieigos taško kelias yra /api
.
API apibrėžimas teikia išsamią ir autoritetingą paslaugos dokumentaciją, įskaitant visus palaikomus parametrus ir grąžinamus formatus.
Pastaba
Šis prieigos taškas yra analogiškas WFS GetCapabilities
Rinkinių sąrašas
Rinkinių prieigos taškai teikia sąrašą visų paslaugoje prieinamų rinkinių. Kadangi paslauga „teikia“ vieną QGIS projektą, rinkiniai yra dabartinio projekto vektoriniai sluoksniai (jei jie publikuojami kaip WFS projekto savybėse). Šio prieigos taško kelias yra /collections/
.

Fig. 3.26 Serverio OAPIF rinkinių sąrašo puslapis
Rinkinio detalės
Nors rinkinių prieigos taškas ir neteikia detalios informacijos apie kiekvieną rinkinį, tokią informaciją galite rasti prieigos taškuose /collections/{rinkinioId}
. Tipinėje informacijoje bus apimtis, aprašymas, CRS ir kiti metaduomenys.
HTML pateiktyje taipogi yra naršomas žemėlapis su galimais geoobjektais.

Fig. 3.27 Serverio OAPIF rinkinio detalių puslapis
Geoobjektų sąrašas
Šis prieigos taškas pagal rinkinio ID teikia visų rinkinio geoobjektų sąrašą. Šio prieigos taško kelias yra /collections/{rinkinioId}/items
.
HTML pateiktyje taipogi yra naršomas žemėlapis su galimais geoobjektais.
Pastaba
Šis prieigos taškas yra analogiškas WFS 1 ir WFS 2 metodui GetFeature
.

Fig. 3.28 Serverio OAPIF geoobjektų sąrašo puslapis
Geoobjekto detalės
Šis prieigos taškas teikia visą turimą informaciją apie vieną geoobjektą, įskaitant geoobjekto atributus ir jo geometriją. Šios prieigos taško adresas yra /collections/{rinkinioId}/items/{elementoId}
.
HTML pateiktyje taipogi yra naršomas žemėlapis su geoobjekto geometrija.

Fig. 3.29 Serverio OAPIF geoobjekto detalių puslapis
3.6.3. Puslapiavimas
Ilgo geoobjektų sąrašo puslapiavimas OGC API įgyvendintas per nuorodas kitas
ir ankstesnis
, QGIS serveris sukuria šias nuorodas pridedant limit
ir offset
kaip užklausos teksto parametrus.
URL pavyzdys:
http://localhost/qgisserver/wfs3/collection_one/items.json?offset=10&limit=10
Pastaba
Maksimalią leidžiamą limit
reikšmę galima konfigūruoti naudojant serverio konfigūracijos nustatymą QGIS_SERVER_API_WFS3_MAX_LIMIT
(žr.: Environment variables).
3.6.4. Geoobjektų filtravimas
Rinkinyje esančius geoobjektus galima filtruoti ir jų ieškoti nurodant vieną ar daugiau filtrų.
Datos ir laiko filtro
Rinkinius su datos ir/ar datos ir laiko atributais galima filtruoti nurodant datetime
argumentą užklausos eilutėje. Pagal nutylėjimą pirmas datos/datoslaiko laukas naudojamas filtravimui. Šią elgseną galima konfigūruoti nustatant „Datos“ ar „Laiko“ dimensiją sluoksnio savybių dialogo skiltyje .
Datos ir laiko filtravimo sintaksė pilnai aprašyta skyriuje API apibrėžimas ir taipogi be atskirų reikšmių palaiko diapazonus (įskaitant pradžios ir pabaigos reikšmes).
URL pavyzdžiai:
Grąžina tik geoobjektus, kurių datos dimensija atitinka 2019-01-01
http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01
Grąžina tik geoobjektus, kurių datos ir laiko dimensija atitinka 2019-01-01T01:01:01
http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01T01:01:01
Grąžina tik geoobjektus, kurių datos ir laiko dimensija patenka į diapazoną 2019-01-01T01:01:01
- 2019-01-01T12:00:00
http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01T01:01:01/2019-01-01T12:00:00
Apimties stačiakampio filtras
Apimties stačiakampio erdvinį filtrą galima nurodyti su parametru bbox
:
Kableliais atskirtų elementų rikiuotė yra:
Apatinis kairys kampas, WGS 84 ilguma
Apatinis dešinys kampas, WGS 84 platuma
Viršutinis dešinys kampas, WGS 84 ilguma
Viršutinis dešinys kampas, WGS 84 platuma
Pastaba
OGC specifikacija taipogi leidžia 6 elementų apimties stačiakampio nurodymą, kur trečias ir šeštas elementai yra Z komponentai, šito QGIS serveris dar nepalaiko.
URL pavyzdys:
http://localhost/qgisserver/wfs3/collection_one/items.json?bbox=-180,-90,180,90
Jei apimties stačiakampio CRS yra ne WGS 84, galima nurodyti kitą CRS naudojant neprivalomą parametrą bbox-crs
. CRS formato identifikatorius turi būti OGC URI formato:
URL pavyzdys:
http://localhost/qgisserver/wfs3/collection_one/items.json?bbox=913191,5606014,913234,5606029&bbox-crs=http://www.opengis.net/def/crs/EPSG/9.6.2/3857
Atributų filtrai
Atributų filtrus galima kombinuoti su apimties stačiakampio filtru ir jie turi bendrą formą: <attribute name>=<attribute value>
. Kelis filtrus galima jungti naudojant operatorių AND
.
URL pavyzdys:
filtruoja visus geoobjektus, kurių atributo name
reikšmė yra „my value“
http://localhost/qgisserver/wfs3/collection_one/items.json?attribute_one=my%20value
Palaikomi ir daliniai atitikimai, naudojant operatorių *
(„žvaigždutė“):
URL pavyzdys:
filtruoja visus geoobjektus, kur atributo name
reikšmė baigiasi „value“
http://localhost/qgisserver/wfs3/collection_one/items.json?attribute_one=*value
3.6.5. Geoobjektų rikiavimas
Galima rikiuoti rezultato aibę pagal lauko reikšmę naudojant užklausos parametrą sortby
.
Rezultatai pagal nutylėjimą rikiuojami didėjančia tvarka. Norėdami rikiuoti rezultatus mažėjančiai, galite nurodyti loginę žymą (sortdesc
):
http://localhost/qgisserver/wfs3/collection_one/items.json?sortby=name&sortdesc=1
3.6.6. Atributų parinkimas
Geoobjektų atributus, kuriuos grąžina Geoobjektų sąrašas kvietimas, galima riboti pridedant kableliais atskirtų atributų sąrašą neprivalomame užklausos teksto argumente properties
.
URL pavyzdys:
grąžina tik atributą name
http://localhost/qgisserver/wfs3/collection_one/items.json?properties=name
3.6.7. Tinkinti HTML puslapius
HTML reprezentacija kuriant atsaką naudoja aibę HTML šablonų. Šablonus nagrinėja šablonų variklis, vardu inja. Šablonus galima tinkinti juos permušant (žr.: Šablono perrašymai). Šablonas turi prieigą prie tų pačių duomenų, kuriuos mato ir JSON
reprezentacija bei prie kelių papildomų funkcijų, kurios prieinamos šablonui:
Savos šablonų funkcijos
path_append( path )
: prideda prie dabartinio url aplanko keliąpath_chomp( n )
: išima iš dabartinio url kelio nurodytą skaičių „n“ aplankų komponentųjson_dump( )
: spausdina JSON duomenis, perduotus šablonuistatic( path )
: grąžina pilną URL iki nurodyto statinio kelio. Pavyzdžiui: „static( „/style/black.css“ )“ su šakniniu keliu „http://localhost/qgisserver/wfs3“ grąžins „http://localhost/qgisserver/wfs3/static/style/black.css“.links_filter( links, key, value )
: Grąžina filtruotas nuorodas iš nuorodų sąrašocontent_type_name( content_type )
: Grąžina trumpą turinio tipo pavadinimą, pavyzdžiui „text/html“ grąžins „HTML“nl2br( text )
: Grąžina įvesties tekstą su visais naujos eilutės simboliais pakeistais į žymas „<br>“starts_with( string, prefix )
: grąžina true, jei tekstas prasideda nurodytu teksto priešdėliu, priešingu atveju grąžina false
Šablono perrašymai
Šablonai ir statiniai failai saugomi QGIS serverio numatyto API resursų aplanko poaplankiuose (/usr/share/qgis/resources/server/api/
Linux sistemose), bazinį aplanką galima keisti nurodant aplinkos kintamąjį QGIS_SERVER_API_RESOURCES_DIRECTORY
.
Tipinė Linux sistema turės tokį aplankų medį:
/usr/share/qgis/resources/server/api/
└── ogc
├── schema.json
├── static
│ ├── jsonFormatter.min.css
│ ├── jsonFormatter.min.js
│ └── style.css
└── templates
└── wfs3
├── describeCollection.html
├── describeCollections.html
├── footer.html
├── getApiDescription.html
├── getFeature.html
├── getFeatures.html
├── getLandingPage.html
├── getRequirementClasses.html
├── header.html
├── leaflet_map.html
└── links.html
Norėdami permušti šablonus, jūs galite kopijuoti visą medį į kitą vietą ir į ją nukreipti QGIS_SERVER_API_RESOURCES_DIRECTORY
.