WFS GetFeature – usando paginação para baixar dados

É pré-requisito a leitura do artigo WFS GetFeature – restrição no número de registros e número total de registros de uma camada. Como descrito, uma camada pode ter muito mais dados do que é possível baixar usando apenas uma requisição.

Neste caso, é necessário realizar um procedimento de paginação que nos possibilitará obter todos os dados disponíveis na camada.

Neste exemplo, usamos o valor de 100 registros para ilustrar o processo, mas este valor pode ser ajustado até o valor máximo permitido pelo servidor, informação que também está descrita no artigo supracitado.

Os atributos de controle relevantes são:

  • count (define a quantidade de registros por página de resultado)
  • startIndex (define o número do próximo registro incluído no resultado)
  • sortBy (usado para ordenação dos dados, permitindo o funcionamento correto da paginação)

Requisição para os primeiros 100 registros, de 0 até 100.

http://terrabrasilis.dpi.inpe.br/geoserver/deter-amz/wfs?service=WFS&version=2.0.0&srsName=EPSG:4674&request=GetFeature&typeName=deter_public&CQL_FILTER=date BETWEEN '2019-01-01' AND '2019-02-01'&outputFormat=SHAPE-ZIP&count=100&sortBy=gid&startIndex=0

Requisição para os próximos 100 registros, de 101 até 200.

http://terrabrasilis.dpi.inpe.br/geoserver/deter-amz/wfs?service=WFS&version=2.0.0&srsName=EPSG:4674&request=GetFeature&typeName=deter_public&CQL_FILTER=date BETWEEN '2019-01-01' AND '2019-02-01'&outputFormat=SHAPE-ZIP&count=100&sortBy=gid&startIndex=100

Note que a ordenação é muito importante e o ideal é que seja utilizado um atributo do dado que seja único, como no exemplo, usamos o identificador gid para ordenação. Para descobrir quais atributos existem em uma camada, veja a sessão “Pesquisando os atributos de uma camada via “DescribeFeatureType” do artigo “Download de dados