wfs-api-doc--fix.md 26 KB

Spis treści:

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:

Examples

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
  <xsd:element name="ID" minOccurs="1" maxOccurs="1" nillable="true" type="xsd:integer" p5:id_zasob="13052" p5:label="Nr"/>
  <xsd:element name="A_STATUS" minOccurs="0" maxOccurs="1" nillable="true" type="p5_default_db:A_STATUSType" p5:id_zasob="21835" p5:label="Status" p5:allow_write="true" p5:allow_create="true"/>
  <xsd:element name="ADM_PASSWD" minOccurs="0" maxOccurs="1" nillable="true" type="xsd:string" p5:id_zasob="22266" p5:allow_write="true" p5:allow_create="true" p5:allow_read="false"/>

Multiple DescribeFeatureType

Struktury wielu tabel

POST na adres ?REQUEST=DescribeFeatureType&version=1.0.0&service=WFS

<DescribeFeatureType xmlns="http://www.opengis.net/wfs/2.0"
	xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	service="WFS"
	version="2.0.2"
	xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
	<TypeName>p5_default_db:Rozdzielcza_rurociag_wsg84</TypeName>
	<TypeName>p5_default_db:TEST_PERMS</TypeName>
</DescribeFeatureType>

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
  • 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"
    <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" ... >
      <gml:featureMember>
        <p5_default_db_TEST_PERMS:TEST_PERMS fid="TEST_PERMS.26">
          <p5_default_db_TEST_PERMS:ID>26</p5_default_db_TEST_PERMS:ID>
          <p5_default_db_TEST_PERMS:OPIS>testowy opis</p5_default_db_TEST_PERMS: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"
    <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" ... >
      <gml:featureMember>
        <p5_default_db_TEST_PERMS:TEST_PERMS fid="TEST_PERMS.26">
          <p5_default_db_TEST_PERMS:ID>26</p5_default_db_TEST_PERMS:ID>
          <p5_default_db_TEST_PERMS:OPIS>testowy opis</p5_default_db_TEST_PERMS:OPIS>

GetFeature Filtry

?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&Filter=<ogc: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=<ogc:Filter><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>A_STATUS</ogc:PropertyName><ogc:Literal>NORMAL</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>A_STATUS</ogc:PropertyName><ogc:Literal>WARNING</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:Filter>

GetFeature - Filtr ogc:PropertyIsEqualTo

?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:TEST_PERMS&SRSNAME=EPSG:3003&Filter=<ogc:Filter>...

Sql Filtr:

  `A_STATUS` in('NORMAL','WAITING')
	<ogc:Filter>
		<ogc:Or>
			<ogc:PropertyIsEqualTo>
				<ogc:PropertyName>A_STATUS</ogc:PropertyName>
				<ogc:Literal>NORMAL</ogc:Literal>
			</ogc:PropertyIsEqualTo>
			<ogc:PropertyIsEqualTo>
				<ogc:PropertyName>A_STATUS</ogc:PropertyName>
				<ogc:Literal>WAITING</ogc:Literal>
			</ogc:PropertyIsEqualTo>
		</ogc:Or>
	</ogc:Filter>

GetFeature - Filtr ogc:PropertyIsLike

Sql Filtr:

  `A_STATUS` like '%O_MA%' or `A_STATUS` like '%ARNING'
	<ogc:Filter>
		<ogc:Or>
			<ogc:PropertyIsLike wildCard="*" singleChar="#" escapeChar="!">
				<ogc:PropertyName>A_STATUS</ogc:PropertyName>
				<ogc:Literal>*O#MA*</ogc:Literal>
			</ogc:PropertyIsLike>
			<ogc:PropertyIsLike wildCard="*" singleChar="#" escapeChar="!">
				<ogc:PropertyName>A_STATUS</ogc:PropertyName>
				<ogc:Literal>*ARNING</ogc:Literal>
			</ogc:PropertyIsLike>
		</ogc:Or>
	</ogc:Filter>

GetFeature - Filtr ogc:PropertyIsNull

  ( ! (`t`.`the_geom` is null) or `t`.`ID` = '2' )
