Usługa WFS – jak to działa ?

Na rynku dostepnych jest wiele przegladarek i programów umożliwiających pobieranie danych za pomocą usługi WFS. Co jednak, jeśli używamy ArcGISa a nie mamy dodatku ArcGIS Data Interoperability, nie możemy zainstalować na komputerze innego programu ze względu na ograniczenia administracyjne lub ze względu na nieznane błędy nie możemy pobrać danych ?
Jak określić jakie dane są do pobrania, jakie są ich parametry, oraz jak wyglądają polecenia usługi WFS. O tym będzie dzisiejszy wpis.

Edycja 05-09-2014: Wpis zaktualizowałem do aktualnych odnośników do usługi serwującej PRG z geoportalu 2

Na początek jak zwykle odniesienie do specyfikacji WFS która dostępna jest tutaj.

1. Spróbujmy pobrać dane WFS jakie udostępnia GUGiK – wchodzimy na listę usług dostępną w wielu miejscach np. na geoforum: http://geoforum.pl/note.php?id=15
2. Wpisujemy w przeglądarkę adres usługi WFS z Państwowym Rejestrem Granic:

http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_PRG_WFS/MapServer/WFSServer?

3. Otrzymujemy odpowiedź od serwera o nastepującej treści:The request sent by the client was syntactically incorrect ().” – oznacza ona że wywołanie usługi zawiera błędy składniowe.
Należy do adresu dodać zmienną request – ponieważ chcemy otrzymać listę warstw i parametry możliwych do pobrania danych używamy polecenia getCapabilites  oraz zgodnie ze specyfikacją dodajemy zmienną odpowiedzialną za serwis WFS czyli:

http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_PRG_WFS/MapServer/WFSServer?request=getCapabilities&service=WFS

Efektem będzie strona z parametrami usługi.

Na stronie możemy zidentyfikować znaczniki określające poszczególnie parametry:

  • <ows:ServiceIdentification> – zawiera nazwę usługi, jej typ, oraz wersję
  • <ows:ServiceProvider> – zawiera dane kontaktowe do prowadzącego usługę
  • <ows:OperationsMetadata> – nazwy oraz typy operacji dopuszczalnych na usłudze: Operation name=”GetCapabilities„,Operation name=”DescribeFeatureType„,Operation name=”GetFeature
  • <wfs:FeatureTypeList> – zawiera szczegółowe informacje o typach obiektów które można pobrać za pomocą usługi – są to: województwa, powiaty, gminy oraz obsługiwanych dla nich układach współrzędnych. Widać że dane można pobrać w układach EPSG:4326,EPSG:2180 (pod linkami znajdują się opisy układów wraz z nazwami).
  • <ogc:Filter_Capabilities> – określa możliwe do zastosowania polecenia filtrujące dane.

Spróbujmy zastosować te informacje w celu pobrania obiektów za pomocą polecenia GetFeature – otwieramy nową zakładkę nie zamykając okienka getCapabilities. Uzupełniamy zmienne dodając kolejno : version=1.1.0 (określone w getCapabilities), service=WFS (specyfikacja WFS), typename=G2_PRG_WFS:WOJEWODZTWA (nazwa warstwy z getCapabilities) otrzymując link:

http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_PRG_WFS/MapServer/WFSServer?request=getFeature&version=1.1.0&service=WFS&typename=G2_PRG_WFS:Wojewodztwa

Wyświetlają się nam dane dla warstwy województwa w postaci GML, które możemy zapisać na dysku w pliku z rozszerzeniem *.gml.

Zawężenie wyników mozna uzyskać dodając filtry określone w getCapabilities np. zakres danych w WGS84 – bbox=15.00,52.00,22.00,54.00 – gdzie bbox to prostokąt o współrzędnych xmin,ymin,xmax,ymax.

http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_PRG_WFS/MapServer/WFSServer?request=getFeature&version=1.1.0&service=WFS&typename=G2_PRG_WFS:Wojewodztwa&bbox=15.00,52.00,22.00,54.00

Możemy również wybrać dane tylko z jednego województwa na przykład pomorskiego za pomoca  zapytania o atrybuty gdzie w kolumnie G2_PRG_WFS:WOJEWODZTW wartość będzie równa pomorskie dodając poniższy filter po znaku & do zapytania powyżej zamiast bbox.

Filter=<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>G2_PRG_WFS:WOJEWODZTW</ogc:PropertyName><ogc:Literal>pomorskie</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>

http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_PRG_WFS/MapServer/WFSServer?request=getFeature&version=1.1.0&service=WFS&typename=G2_PRG_WFS:Wojewodztwa&Filter=%3Cogc:Filter%3E%3Cogc:PropertyIsEqualTo%3E%3Cogc:PropertyName%3EG2_PRG_WFS:WOJEWODZTW%3C/ogc:PropertyName%3E%3Cogc:Literal%3Epomorskie%3C/ogc:Literal%3E%3C/ogc:PropertyIsEqualTo%3E%3C/ogc:Filter%3E

Zapisany plik GML możemy wczytać w Qgis jak każdy gml za pomocą polecenia dodaj warstwę. Istniejące czasem problemy z zamianą współrzędnych w pliku można rozwiązać za pomocą wtyczki zamieniającej współrzędne xy na yx o nazwie SWAP XY.

Jeśli chcesz dowiedzieć się jak użyć usługi WFS do pobrania danych z Geoportalu2 bez znajomości zapytań WFS przeczytasz o tym tutaj: http://geoinformatyka.com.pl/pobieranie-danych-za-pomoca-uslugi-pobierania-wfs-z-geoportalu-2-spatialite-gui/

Posted under: geoportal2, getCapabilities, GIS, gml, gugik, państwowy rejestr granic, Usługi sieciowe, WFS

Tagged as: , , , , , , , , , ,

Share this:

Comments are closed.