Docs / Utvecklare / Skriva objekt

Skriva objekt

Skapa, ersätt, ändra eller radera objekt, enskilt eller i en batch. Använd en read_write-nyckel på en integration vars roll får redigera samlingen.

Kontrollera åtkomsten#

En read-nyckel ger 403 insufficient_scope vid skrivning. Saknar rollen redigeringsbehörighet blir svaret 403 forbidden; en samling du inte får se ger 404. Kontrollera orbgis.editable i lagrets metadata innan du skriver. Servern kontrollerar ändå aktuell behörighet vid varje skrivning. Gränsen är 60 skrivanrop per minut och nyckel, där en batch räknas som ett anrop.

Ett objekt i taget#

AnropFunktionSvar
POST /v1/collections/{id}/itemsSkapa en GeoJSON Feature. Utelämna id för att tilldela ett objectid, eller ange ett ledigt positivt heltals-id.201 med id, links och en Location-header.
PUT /v1/collections/{id}/items/{objectid}Ersätt objektet. Utelämnade attribut blir null; rumsliga lager kräver geometri.204
PATCH /v1/collections/{id}/items/{objectid}Ändra bara angivna attribut och geometri. Ett null-värde tömmer attributet.204
DELETE /v1/collections/{id}/items/{objectid}Radera objektet och dess bilagor.204

Använd samlingens kolumnnamn i properties och ange objektets id i id på toppnivån. Okända kolumner eller ogiltiga värden ger 422 features_rejected med en errors-lista, och inget sparas. Saknade objekt ger 404. Vid samtidiga ändringar gäller den senast sparade.

Så här skapar du en punkt i ett lager med kolumnerna species och height_m:

curl --fail-with-body \
  -H "Authorization: Bearer $ORBGIS_API_KEY" \
  -H "Content-Type: application/geo+json" \
  -d '{"type":"Feature","geometry":{"type":"Point","coordinates":[18.07,59.33]},"properties":{"species":"Tilia","height_m":12}}' \
  "https://api.orbgis.se/v1/collections/COLLECTION_ID/items"

Byt ut COLLECTION_ID och välj attribut ur lagrets queryables. POST accepterar application/geo+json eller application/json. Använd batch-endpointen för flera objekt.

Skriva en batch#

POST /v1/collections/{id}/items/batch kör delete, sedan update och sist add i en transaktion. Varje lista får innehålla högst 500 poster och anropskroppen får vara högst 5 MiB (413 payload_too_large). Uppdateringar följer PATCH-reglerna och tillägg följer POST-reglerna.

{
  "delete": [17, 18],
  "update": [{"id": 1042, "properties": {"height_m": 14}}],
  "add": [{"type": "Feature", "id": 5001, "geometry": {"type": "Point", "coordinates": [18.07, 59.33]}, "properties": {"species": "Quercus"}}]
}

Ett lyckat svar innehåller deleted, updated, inserted, objectids och links. objectids listar nya id i samma ordning som add-listan. Om en post nekas, även ett saknat objekt, blir svaret 422 features_rejected och hela batchen återställs.

Koordinater#

Standard är CRS84 med longitud/latitud. Ange Content-Crs: EPSG:3006, eller ?crs=, för ett annat system ur samlingens crs-lista. Servern omvandlar koordinaterna till lagringssystemet.

Point, MultiPoint, LineString, MultiLineString, Polygon och MultiPolygon stöds. GeometryCollection nekas. Lager är tvådimensionella, så en tredje koordinat utelämnas. Ringar måste vara slutna och en geometri får innehålla högst 200 000 positioner. Använd geometry: null för samlingar med enbart attribut.

Försöka igen#

Objektskrivningar har ingen idempotensnyckel. Om du upprepar ett skapande efter en timeout kan det bli en dubblett. Ange egna objekts-id när det passar. Finns id:t redan bör du läsa och jämföra objektet innan du räknar det tidigare anropet som lyckat.

Läs berörda objekt innan du upprepar ett anrop med okänt utfall. Samma PATCH-värden lämnar de önskade värdena på plats; radering av ett redan borttaget objekt ger 404. Ta hänsyn till att andra klienter kan ha redigerat objekten mellan anropen.

Ersätta ett dataset eller bygga om översikter#

För en fullständig uppdatering laddar du upp en fil och anropar POST /v1/collections/{id}/replace med kroppen nedan. Lägg till sourceLayer, sourceSrid eller csv vid behov. Samlingen behåller sitt id, sin symbolsättning och sina kartkopplingar.

{"uploadId": "UPLOAD_ID_FROM_UPLOAD_RESPONSE"}

Svaret är 202 med job. Samma uppladdnings-id ger det befintliga jobbet med 200. Under ersättning eller ombyggnad av översikter nekas skrivning med 409 conflict. Efter många ändringar kan POST /v1/collections/{id}/refresh-lod begära nya översikter för tiles på utzoomade nivåer.

När en ändring sparats#

En skrivning uppdaterar samlingens updated och tile-version. Hämta TileJSON igen för att få de nya tile-adresserna. En layer.data_changed-webhook pekar ut lagret som ändrats. Händelser samlas ihop under ungefär tio sekunder och innehåller ingen objektdata.