WMS — Web Map Service
WMS (Web Map Service) îți permite să redezi plăci de hartă stilizate din straturile GeoServer. Acest ghid acoperă toate cinci operațiile WMS și parametrii lor.
Toate cererile merg la: https://graph.quarticle.ro/graph/layers/wms/
Autentificare: Adaugă antetul Authorization: YOUR_API_KEY la toate cererile.
GetCapabilities
Descoperă straturile disponibile, stilurile, proiecțiile și formaturile de ieșire publicate în GeoServer.
Scop: Descoperire metadate — înțelege ce straturi sunt disponibile și ce operații le suportă.
Parametri obligatori
| Parametru | Valoare | Exemplu |
|---|---|---|
service | WMS | service=WMS |
version | 1.3.0 | version=1.3.0 |
request | GetCapabilities | request=GetCapabilities |
Răspuns
Returnează un document XML care listează toate straturile disponibile cu:
- Casete de delimitare (extindere spațială)
- Proiecții disponibile (SRS)
- Stiluri
- Tipuri de date
- cURL
- JavaScript
- Python
curl -X GET "https://graph.quarticle.ro/graph/layers/wms/GetCapabilities" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WMS" \
--data-urlencode "version=1.3.0" \
--data-urlencode "request=GetCapabilities"
const apiKey = process.env.QARTA_API_KEY;
fetch('https://graph.quarticle.ro/graph/layers/wms/GetCapabilities?' +
new URLSearchParams({
service: 'WMS',
version: '1.3.0',
request: 'GetCapabilities'
}), {
headers: { 'Authorization': `${apiKey}` }
})
.then(r => r.text())
.then(xml => {
// Parse XML document
const parser = new DOMParser();
const doc = parser.parseFromString(xml, 'text/xml');
const layers = doc.querySelectorAll('Layer');
console.log(`Found ${layers.length} layers`);
});
import requests
import xml.etree.ElementTree as ET
api_key = os.getenv('QARTA_API_KEY')
response = requests.get(
'https://graph.quarticle.ro/graph/layers/wms/GetCapabilities',
params={
'service': 'WMS',
'version': '1.3.0',
'request': 'GetCapabilities'
},
headers={'Authorization': f'{api_key}'}
)
root = ET.fromstring(response.text)
layers = root.findall('.//{http://www.opengis.net/wms}Layer')
print(f'Found {len(layers)} layers')
DescribeLayer
Obține metadate despre sursa WFS sau WCS a unui strat specific.
Scop: Găsește parametrul typeNames WFS corespunzător unui strat WMS.
Parametri obligatori
| Parametru | Descriere |
|---|---|
service | WMS |
version | 1.1.1 |
request | DescribeLayer |
layers | Nume de straturi separate prin virgulă. Exemplu: GRAPHRASTER:light_pollution |
Parametri opționali
| Parametru | Descriere |
|---|---|
exceptions | Format excepție. Implicit: application/vnd.ogc.se_xml |
Exemplu
- cURL
curl -X GET "https://graph.quarticle.ro/graph/layers/wms/DescribeLayer" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WMS" \
--data-urlencode "version=1.1.1" \
--data-urlencode "request=DescribeLayer" \
--data-urlencode "layers=GRAPHRASTER:light_pollution"
GetMap
Redă o plăcuță de hartă (imagine PNG) pentru o anumită zonă, straturi și stil.
Scop: Generează imagini de hartă stilizate pentru afișare pe hărți web sau în aplicații.
Parametri obligatori
| Parametru | Descriere | Exemplu |
|---|---|---|
service | WMS | WMS |
version | 1.3.0 | 1.3.0 |
request | GetMap | GetMap |
layers | Nume de straturi separate prin virgulă | GRAPHRASTER:light_pollution |
styles | Nume de stiluri separate prin virgulă (sau gol pentru implicite) | `` (gol) sau light_style |
srs / crs | Sistem de referință spațial (cod EPSG) | EPSG:3857 (Web Mercator) |
bbox | Caseta de delimitare: minx,miny,maxx,maxy în unități SRS | 975947.9771,6657970.9118,1533632.5355,7037098.5720 |
width | Lățimea ieșirii în pixeli | 256 |
height | Înălțimea ieșirii în pixeli | 256 |
format | Format de ieșire | image/png |
Parametri opționali
| Parametru | Descriere | Exemplu |
|---|---|---|
transparent | Dacă fundal este transparent | true |
bgcolor | Culoare de fundal în format RRGGBB hex | FFFFFF |
exceptions | Format excepție | application/json |
time | Valoare de timp pentru straturi temporale | 2023-01-01T00:00:00Z |
sld | URL la document SLD extern | https://example.com/style.sld |
sld_body | SLD XML codificat în URL | (vezi exemple) |
Exemplu: Plăcuță de bază 256×256
- cURL
- JavaScript
- Python
curl -X GET "https://graph.quarticle.ro/graph/layers/wms/GetMap" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WMS" \
--data-urlencode "version=1.3.0" \
--data-urlencode "request=GetMap" \
--data-urlencode "layers=GRAPHRASTER:light_pollution" \
--data-urlencode "styles=" \
--data-urlencode "srs=EPSG:3857" \
--data-urlencode "bbox=975947.9771,6657970.9118,1533632.5355,7037098.5720" \
--data-urlencode "width=256" \
--data-urlencode "height=256" \
--data-urlencode "format=image/png" \
--data-urlencode "transparent=true" \
-o tile.png
const apiKey = process.env.QARTA_API_KEY;
const params = new URLSearchParams({
service: 'WMS',
version: '1.3.0',
request: 'GetMap',
layers: 'GRAPHRASTER:light_pollution',
styles: '',
srs: 'EPSG:3857',
bbox: '975947.9771,6657970.9118,1533632.5355,7037098.5720',
width: '256',
height: '256',
format: 'image/png',
transparent: 'true'
});
const url = `https://graph.quarticle.ro/graph/layers/wms/GetMap?${params}`;
const imgElement = document.querySelector('img');
imgElement.src = url;
imgElement.onload = () => console.log('Tile loaded');
import requests
api_key = os.getenv('QARTA_API_KEY')
response = requests.get(
'https://graph.quarticle.ro/graph/layers/wms/GetMap',
params={
'service': 'WMS',
'version': '1.3.0',
'request': 'GetMap',
'layers': 'GRAPHRASTER:light_pollution',
'styles': '',
'srs': 'EPSG:3857',
'bbox': '975947.9771,6657970.9118,1533632.5355,7037098.5720',
'width': '256',
'height': '256',
'format': 'image/png',
'transparent': 'true'
},
headers={'Authorization': f'{api_key}'}
)
with open('tile.png', 'wb') as f:
f.write(response.content)
Sfaturi
- EPSG:3857: Utilizează pentru plăcile hartă web (proiecție Web Mercator)
- EPSG:4326: Utilizează pentru date reproyectate (lat/lon, rar pentru plăci)
- SRS vs CRS: WMS 1.1.x utilizează
srs, WMS 1.3.0 utilizeazăcrs(GeoServer acceptă ambele) - format=image/png: Produce plăci PNG de 8 biți mai mici
- transparent=true: Permite fundalului să se manifeste (util pentru suprapuneri)
- Straturi multiple: Separă cu virgule:
layers=layer1,layer2,layer3
GetFeatureInfo
Interogă atributele caracteristicilor la o locație de pixel pe o hartă redată.
Scop: "Clic pentru interogare" — obține valori de atribute din locația pe hartă.
Parametri obligatori
Toți parametrii GetMap, plus:
| Parametru | Descriere | Exemplu |
|---|---|---|
query_layers | Straturi de interogat (subset al layers) | GRAPHRASTER:light_pollution |
x | Coordonata X a punctului de interogare (în pixeli) | 5 |
y | Coordonata Y a punctului de interogare (în pixeli) | 5 |
Parametri opționali
| Parametru | Descriere |
|---|---|
info_format | Format de răspuns: text/html, application/json, text/plain |
feature_count | Max caracteristici de returnat. Implicit: 1 |
Exemplu
- cURL
curl -X GET "https://graph.quarticle.ro/graph/layers/wms/GetFeatureInfo" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WMS" \
--data-urlencode "version=1.3.0" \
--data-urlencode "request=GetFeatureInfo" \
--data-urlencode "layers=GRAPHRASTER:light_pollution" \
--data-urlencode "query_layers=GRAPHRASTER:light_pollution" \
--data-urlencode "styles=" \
--data-urlencode "srs=EPSG:3857" \
--data-urlencode "bbox=975947.9771,6657970.9118,1533632.5355,7037098.5720" \
--data-urlencode "width=256" \
--data-urlencode "height=256" \
--data-urlencode "x=128" \
--data-urlencode "y=128" \
--data-urlencode "info_format=application/json"
GetLegendGraphic
Recuperează o imagine de legendă redată pentru un strat și stil.
Scop: Afișează legenda straturilor în aplicația ta.
Parametri obligatori
| Parametru | Descriere | Exemplu |
|---|---|---|
service | WMS | WMS |
version | 1.0.0 | 1.0.0 |
request | GetLegendGraphic | GetLegendGraphic |
layer | Nume strat | GRAPHRASTER:light_pollution |
styles | Nume stil | light_style sau gol |
format | Format imagine | image/png |
Parametri opționali
| Parametru | Descriere |
|---|---|
width | Lățime în pixeli (implicit: 20) |
height | Înălțime în pixeli (implicit: 20) |
rule | Regulă specifică din stil (dacă se aplică) |
scale | Numitor de scară standardizat |
sld | URL la document SLD extern |
sld_body | SLD XML codificat în URL |
language | Limbă pentru etichete |
Exemplu
- cURL
curl -X GET "https://graph.quarticle.ro/graph/layers/wms/GetLegendGraphic" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "service=WMS" \
--data-urlencode "version=1.0.0" \
--data-urlencode "request=GetLegendGraphic" \
--data-urlencode "layer=GRAPHRASTER:light_pollution" \
--data-urlencode "format=image/png" \
--data-urlencode "width=40" \
--data-urlencode "height=40" \
-o legend.png
Gestionarea erorilor
Dacă o cerere GetMap sau GetCapabilities eșuează, eroarea este returnată în formatul excepție solicitat:
<?xml version="1.0" encoding="UTF-8"?>
<ServiceExceptionReport version="1.3.0">
<ServiceException>
Layer 'invalid_layer' not found
</ServiceException>
</ServiceExceptionReport>
Sau ca JSON dacă exceptions=application/json:
{
"code": "InvalidLayer",
"message": "Layer 'invalid_layer' not found"
}
Erori comune:
- InvalidLayer: Nume strat nu există. Verifică GetCapabilities.
- InvalidSRS: Cod SRS/CRS nu este suportat. Tipic:
EPSG:3857,EPSG:4326. - InvalidBBox: Format cutie de delimitare incorect sau în afara limitelor.
- Unauthorized: Cheia API lipsă sau nevalidă.
Pași următori
- Prezentare generală GeoServer
- Ghid WFS — Interogă date brute de caracteristici
- Caz de utilizare vizualizare hartă — Încorporează WMS în hărți web