<ogc:Filter>
  <ogc:Or>
    <ogc:Not>
      <ogc:PropertyIsNull>
        <ogc:PropertyName>the_geom</ogc:PropertyName>
      </ogc:PropertyIsNull>
    </ogc:Not>
    <ogc:PropertyIsEqualTo>
      <ogc:PropertyName>ID</ogc:PropertyName>
      <ogc:Literal>2</ogc:Literal>
    </ogc:PropertyIsEqualTo>
  </ogc:Or>
</ogc:Filter>

GetFeature - Filtr ogc:Function

 (  ! (`t`.`the_geom` is null)  or GeometryType(`t`.`the_geom`) = 'POLYGON' )
<ogc:Filter>
  <ogc:Or>
    <ogc:Not>
      <ogc:PropertyIsNull>
        <ogc:PropertyName>the_geom</ogc:PropertyName>
      </ogc:PropertyIsNull>
    </ogc:Not>
    <ogc:PropertyIsEqualTo>
      <ogc:Function name="GeometryType">
        <ogc:PropertyName>the_geom</ogc:PropertyName>
      </ogc:Function>
      <ogc:Literal>POLYGON</ogc:Literal>
    </ogc:PropertyIsEqualTo>
  </ogc:Or>
</ogc:Filter>

GetFeature - Filtr ogc IsLessThan, IsGreaterThen

