# Spis treści: * [Adresy i wersje API] (#adresy-i-wersje-api) * [Struktura danych] (#struktura-danych) * [Lista dostępnych tabel i funkcji - GetCapabilities] (#getcapabilities) * [Struktura tabeli - DescribeFeatureType] (#describefeaturetype) * [Struktura tabeli z dodatkowymi atrybutami - DescribeFeatureTypeAdvanced] (#describefeaturetypeadvanced) * [Struktury wielu tabel] (#multiple-describefeaturetype) * [Pobieranie danych] (#pobieranie-danych) * [GetFeature] (#getfeature) * [Filtry] (#getfeature-filtry) * [Filtr ogc:PropertyIsEqualTo] (#getfeature-filtr-ogcpropertyisequalto) * [Filtr ogc:PropertyIsLike] (#getfeature-filtr-ogcpropertyislike) * [Filtr ogc:PropertyIsNull] (#getfeature-filtr-ogcpropertyisnull) * [Filtr ogc:Function] (#getfeature-filtr-ogcfunction) * [Filtr ogc: IsLessThan, IsGreaterThen] (#getfeature-filtr-ogc-islessthan-isgreaterthen) * [Error - Not implemented tag] (#error-not-implemented-tag) * [Request-URI Too Long - ogc:Filter z POST] (#request-uri-too-long-ogcfilter-z-post) * [GetFeatureAdvanced] (#getfeatureadvanced) * [GetFeature - Hits] (#getfeature-hits) * [Modyfikacja danych] (#modyfikacja-danych) * [Edycja danych] (#edycja-danych) * [Wprowadzanie danych] (#wprowadzanie-danych) * [Modyfikacja wielu danych] (#modyfikacja-wielu-danych) * [Usuwanie danych] (#usuwanie-danych) * [Wynik operacji] (#wynik-operacji) * [Pliki] (#pliki) * [Pliki - download] (#pliki-download) * [Pliki - upload] (#pliki-upload) * [Pliki - wgranie pliku wraz z przypisaniem do obiektu] (#pliki-wgranie-pliku-wraz-z-przypisaniem-do-obiektu) # Adresy i wersje API - Wersja Data (ze wszystkimi danymi): `/wfs-data.php/default_db/` - Wersja QGIS (tyko rekordy z geom): `/wfs-qgis.php/default_db/` - Poprzedni link (wersja QGIS): `/wfs.php/xml/wfs/default_db/` - Uprawnienia wg procesu: - wersja Data - proces 5040: `/wfs-data.php/filtr_proces_5040/default_db/` - wersja QGIS - proces 5040: `/wfs-qgis.php/filtr_proces_5040/default_db/` API BIALL-NET: - Wersja ze wszystkimi danymi: https://biuro.biall-net.pl/SE/version-git/wfs-data.php/default_db/ - Wersja QGIS (tyko rekordy z geom): https://biuro.biall-net.pl/SE/version-git/wfs-qgis.php/default_db/ - Poprzedni link (wersja QGIS): https://biuro.biall-net.pl/SE/version-git/wfs.php/xml/wfs/default_db/ ### Examples - [Postman Collection](https://biuro.biall-net.pl/gitlab/plabudda/procesy5-wfs-api-doc/raw/master/Postman.wfs-server-data.json) # Struktura danych ## GetCapabilities: ``` ?SERVICE=WFS&REQUEST=GetCapabilities&VERSION=1.0.0 ``` ## DescribeFeatureType Struktura danych dla tabeli TEST_PERMS (namespace: "p5_default_db:TEST_PERMS") ``` ?SERVICE=WFS&VERSION=1.0.0&TYPENAME=p5_default_db:TEST_PERMS&REQUEST=DescribeFeatureType ``` ## DescribeFeatureTypeAdvanced Polskie nazwy kolumn oraz informacje o uprawnieniach: https://biuro.biall-net.pl/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&TYPENAME=p5_default_db:TEST_PERMS&REQUEST=DescribeFeatureTypeAdvanced - każde pole dostaje id zasobu w @p5:id_zasobu - ładniejsza nazwa w @p5:label (z pola `DESC_PL` jeśli jest określona) - opis w @p5:description (z pola `OPIS` jeśli jest określone) - enumy rozdzielone do osobnych nazwanych typów - @atrybut p5:allow_create="true" - możliwość tworzenia nowego rekordu z tą kolumną - @atrybut p5:allow_write="true" - możliwość edycji tej kolumny - @atrybut p5:allow_read="false" - brak uprawnień do odczytania zawartości tej kolumny ```xml ``` ## Multiple DescribeFeatureType Struktury wielu tabel POST na adres `?REQUEST=DescribeFeatureType&version=1.0.0&service=WFS` ```xml p5_default_db:Rozdzielcza_rurociag_wsg84 p5_default_db:TEST_PERMS ``` # Pobieranie danych ## GetFeature Parametry url: - **Limit**: `count` (WFS 2.0.0) lub `maxFeatures` (for earlier WFS versions) - **Offset**: `startIndex` - **Sort**: `sortBy` np. sortBy=ID+D,columnName+A - **Kolumny**: `propertyName` np. propertyName=ID,test_date,A_STATUS - **Filtry** `ogc:Filter`: parametr `Filter`, więcej na [API-WFS-ogc-Filter](https://biuro.biall-net.pl/gitlab/plabudda/procesy5-wfs-api-doc/wikis/API-WFS-ogc-Filter) - **featureID**: `featureID`: np. featureID=TEST_PERMS.12 ## Przykład - tylko 5 rekordów (MAXFEATURES=5): ``` ?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&MAXFEATURES=5 ``` - parametr MAXFEATURES - limit - ID rekordu w atrybucie fid="TEST_PERMS.26" ```xml 26 testowy opis ``` ## Pobieranie danych (tylko zawierające dane geometryczne na potrzeby QGIS) Przykład - tylko 5 rekordów (MAXFEATURES=5): ``` ?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&MAXFEATURES=5 ``` - parametr MAXFEATURES - limit - ID rekordu w atrybucie fid="TEST_PERMS.26" ```xml 26 testowy opis ``` ## GetFeature Filtry ``` ?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&Filter=... ``` https://biuro.biall-net.pl/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&Filter=%3Cogc:Filter%3E%3Cogc:Or%3E%3Cogc:PropertyIsEqualTo%3E%3Cogc:PropertyName%3EA_STATUS%3C/ogc:PropertyName%3E%3Cogc:Literal%3ENORMAL%3C/ogc:Literal%3E%3C/ogc:PropertyIsEqualTo%3E%3Cogc:PropertyIsEqualTo%3E%3Cogc:PropertyName%3EA_STATUS%3C/ogc:PropertyName%3E%3Cogc:Literal%3EWARNING%3C/ogc:Literal%3E%3C/ogc:PropertyIsEqualTo%3E%3C/ogc:Or%3E%3C/ogc:Filter%3E ``` https://biuro.biall-net.pl/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS &VERSION=1.0.0 &REQUEST=GetFeature &TYPENAME=p5_default_db:TEST_PERMS &SRSNAME=EPSG:3003 &Filter=A_STATUSNORMALA_STATUSWARNING ``` ### GetFeature - Filtr ogc:PropertyIsEqualTo ``` ?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&Filter=... ``` Sql Filtr: ```sql `A_STATUS` in('NORMAL','WAITING') ``` ```xml A_STATUS NORMAL A_STATUS WAITING ``` ### GetFeature - Filtr ogc:PropertyIsLike Sql Filtr: ```sql `A_STATUS` like '%O_MA%' or `A_STATUS` like '%ARNING' ``` ```xml A_STATUS *O#MA* A_STATUS *ARNING ``` ### GetFeature - Filtr ogc:PropertyIsNull ```sql ( ! (`t`.`the_geom` is null) or `t`.`ID` = '2' ) ``` ```xml the_geom ID 2 ``` ### GetFeature - Filtr ogc:Function ```sql ( ! (`t`.`the_geom` is null) or GeometryType(`t`.`the_geom`) = 'POLYGON' ) ``` ```xml the_geom the_geom POLYGON ``` ### GetFeature - Filtr ogc IsLessThan, IsGreaterThen ```sql ( ( `t`.`A_RECORD_CREATE_DATE` < '2015-12-01' or `t`.`A_RECORD_CREATE_DATE` <= '2015-12-01' ) and ( `t`.`A_RECORD_UPDATE_DATE` > '2016-06-01' or `t`.`A_RECORD_UPDATE_DATE` >= '2016-06-01' ) ) ``` POST na `wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003` ```xml A_RECORD_CREATE_DATE 2015-12-01 A_RECORD_CREATE_DATE 2015-12-01 A_RECORD_UPDATE_DATE 2016-06-01 A_RECORD_UPDATE_DATE 2016-06-01 ``` ### Error - Not implemented tag ```xml A_STATUS *O%23MA* ``` Result: ```xml Not Implemented tag 'ogc:UnsupportedTag' ``` ### Request-URI Too Long - ogc:Filter z POST Odczytuje ogc:Filter z Request. Przydatne w przypadku długich filtrów nie mieszczących się w limicie długości URI. Przykład - POST na: `/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003` ```xml A_STATUS *O%23MA* A_STATUS *ARNING ``` ## GetFeatureAdvanced Dodatkowe atrybuty z informają o uprawnieniach: - @atrybut p5:allow_create="true" - możliwość tworzenia nowego rekordu z tą kolumną - @atrybut p5:allow_write="true" - możliwość edycji tej kolumny - @atrybut p5:allow_read="false" - brak uprawnień do odczytania zawartości tej kolumny ## GetFeature - Hits Parametr url dla GetFeature i GetFeatureAdvanced: - **resultType=hits**: zwraca liczbę pasujących rekordów do zapytania Przykład: ``` /wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003 &REQUEST=GetFeatureAdvanced &TYPENAME=p5_default_db:TEST_PERMS &resultType=hits ``` Wynik: ```xml ``` # Modyfikacja danych ## Edycja danych POST na adres `?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&` ```xml OPIS testowy opis ``` ## Wprowadzanie danych POST na adres `?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&` ```xml test 18.44569262058692871,54.36867274376898251 18.44884659456100096,54.35193242036815064 18.48208462798003637,54.34368356535905065 18.44569262058692871,54.36867274376898251 ``` Jeśli zostanie wysłana również wartość dla klucza (ID) to zostanie wykonana operacja **Update** `24` ```xml 24 test 18.44569262058692871,54.36867274376898251 18.44884659456100096,54.35193242036815064 18.48208462798003637,54.34368356535905065 18.44569262058692871,54.36867274376898251 ``` ## Modyfikacja wielu danych POST na adres `?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&` Przykład - wprowadzenie trzech rekrodów do tabeli TEST_GEOM_LINESTRING: ```xml test1z3 18.25240580856418049,54.48879768607960017 18.27014261382555915,54.46219247818753217 test2z3 18.2629370366881254,54.43447871996662712 18.28621659359368223,54.40621068658131065 test3z3 18.26404558701696246,54.39512518329294721 18.29841064721088273,54.39179953230643605 ``` Wynik: ``` ``` ID rekordów podane w tagu `` w takiej samej kolejności jak w treści zapytania. Czyli rekord 522 ma OPIS = test1z3, 523 ma OPIS = test2z3, 524 ma OPIS = test3z3 ## Usuwanie danych POST na adres `?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&` Usuwanie rekordów 1 i 2 z tabeli TEST_GEOM_POINT ```xml ``` ## Wynik operacji ```xml ``` # Pliki typeName: `p5_objects:File` Obecnie działa: - DescribeFeatureTypeAdvanced - file content is `xsd:base64Binary` - GetFeatureAdvanced - file content returned as base64 - AddFeature ## Pliki - download ``` https://biuro.biall-net.pl/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS &VERSION=1.0.0 &REQUEST=GetFeatureAdvanced &TYPENAME=p5_objects:File &SRSNAME=EPSG:3003 &Filter=id35 ``` Wynik: ```xml 35 blank-test-wfs.gif 64 image/gif 0 R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== ``` ## Pliki - upload POST na: `wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003` ```xml blank.gif R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== ``` Wynik: ```xml ``` ## Pliki - wgranie pliku wraz z przypisaniem do obiektu POST na: `wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003` ```xml test addFeature p5_objects:TestPerms with p5_objects:File NORMAL blank-wfs.gif R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== Test Name ``` Wynik: ```xml ```