Using WFS in ArcGIS Pro

In most situations, using a WFS is without problems and the section Connecting to a WFS server is all you need, however, ArcGIS pro, by default, only fetches 3000 features pr. data layer. If you run into this restriction read the section on Handling situations where you do not receive all the data you need

Connection to a WFS server

Once you gave obtained a WFS connection string as, for instance, “https://geoserver.plandata.dk/geoserver/wfs?servicename=wfs&request=getcapabilities&service=wfs”, you can enter this string as a new connection. From the Insert tab (red) select the Connections dropdown (green), then “server” (Blue) and finally “New WFS Server” (Pink)

In the connection property dialog box enter the URL of the wfs server

The new WFS server connection will appear in the catalogue under servers, and if you expand it you can see all the layers served by the server.

The individual layers can now be added to a map by right-clicking that layer and choosing “Add to New ->”Map”

Note that ArcGIS Pro implements a default MAXFEATURES  size of 3000 e.g. ArcGIS Pro only requests the first 3000 features of the data set. It is not always easy to see it this max has been reached. One Way is

This number can be increased on some servers (other servers set their own max), although this will increase the loading time.

The easiest way to see if the max has been reached is to look at the attribute table of the layer and the record count

What to do if you hit the maximum number of features

There are generally speaking three possible solutions to handling the situation where you hit the MAXFEATURES  size.

  • Increase the MAXFEATURES  size.
  • Setting a Boundary box on your WFS query
  • Setting a Query on the data.

Increase the MAXFEATURES  size.

If this is the same as the MAXFEATURES  size you have probably hit the max. You can increase the MAXFEATURES  from the WFS tab of the layer properties to say 10000 (Red arrow)

However, I generally recommend filtering the data on the server side rather than increasing the max features. There are two comment ways of doing this, either setting BBOX (Boundary box) or as SQL where values (CQL_filter) in the WFS query

Setting a Boundary box on your WFS query

The easiest way to set the Boundary box on a WFS is first to zoom in on the area you want data from and then open the properties of the map

From the Extent tab click “use a custom extent”

then click “Current visible extent” (Red) and finally copy the values (green)

In a text editor arrange them as E_min(Left), N_min(Bottom) , E_max(Right), N_max (Top). in this case

687907, 6167881, 702313, 6177064

Now edit the properties of the WFS server by right-clicking the server in the catalogue and choosing properties

Now expand the Custom request parameters (red) and add a new row by typing “BBOX” in the Parameters column and the boundary data in the Value column (Green) finally click ok. Please note theas parameters are used on all layers form the server

Data will bow only be returned within the specified area

Setting a Query on the data.

As an alternative to a boundary box you can also use the where clause of a SQL filter on the data as a CQL_filter. in this case we will specify that the “komnr” attribute bust be 265 i.e. komnr=265. Like with the BBOX solution open the properties of the WFS server and expand Custom request parameters (red) and add a new row (green) this time typing “cql_filter” into the parameter and komnr=265 into the Value column. THen pres OK

Only the data eating these criteria will be returned