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