OGC veri ve harita yayını

Proje nesnelerini OGC API Features ile okuyun ve WMS harita katmanlarını kullanın.

Son güncelleme:

Bu sayfadaErişimOGC API FeaturesWMS 1.3.0Koleksiyon listesini okuyunKoleksiyon nesnelerini süzünWMS haritasını alın

Erişim

OGC yayını /api/ogc altında salt okunurdur. Erişim anahtarı, Authorization: Bearer başlığında veya HTTP Basic parola alanında verilir; Basic kullanıcı adı serbesttir. Oturum çerezi kabul edilmez. Anahtarın proje kapsamı, kullanıcının güncel kurum ve üyelik izinleri uygulanır. Tasarım dalları yayına açılmaz.

GIS_OGC=kapali yayını kapatır. Sorgu parametresiyle anahtar varsayılan olarak kapalıdır; yalnız GIS_OGC_SORGU_ANAHTAR=1 olduğunda anahtar parametresi kabul edilir. URL’nin başka sistemlerde de kaydedilebilmesi nedeniyle başlıkla veya Basic kimlik kaydıyla bağlanın.

OGC API Features

Yöntem ve uç İşlev
GET /api/ogc/ Yayının başlangıç belgesi
GET /api/ogc/conformance Sunucunun bildirdiği uyumluluk sınıfları; kimlik gerektirmez
GET /api/ogc/api OGC uçlarına ait OpenAPI 3.0 şeması
GET /api/ogc/collections Erişilebilir koleksiyonlar
GET /api/ogc/collections/{cid} Koleksiyon, kapsam ve koordinat sistemleri
GET /api/ogc/collections/{cid}/items GeoJSON nesneleri
GET /api/ogc/collections/{cid}/items/{fid} Tek GeoJSON nesnesi

Koleksiyon kimliği p{proje_id}-{tur} biçimindedir; örneğin p123-cable. Gerçek kimliği koleksiyon listesinden alın. Uyumluluk belgesi dışındaki OGC uçları anahtar ister.

  1. Koleksiyon listesini okuyun ve izin verilen koleksiyonu seçin.
  2. items bağlantısından nesneleri alın.
  3. Dönen links içindeki rel: "next" bağlantısını izleyin; bağlantı yoksa son sayfadasınız.
  4. Gerekiyorsa bbox, bbox-crs, crs ve datetime filtrelerini ekleyin.

limit sayfa boyu, after son nesne kimliğidir. datetime, kaydın güncellenme zamanını süzer; saat dilimli bir an veya başlangıç/bitiş aralığı alır, açık uç .. ile belirtilir. HTML çıktı sunulmaz.

Koordinat sistemi için koleksiyonun crs listesindeki standart URI’leri kullanın. Varsayılan CRS84 boylam/enlem sırasındadır. EPSG:4326 URI’siyle çıktı ve sınır kutusu enlem/boylam sırasını kullanır. Yanıttaki Content-Crs başlığını okuyun. Projeye özel yerel dönüşüm OGC koordinat sistemi değildir.

WMS 1.3.0

WMS ucu /api/ogc/wms olup aynı kimlik ve proje kapsamını kullanır.

İstek Çıktı
SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities Yetkili katmanları ve servis bilgilerini veren XML
REQUEST=GetMap FORMAT=image/png ile harita görseli
REQUEST=GetFeatureInfo INFO_FORMAT=application/json ile seçilen piksele yakın nesneler

GetMap isteğinde ayrıca SERVICE, VERSION, LAYERS, CRS, BBOX, WIDTH, HEIGHT gerekir. Yalnız varsayılan stil kullanılır; STYLES boş olabilir. Desteklenen sistemler EPSG:4326, EPSG:3857 ve CRS:84 değerleridir. WMS 1.3.0’da EPSG:4326 sınırları enlem, boylam sırasındadır.

