Necesito descargar todos los datos de un servicio WFS como archivos CSV y estar seguro de que he descargado todos los datos.
Estoy utilizando Python para descargar trozos de 20 000 filas a la vez:
import urllib.request
import os
download_folder = r'C:\Arenden\arter_test'
for start in range(0, 1000000, 20000): #I'm using 1000000 as stop since I dont know the row count of the service
#For each 20 000 chunk create the url string
req = "https://slwgeo.artdata.slu.se/geoserver/SLW/wms?service=WFS&version=1.1.0&request=GetFeature&typeName=SLW:AllSwedishOccurrences&maxFeatures=20000&startIndex={0}&outputFormat=csv".format(start)
print(req)
#And save the csv file
file = os.path.join(download_folder, "allswedishoccurrences_{0}.csv".format(start))
urllib.request.urlretrieve(req, file)
¿Hay alguna forma de saber cuándo parar? Simplemente sigue
https://slwgeo.artdata.slu.se/geoserver/SLW/wms?service=WFS&version=1.1.0&request=GetFeature&typeName=SLW:AllSwedishOccurrences&count=20000&startIndex=0&outputFormat=csv
https://slwgeo.artdata.slu.se/geoserver/SLW/wms?service=WFS&version=1.1.0&request=GetFeature&typeName=SLW:AllSwedishOccurrences&count=20000&startIndex=20000&outputFormat=csv
...
No hay duplicados en los archivos csv:
import pandas as pd
df1 = pd.read_csv(r'/home/bera/GIS/wrk/Species/csvfiles/allswedishoccurrences_20000-40000.csv')
#df1.shape
#(20000, 78)
df2 = pd.read_csv(r'/home/bera/GIS/wrk/Species/csvfiles/allswedishoccurrences_40000-60000.csv')
#df2.shape
#(20000, 78)
#df1.equals(df2)
#False
df3 = pd.concat([df1, df2])
#df3.shape
#(40000, 78)
df3 = df3.drop_duplicates()
#df3.shape
#(40000, 78)