Sări la conținutul principal

WFS — Web Feature Service

WFS (Web Feature Service) îți permite să recuperezi caracteristici geografice brute din straturile GeoServer. Folosește WFS pentru a descărca caracteristici ca GeoJSON, filtrează după criterii spațiale sau de atribute, și integrează datele de caracteristici în aplicațiile tale.

Toate cererile merg la: https://graph.quarticle.ro/graph/layers/wfs/

Autentificare: Adaugă antetul Authorization: YOUR_API_KEY la toate cererile.


GetFeature

Recuperează caracteristici geografice dintr-un strat WFS.

Parametri obligatori

ParametruDescriereExemplu
serviceWFSWFS
versionVersiune WFS2.0.0
requestGetFeatureGetFeature
typeNamesNume strat(e)GRAPHRASTER:light_pollution

Parametri opționali

Filtrare

ParametruDescriereExemplu
featureIDReturnează doar caracteristici cu ID specificnamespace:layername.id
bboxFiltru spațial: minx,miny,maxx,maxy,SRS2554219.59,5763351.78,2554220.89,5763352.09,EPSG:3857
cql_filterExpresie filtru GeoServer CQLpopulation > 1000000
filterXML Filtru OGC(vezi exemple mai jos)

Control ieșire

ParametruDescriereExemplu
outputFormatFormat de răspunsapplication/json (GeoJSON)
srsNameSistem de coordonate de ieșireEPSG:4326
propertyNameProprietăți separate prin virgulă de returnatname,population,area

Paginare

ParametruDescriereExemplu
count (WFS 2.0.0)Max caracteristici de returnat100
maxFeatures (WFS 1.1.0)Max caracteristici de returnat100
startIndexDecalaj paginare200

Sortare

ParametruDescriereExemplu
sortBySortează rezultate după câmppopulation D (descrescător) sau population A (crescător)

Exemple

Interogare de caracteristici de bază

curl -X GET "https://graph.quarticle.ro/graph/layers/wfs/GetFeature" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WFS" \
--data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" \
--data-urlencode "typeNames=GRAPHRASTER:light_pollution" \
--data-urlencode "outputFormat=application/json"

Filtru spațial (BBox)

Interogează caracteristici într-o cutie de delimitare:

curl -X GET "https://graph.quarticle.ro/graph/layers/wfs/GetFeature" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WFS" \
--data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" \
--data-urlencode "typeNames=GRAPHRASTER:cities" \
--data-urlencode "bbox=-74.1,40.6,-73.9,40.8,EPSG:4326" \
--data-urlencode "outputFormat=application/json"

Filtru CQL (Interogare atribute)

Filtrează caracteristici după atribute folosind CQL (Common Query Language):

# Obține orașe cu populație > 1 milion
cql_filter=population > 1000000

Selecție și paginare proprietăți

Recuperează proprietăți specifice și pagineaza prin seturi mari de rezultate:

curl -X GET "https://graph.quarticle.ro/graph/layers/wfs/GetFeature" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WFS" \
--data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" \
--data-urlencode "typeNames=GRAPHRASTER:cities" \
--data-urlencode "propertyName=name,population,country" \
--data-urlencode "count=100" \
--data-urlencode "startIndex=0" \
--data-urlencode "sortBy=population D" \
--data-urlencode "outputFormat=application/json"

Formate de ieșire

WFS poate returna caracteristici în mai multe formate:

FormatMIME TypeCaz de utilizare
GeoJSONapplication/jsonRecomandat pentru aplicații web
GML 3text/xml sau application/gml+xmlStandard OGC, aplicații desktop GIS
CSVtext/csvAnaliză date, export Excel

Exemplu:

outputFormat=application/json    # GeoJSON
outputFormat=application/gml+xml # GML
outputFormat=text/csv # CSV

Structura răspunsului (GeoJSON)

Un răspuns WFS tipic în format GeoJSON:

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "cities.1",
"geometry": {
"type": "Point",
"coordinates": [-74.0060, 40.7128]
},
"properties": {
"name": "New York",
"population": 8335897,
"country": "USA"
}
},
{
"type": "Feature",
"id": "cities.2",
"geometry": {
"type": "Point",
"coordinates": [-87.6298, 41.8857]
},
"properties": {
"name": "Chicago",
"population": 2693976,
"country": "USA"
}
}
]
}

Gestionarea erorilor

Dacă o cerere GetFeature eșuează, eroarea este returnată ca XML în mod implicit:

<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport version="2.0.0">
<Exception exceptionCode="InvalidParameterValue">
<ExceptionText>
Unknown typename: invalid_layer
</ExceptionText>
</Exception>
</ExceptionReport>

Sau ca JSON dacă adaugi &outputFormat=application/json:

{
"code": "InvalidParameterValue",
"message": "Unknown typename: invalid_layer"
}

Erori comune:

  • InvalidParameterValue: typeNames greșit, srsName sau outputFormat
  • NoApplicableCode: Eroare sintaxă filtru CQL sau nume proprietate nevalid
  • Unauthorized: Cheia API lipsă sau nevalidă
  • ServiceException: Eroare generală GeoServer (verifică parametrii)

Sfaturi și bune practici

  1. Utilizează JSON pentru aplicații web: outputFormat=application/json este cel mai ușor de parsetat în JavaScript
  2. Filtrează devreme: Utilizează bbox sau cql_filter pentru a reduce sarcina în loc să descarci toate caracteristicile
  3. Selectează proprietăți: Solicitează doar câmpurile de care ai nevoie cu propertyName=field1,field2
  4. Pagineaza seturi mari: Utilizează count și startIndex pentru a evita timeout-urile
  5. Sistem de coordonate: Datele în EPSG:4326 (lat/lon) sunt standard; utilizează srsName pentru a transforma dacă este necesar
  6. Cache rezultate: Pentru seturi de date accesate frecvent, luați în considerare stocarea în cache a datelor caracteristicilor local

Pași următori