GetFeatureInfo, aynı harita parametrelerine ek olarak QUERY_LAYERS, I, J ve INFO_FORMAT ister. Sorgulanan katmanlar LAYERS alt kümesi olmalıdır. WMS parametre/katman hataları XML; kimlik hataları detail, kod, alan içeren JSON dönebilir.

Masaüstü CBS istemcisinde OGC API Features bağlantısı için sunucu adresine /api/ogc/, WMS bağlantısı için /api/ogc/wms ekleyin. Basic kimlik kaydında parola olarak erişim anahtarını kullanın. İstemcinin bağlanması, kurumun bütün projelerini görme yetkisi vermez.

Koleksiyon listesini okuyun

Aşağıdaki örneklerde SOSOMAPS_URL kurumunuzun uygulama adresidir. İstek/yanıt alanları kaynakla karşılaştırılmıştır; burada canlı bir servis bağlantısı veya masaüstü istemci kabulü gösterilmez. Okuma kapsamlı anahtarı güvenli ortam yapılandırmasından alın.

curl --fail-with-body "$SOSOMAPS_URL/api/ogc/collections" \
  -H "Authorization: Bearer $ERISIM_ANAHTARI"
import os
import requests

yanit = requests.get(
    os.environ["SOSOMAPS_URL"].rstrip("/") + "/api/ogc/collections",
    headers={"Authorization": "Bearer " + os.environ["ERISIM_ANAHTARI"]},
    timeout=30,
)
yanit.raise_for_status()
print(yanit.json())
const yanit = await fetch(
  `${process.env.SOSOMAPS_URL.replace(/\/$/, '')}/api/ogc/collections`,
  { headers: { Authorization: `Bearer ${process.env.ERISIM_ANAHTARI}` } }
);
if (!yanit.ok) throw new Error(`HTTP ${yanit.status}`);
console.log(await yanit.json());

Yanıtta collections dizisini ve her koleksiyonun id, links, extent, crs alanlarını okuyun. collections: [] erişilebilir koleksiyon olmadığı anlamına gelir; bunu bütün kurum verisinin boş olduğu şeklinde yorumlamayın. links içindeki nesne bağlantısını izleyin.

Koleksiyon nesnelerini süzün

Örnek koleksiyon p123-cabinet ve koordinatlar örnektir; gerçek kimliği koleksiyon listesinden alın. Varsayılan CRS84 boylam/enlem sırasını kullanır. --get --data-urlencode parametrelerin URL’ye doğru kodlanmasını sağlar.

curl --fail-with-body --get \
  "$SOSOMAPS_URL/api/ogc/collections/p123-cabinet/items" \
  -H "Authorization: Bearer $ERISIM_ANAHTARI" \
  --data-urlencode 'bbox=31.9,38.9,32.1,39.1' \
  --data-urlencode 'limit=100'
import os
import requests

yanit = requests.get(
    os.environ["SOSOMAPS_URL"].rstrip("/") + "/api/ogc/collections/p123-cabinet/items",
    headers={"Authorization": "Bearer " + os.environ["ERISIM_ANAHTARI"]},
    params={"bbox": "31.9,38.9,32.1,39.1", "limit": 100}, timeout=30,
)
yanit.raise_for_status()
print(yanit.json())
const adres = new URL('/api/ogc/collections/p123-cabinet/items', process.env.SOSOMAPS_URL);
adres.search = new URLSearchParams({ bbox: '31.9,38.9,32.1,39.1', limit: '100' });
const yanit = await fetch(adres, {
  headers: { Authorization: `Bearer ${process.env.ERISIM_ANAHTARI}` }
});
if (!yanit.ok) throw new Error(`HTTP ${yanit.status}`);
console.log(await yanit.json());

Boş sayfanın temsili yanıtı şöyledir. numberReturned bu sayfadaki kayıt sayısıdır; toplam kayıt sayısı değildir. Sonraki sayfa varsa links içinde rel: "next" bulunur.