(
  ( `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

<GetFeature xmlns="http://www.opengis.net/wfs/2.0"
	xmlns:ogc="http://www.opengis.net/ogc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	service="WFS"
	version="2.0.2"
	xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
  <ogc:Filter>
    <ogc:And>
      <ogc:Or>
        <ogc:PropertyIsLessThan>
          <ogc:PropertyName>A_RECORD_CREATE_DATE</ogc:PropertyName>
          <ogc:Literal>2015-12-01</ogc:Literal>
        </ogc:PropertyIsLessThan>
        <ogc:PropertyIsLessThanOrEqualTo>
          <ogc:PropertyName>A_RECORD_CREATE_DATE</ogc:PropertyName>
          <ogc:Literal>2015-12-01</ogc:Literal>
        </ogc:PropertyIsLessThanOrEqualTo>
      </ogc:Or>
      <ogc:Or>
        <ogc:PropertyIsGreaterThan>
          <ogc:PropertyName>A_RECORD_UPDATE_DATE</ogc:PropertyName>
          <ogc:Literal>2016-06-01</ogc:Literal>
        </ogc:PropertyIsGreaterThan>
        <ogc:PropertyIsGreaterThanOrEqualTo>
          <ogc:PropertyName>A_RECORD_UPDATE_DATE</ogc:PropertyName>
          <ogc:Literal>2016-06-01</ogc:Literal>
        </ogc:PropertyIsGreaterThanOrEqualTo>
      </ogc:Or>
    </ogc:And>
  </ogc:Filter>
</GetFeature>

Error - Not implemented tag

	<ogc:Filter>
		<ogc:Or>
			<ogc:UnsupportedTag>
				<ogc:PropertyName>A_STATUS</ogc:PropertyName>
				<ogc:Literal>*O%23MA*</ogc:Literal>
			</ogc:UnsupportedTag>
		</ogc:Or>
	</ogc:Filter>

Result:

<?xml version="1.0" encoding="UTF-8"?>
<ServiceExceptionReport
    xmlns="http://www.opengis.net/ogc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd" version="1.2.0">
    <ServiceException code="NotImplementedOgcTag" locator="request">Not Implemented tag 'ogc:UnsupportedTag'</ServiceException>
</ServiceExceptionReport>

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

<GetFeature xmlns="http://www.opengis.net/wfs/2.0"
	xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
	xmlns:ogc="http://www.opengis.net/ogc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	service="WFS"
	version="2.0.2"
	xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
  <ogc:Filter>
    <ogc:Or>
      <ogc:PropertyIsLike wildCard="*" singleChar="%23" escapeChar="!">
        <ogc:PropertyName>A_STATUS</ogc:PropertyName>
        <ogc:Literal>*O%23MA*</ogc:Literal>
      </ogc:PropertyIsLike>
      <ogc:PropertyIsLike wildCard="*" singleChar="%23" escapeChar="!">
        <ogc:PropertyName>A_STATUS</ogc:PropertyName>
        <ogc:Literal>*ARNING</ogc:Literal>
      </ogc:PropertyIsLike>
    </ogc:Or>
  </ogc:Filter>
</GetFeature>

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 version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection
    xmlns:wfs="http://www.opengis.net/wfs/2.0"
    xmlns="http://www.opengis.net/wfs/2.0"
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" numberMatched="39" numberReturned="0"/>

Modyfikacja danych

Edycja danych

POST na adres ?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&

    <Transaction xmlns="http://www.opengis.net/wfs"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      version="1.0.0"
      xmlns:p5_default_db="https://biuro.biall-net.pl/"
      service="WFS"
      xmlns:gml="http://www.opengis.net/gml">
      <Update xmlns="http://www.opengis.net/wfs" typeName="p5_default_db:TEST_PERMS">
        <Property xmlns="http://www.opengis.net/wfs">
          <Name xmlns="http://www.opengis.net/wfs">OPIS</Name>
          <Value xmlns="http://www.opengis.net/wfs">testowy opis</Value>
        </Property>
        <Filter xmlns="http://www.opengis.net/ogc"><FeatureId xmlns="http://www.opengis.net/ogc" fid="TEST_PERMS.25"/></Filter>
      </Update>
    </Transaction>

Wprowadzanie danych

POST na adres ?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&

<Transaction
  xmlns="http://www.opengis.net/wfs"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.0.0"
  service="WFS"
  xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
  xmlns:gml="http://www.opengis.net/gml">
  <Insert xmlns="http://www.opengis.net/wfs">
    <TEST_PERMS xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">
      <OPIS xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">test</OPIS>
      <the_geom xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">
        <gml:Polygon srsName="EPSG:4326">
          <gml:outerBoundaryIs>
            <gml:LinearRing>
                <gml:coordinates cs="," ts=" ">18.44569262058692871,54.36867274376898251 18.44884659456100096,54.35193242036815064 18.48208462798003637,54.34368356535905065 18.44569262058692871,54.36867274376898251</gml:coordinates>
            </gml:LinearRing>
          </gml:outerBoundaryIs>
        </gml:Polygon>
      </the_geom>
    </TEST_PERMS>
  </Insert>
</Transaction>

Jeśli zostanie wysłana również wartość dla klucza (ID) to zostanie wykonana operacja Update <ID xmlns="https://biuro.biall-net.pl/wfs/default_db">24</ID>

<Transaction
  xmlns="http://www.opengis.net/wfs"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.0.0"
  service="WFS"
  xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
  xmlns:gml="http://www.opengis.net/gml">
  <Insert xmlns="http://www.opengis.net/wfs">
    <TEST_PERMS xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">
      <ID xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">24</ID>
      <OPIS xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">test</OPIS>
      <the_geom xmlns="https://biuro.biall-net.pl/wfs/default_db/TEST_PERMS">
        <gml:Polygon srsName="EPSG:4326">
          <gml:outerBoundaryIs>
            <gml:LinearRing>
                <gml:coordinates cs="," ts=" ">18.44569262058692871,54.36867274376898251 18.44884659456100096,54.35193242036815064 18.48208462798003637,54.34368356535905065 18.44569262058692871,54.36867274376898251</gml:coordinates>
            </gml:LinearRing>
          </gml:outerBoundaryIs>
        </gml:Polygon>
      </the_geom>
    </TEST_PERMS>
  </Insert>
</Transaction>

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:

<Transaction xmlns="http://www.opengis.net/wfs"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="1.0.0"
    service="WFS"
    xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
    xmlns:gml="http://www.opengis.net/gml">
    <Insert xmlns="http://www.opengis.net/wfs">
        <TEST_GEOM_LINESTRING xmlns="https://biuro.biall-net.pl/wfs/default_db">
            <OPIS xmlns="https://biuro.biall-net.pl/wfs/default_db">test1z3</OPIS>
            <the_geom xmlns="https://biuro.biall-net.pl/wfs/default_db">
                <gml:LineString srsName="EPSG:4326">
                    <gml:coordinates cs="," ts=" ">18.25240580856418049,54.48879768607960017 18.27014261382555915,54.46219247818753217</gml:coordinates>
                </gml:LineString>
            </the_geom>
        </TEST_GEOM_LINESTRING>
    </Insert>
    <Insert xmlns="http://www.opengis.net/wfs">
        <TEST_GEOM_LINESTRING xmlns="https://biuro.biall-net.pl/wfs/default_db">
            <OPIS xmlns="https://biuro.biall-net.pl/wfs/default_db">test2z3</OPIS>
            <the_geom xmlns="https://biuro.biall-net.pl/wfs/default_db">
                <gml:LineString srsName="EPSG:4326">
                    <gml:coordinates cs="," ts=" ">18.2629370366881254,54.43447871996662712 18.28621659359368223,54.40621068658131065</gml:coordinates>
                </gml:LineString>
            </the_geom>
        </TEST_GEOM_LINESTRING>
    </Insert>
    <Insert xmlns="http://www.opengis.net/wfs">
        <TEST_GEOM_LINESTRING xmlns="https://biuro.biall-net.pl/wfs/default_db">
            <OPIS xmlns="https://biuro.biall-net.pl/wfs/default_db">test3z3</OPIS>
            <the_geom xmlns="https://biuro.biall-net.pl/wfs/default_db">
                <gml:LineString srsName="EPSG:4326">
                    <gml:coordinates cs="," ts=" ">18.26404558701696246,54.39512518329294721 18.29841064721088273,54.39179953230643605</gml:coordinates>
                </gml:LineString>
            </the_geom>
        </TEST_GEOM_LINESTRING>
    </Insert>
</Transaction>

Wynik:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
		xmlns:wfs="http://www.opengis.net/wfs"
		xmlns:ogc="http://www.opengis.net/ogc"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wfs:InsertResult>
    <ogc:FeatureId fid="TEST_GEOM_LINESTRING.522" xmlns:ogc="http://www.opengis.net/ogc"/>
    <ogc:FeatureId fid="TEST_GEOM_LINESTRING.523" xmlns:ogc="http://www.opengis.net/ogc"/>
    <ogc:FeatureId fid="TEST_GEOM_LINESTRING.524" xmlns:ogc="http://www.opengis.net/ogc"/>
  </wfs:InsertResult>
  <wfs:TransactionResult>
    <wfs:Status>
      <wfs:SUCCESS/>
    </wfs:Status>
  </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

ID rekordów podane w tagu <wfs:InsertResult> 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

<Transaction xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" service="WFS" xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db" xsi:schemaLocation="https://biuro.biall-net.pl/wfs/default_db https://biuro.biall-net.pl/dev-pl/se-master/wfs-qgis.php/default_db/?SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=p5_default_db:TEST_GEOM_POINT&amp;SRSNAME=EPSG:4326" xmlns:gml="http://www.opengis.net/gml">
    <Delete xmlns="http://www.opengis.net/wfs" typeName="p5_default_db:TEST_GEOM_POINT">
        <Filter xmlns="http://www.opengis.net/ogc">
            <FeatureId xmlns="http://www.opengis.net/ogc" fid="TEST_GEOM_POINT.2" />
            <FeatureId xmlns="http://www.opengis.net/ogc" fid="TEST_GEOM_POINT.1" />
        </Filter>
    </Delete>
</Transaction>

Wynik operacji

    <?xml version="1.0" encoding="UTF-8"?>
    <wfs:WFS_TransactionResponse version="1.0.0"
        xmlns:wfs="http://www.opengis.net/wfs"
        xmlns:ogc="http://www.opengis.net/ogc"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <wfs:InsertResult>
            <ogc:FeatureId fid="TEST_PERMS.40" xmlns:ogc="http://www.opengis.net/ogc"/>
            <ogc:FeatureId fid="TEST_PERMS.41" xmlns:ogc="http://www.opengis.net/ogc"/>
            <!-- w takiej samej kolejności jak wysłano -->
        </wfs:InsertResult>
        <wfs:TransactionResult>
            <wfs:Status>
                <wfs:SUCCESS/>
            </wfs:Status>
        </wfs:TransactionResult>
    </wfs:WFS_TransactionResponse>

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=<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>id</ogc:PropertyName><ogc:Literal>35</ogc:Literal></ogc:Filter>

Wynik:

<?xml version="1.0" encoding="utf-8"?>
<wfs:FeatureCollection
    xmlns:wfs="http://www.opengis.net/wfs"
    xmlns="http://www.opengis.net/wfs"
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p5_objects="https://biuro.biall-net.pl/wfs/objects"
    xmlns:p5="https://biuro.biall-net.pl/wfs"
    xsi:schemaLocation="https://biuro.biall-net.pl/wfs/objects https://biuro.biall-net.pl/dev-pl/se-master/wfs-data.php/default_db/?SERVICE=WFS&amp;VERSION=1.0.0&amp;TYPENAME=p5_objects:File&amp;REQUEST=DescribeFeatureType">
    <gml:featureMember>
        <p5_objects:File fid="File.35">
            <p5_objects:id>35</p5_objects:id>
            <p5_objects:name>blank-test-wfs.gif</p5_objects:name>
            <p5_objects:size>64</p5_objects:size>
            <p5_objects:mimeType>image/gif</p5_objects:mimeType>
            <p5_objects:version>0</p5_objects:version>
            <p5_objects:content>R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==</p5_objects:content>
        </p5_objects:File>
    </gml:featureMember>
</wfs:FeatureCollection>

Pliki - upload

POST na: wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003

<Transaction
  xmlns="http://www.opengis.net/wfs"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.0.0"
  service="WFS"
  xmlns:p5_objects="https://biuro.biall-net.pl/wfs/objects"
  xmlns:gml="http://www.opengis.net/gml">
  <Insert xmlns="http://www.opengis.net/wfs">
    <File xmlns="https://biuro.biall-net.pl/wfs/objects">
      <name xmlns="https://biuro.biall-net.pl/wfs/objects">blank.gif</name>
      <content xmlns="https://biuro.biall-net.pl/wfs/objects">R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==</content>
    </File>
  </Insert>
</Transaction>

Wynik:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
    xmlns:wfs="http://www.opengis.net/wfs"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <wfs:InsertResult>
        <ogc:FeatureId fid="File.35" xmlns:ogc="http://www.opengis.net/ogc"/>
    </wfs:InsertResult>
    <wfs:TransactionResult>
        <wfs:Status>
            <wfs:SUCCESS/>
        </wfs:Status>
    </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

Pliki - wgranie pliku wraz z przypisaniem do obiektu

POST na: wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003

<Transaction
  xmlns="http://www.opengis.net/wfs"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.0.0"
  service="WFS"
  xmlns:p5_objects="https://biuro.biall-net.pl/wfs/objects"
  xmlns:gml="http://www.opengis.net/gml">
  <Insert xmlns="http://www.opengis.net/wfs">
    <TestPerms xmlns="https://biuro.biall-net.pl/wfs/objects">
      <OPIS xmlns="https://biuro.biall-net.pl/wfs/objects">test addFeature p5_objects:TestPerms with p5_objects:File</OPIS>
      <A_STATUS xmlns="https://biuro.biall-net.pl/wfs/objects">NORMAL</A_STATUS>
      <p5_objects:File>
        <p5_objects:name>blank-wfs.gif</p5_objects:name>
        <p5_objects:content>R0lGODlhAQABAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==</p5_objects:content>
      </p5_objects:File>
      <ADM_NAME xmlns="https://biuro.biall-net.pl/wfs/objects">Test Name</ADM_NAME>
    </TestPerms>
  </Insert>
</Transaction>

Wynik:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
  xmlns:wfs="http://www.opengis.net/wfs"
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wfs:InsertResult>
    <ogc:FeatureId fid="TestPerms.49" xmlns:ogc="http://www.opengis.net/ogc"/>
  </wfs:InsertResult>
  <wfs:TransactionResult>
    <wfs:Status>
      <wfs:SUCCESS/>
    </wfs:Status>
  </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>