{
  "type": "FeatureCollection",
  "features": [],
  "numberReturned": 0,
  "timeStamp": "2026-11-10T09:00:00+00:00",
  "links": [
    {
      "href": "/api/ogc/collections/p123-cabinet/items?bbox=31.9%2C38.9%2C32.1%2C39.1&limit=100",
      "rel": "self",
      "type": "application/geo+json"
    }
  ]
}

WMS haritasını alın

Önce yetkili katmanları GetCapabilities ile okuyun. Basic kullanıyorsanız kullanıcı adı serbest, parola erişim anahtarıdır. Örnekte okuyucu kullanıcı adı bir ürün hesabı oluşturmaz.

curl --fail-with-body --get "$SOSOMAPS_URL/api/ogc/wms" \
  --user "okuyucu:$ERISIM_ANAHTARI" \
  --data-urlencode 'SERVICE=WMS' \
  --data-urlencode 'VERSION=1.3.0' \
  --data-urlencode 'REQUEST=GetCapabilities'

Katman adını yanıtın Name değerinden alın. Aşağıdaki örnek CRS:84 seçerek boylam/enlem kutusu kullanır ve PNG’yi yerel dosyaya yazar. EPSG:4326 seçerseniz kutunun eksen sırası değişir.

curl --fail-with-body --get "$SOSOMAPS_URL/api/ogc/wms" \
  -H "Authorization: Bearer $ERISIM_ANAHTARI" \
  --data-urlencode 'SERVICE=WMS' --data-urlencode 'VERSION=1.3.0' \
  --data-urlencode 'REQUEST=GetMap' --data-urlencode 'LAYERS=p123-cabinet' \
  --data-urlencode 'STYLES=' --data-urlencode 'CRS=CRS:84' \
  --data-urlencode 'BBOX=31.9,38.9,32.1,39.1' \
  --data-urlencode 'WIDTH=800' --data-urlencode 'HEIGHT=600' \
  --data-urlencode 'FORMAT=image/png' --output harita.png
import os
from pathlib import Path
import requests

params = {"SERVICE": "WMS", "VERSION": "1.3.0", "REQUEST": "GetMap",
          "LAYERS": "p123-cabinet", "STYLES": "", "CRS": "CRS:84",
          "BBOX": "31.9,38.9,32.1,39.1", "WIDTH": 800, "HEIGHT": 600,
          "FORMAT": "image/png"}
yanit = requests.get(os.environ["SOSOMAPS_URL"].rstrip("/") + "/api/ogc/wms",
    headers={"Authorization": "Bearer " + os.environ["ERISIM_ANAHTARI"]},
    params=params, timeout=30)
yanit.raise_for_status()
if not yanit.headers.get("Content-Type", "").startswith("image/png"):
    raise ValueError("PNG yanıtı bekleniyordu")
Path("harita.png").write_bytes(yanit.content)
import { writeFile } from 'node:fs/promises';
const adres = new URL('/api/ogc/wms', process.env.SOSOMAPS_URL);
adres.search = new URLSearchParams({
  SERVICE: 'WMS', VERSION: '1.3.0', REQUEST: 'GetMap',
  LAYERS: 'p123-cabinet', STYLES: '', CRS: 'CRS:84',
  BBOX: '31.9,38.9,32.1,39.1', WIDTH: '800', HEIGHT: '600', FORMAT: 'image/png'
});
const yanit = await fetch(adres, {
  headers: { Authorization: `Bearer ${process.env.ERISIM_ANAHTARI}` }
});
if (!yanit.ok) throw new Error(`HTTP ${yanit.status}`);
if (!yanit.headers.get('content-type')?.startsWith('image/png')) {
  throw new Error('PNG yanıtı bekleniyordu');
}
await writeFile('harita.png', Buffer.from(await yanit.arrayBuffer()));

İndirilen dosyanın türünü ve WMS hata gövdesini kontrol edin. OGC referansı ayrı API sayfasında, ortak hata zarfı hata kodları sayfasındadır.