Repository navigation
Labelling Test Areas
A step-by-step guide to the area mode of gis.digiproject.uk/ortodata. An interpreter opens a test area of about 1 km², looks at it epoch by epoch on the historical orthophotos, and records for every building whether it is present, absent or indeterminate on that epoch. Buildings missing from the database are drawn as polygons and labelled the same way.
The labels are the reference set of the joint validation pilot for papers 01 and 03 (task T30, DiGi.GIS.WebAPI.UI#83). The interpretation rules are the pilot protocol's, data/Pilotaz_T30_protokol_interpretacji.md in the publication project; section 4 below repeats only what the tool enforces. Feature: DiGi.GIS.WebAPI.UI#81.
Important
Sign in again after every deployment. A restart of api.digiproject.uk invalidates every session issued before it, and sessions also expire after one hour. A request refused with status 401 means: sign in again.
- Use your own account. Every label is stored under the signed-in e-mail, and the export tells interpreters apart by it. Never label on someone else's session.
- Set the browser zoom to 100 % (Ctrl+0). The dialog uses the whole window, so a larger window shows more detail.
-
Take the area's box from the pilot list,
data/Pilotaz_T30_obszary.tsvin the publication project: columnsepsg2180_x1,epsg2180_y1,epsg2180_x2,epsg2180_y2(EPSG:2180, metres, 1000 m sides). - Work alone. The pilot currently has one interpreter (protocol v1.2, 2026-11-07); a second one may be added later on a shared subset. If an area has another interpreter, each labels independently: the tool colours only your own labels, so you never see the other interpreter's states while you work.
-
Sign in at
https://gis.digiproject.uk/login. -
Open area mode with the box in the address:
https://gis.digiproject.uk/ortodata?mode=area&x_1=<x1>&y_1=<y1>&x_2=<x2>&y_2=<y2>or open
/ortodata?mode=area, type Min X, Min Y, Max X, Max Y and press Load. -
Wait for the cards. One card is one epoch (orthophoto year), oldest first. The first visit to an area creates it and draws its sampled cells, which takes a moment longer. Images that the service has not delivered before are fetched now, so the first load of a new area can take up to half a minute. Later loads come from storage and are fast.
What a card shows:
| On the card | Meaning |
|---|---|
| Blue outlines | building footprints from the database (BDOT10k) |
| Green / red / orange fill | your own label on that epoch: present / absent / indeterminate |
| Thin orange squares | sampled cells: about 20 % of the 100 m grid, drawn once per area, identical for every interpreter |
| Outlined polygons | polygons drawn by an interpreter (section 5) |
| Orange badge indeterminate - no imagery | the map service has no imagery of this area for this epoch. Only Indeterminate can be recorded |
| Red badge not loaded - retry + Retry image | the image is temporarily unavailable (the service answered a blank or nothing). Press Retry image; nothing can be recorded until it loads |
- Click a card to open that epoch in the large dialog.
- Choose a state at the top: Present (1), Absent (2) or Indeterminate (3). Press the button or the number key; the chosen button turns the colour that state draws.
- Click buildings. Each building you click gets the chosen state and is saved at once: there is no Save button. Its outline fills with the state's colour.
- Change a label by choosing another state and clicking the building again.
-
Zoom and pan for small buildings:
- the mouse wheel zooms in and out around the pointer, up to 8×;
- drag to move the image (releasing a drag never marks a building);
- Fit or 0 shows the whole area again.
-
Read the status line under the image after each click:
Footprint … : Present saved.If a save is refused, the line turns red and names the building; click it again to retry. The red message stays until that retry succeeds. - Close with OK, Esc, or a click outside the dialog. Everything is already saved. The card behind it shows your new colours.
- Repeat for every epoch. A building is labelled on each epoch separately; a state never carries over to another year. The chosen state, however, stays selected when you open the next epoch.
| Situation | What you can record |
|---|---|
| The image loaded | any of the three states |
| indeterminate - no imagery (no imagery for this epoch) | Indeterminate only: the other two buttons are disabled |
| not loaded - retry (temporary gap) | nothing: press Retry image on the card first |
| Image still loading | nothing, until it appears |
And from the protocol, which the tool cannot check for you:
- A missing observation is never Absent. Absent needs positive certainty that the building is not there, for example clearly different ground.
- When in doubt, Indeterminate. Snow, haze, shadow, a building too small at this resolution, overlap, or doubt after zooming in.
Decide these cases the same way on every area and every epoch, so the reference set is consistent and a later second interpreter would disagree only where the imagery does. The rules below were chosen against the real footprints of pilot areas P01 and P02 (2026-11-06).
The blue outlines are present-day building footprints from BDOT10k, the national topographic database: the building_2d table, read through gis/building2D/itemsbyboundingbox. They are the same on every epoch. On a 1958 image they show where buildings stand today, not where they stood then. The question on each epoch is therefore: does the building this outline stands for exist on this image? It is not whether the outline matches the image.
They are the reference, not the truth: an outline can be shifted, outdated or split into parts. Never "correct" the database. Label the outlines as they are, and draw what is missing (section 5). The tool deliberately shows no database attributes (function, storeys, phase): judge only from the image.
| # | Case | Rule |
|---|---|---|
| 1 | Every outline | One outline is one object. Judge only what lies inside its own outline, on each epoch separately. Never mark a neighbouring outline to "cover" a building. |
| 2 | What counts as a building | Present once a building body stands: walls, or a roof. Absent for bare ground, vegetation, a road, a yard, a car park, an excavation, or a foundation slab with nothing standing on it. Scaffolding around rising walls counts as Present. |
| 3 | Outline shifted from the building | Footprints and orthophotos are often a few metres apart, more on old epochs, and tall buildings lean on the image so the roof sits beside the outline. If it is clearly the same building and no other outline claims it, mark it Present although the outline does not match. If you cannot tell which outline a building belongs to, mark both Indeterminate. |
| 4 | Outline only partly covered (the same building) | Present if the building covers more than half of the outline. Absent if the outline is clearly empty. Anything in between that you cannot settle: Indeterminate. |
| 5 | Touching outlines (row houses, wings, annexes, garages) | Very common: 170 shared-edge pairs in P02 and 450 in P01. BDOT10k splits one structure into parts. Mark each part by what is inside its own outline. When the whole block stands, every part is Present. An annex added later is Absent on the epochs before it was built, while the main part is Present. Zoom in to click the right part. |
| 6 | A different, older building on the plot (rebuilt) | Today's outline stands for today's building. On the epochs where a clearly different building stood there (other shape, size or orientation), mark today's outline Absent, and draw the old building as its own polygon, marked Present on those epochs. If you cannot tell whether it is the same building rebuilt in place or a different one, mark the outline Indeterminate. |
| 7 | Outline crossing the area's edge | 43 outlines in P02 and 60 in P01 cross the edge; 14 and 32 lie mostly outside. The image shows only the area, so judge by the visible part. If too little of it is inside to decide, mark it Indeterminate. |
| 8 | Poor image (low resolution, blur, haze, snow, cloud, deep shadow) | Zoom in first (up to 8×). If you still cannot see whether the building is there: Indeterminate. Never borrow the answer from a neighbouring epoch. Paper 03 dates buildings from exactly these per-epoch answers, so knowledge carried in from a later image would move the date. |
| 9 | Small buildings (sheds, garages) on old or coarse epochs | If the building is below what the image can resolve, mark it Indeterminate, not Absent. Absent still needs positive certainty. |
| 10 | Courtyards | The fill also covers a courtyard inside an outline (21 outlines with courtyards in P01). Judge the building around it, not the courtyard. |
| 11 | When to draw a polygon | Only for a building that has no outline at all: a demolished building, a different older building on a rebuilt plot (rule 6), or anything inside a sampled cell that the database lacks. Never draw to fix a shifted outline, to extend an outline, or over a building that already has one. Trace the roof edge on the epoch where it is clearest, one polygon per building. |
Smaller objects are drawn on top of larger ones. A footprint lying inside a drawn polygon (rule 6: the old, larger building around today's smaller one) is therefore still clickable, and a click inside it marks the footprint, not the polygon around it. BDOT10k footprints themselves never overlap: none did in P01 or P02.
Demolished buildings, rebuilt ones, and anything else without a footprint are drawn as polygons in the epoch dialog, on the epoch where the building is visible. A polygon then appears on every epoch and is labelled there like a footprint. What to draw and what not to is rule 11 of section 4a.
- Open the epoch in the dialog and choose Draw polygon (4). A Finish polygon button appears beside Fit and OK.
- Zoom in on the building (mouse wheel) so the corners can be placed accurately.
-
Click the corners, one click per corner, at least three. Clicking on an existing outline places a corner there; it does not mark that building.
- Backspace undoes the last corner;
- Esc drops the whole polygon (a second Esc closes the dialog);
- dragging still pans the image.
- Finish by clicking the first corner again, pressing Finish polygon, or Enter. The polygon is saved and shows on every epoch at once. The Draw tool stays chosen, so the next building can be drawn straight away.
- Label it: choose a state and click the polygon, on this and on every other epoch (section 3).
In every sampled cell (thin orange square), look at the whole cell on every epoch and draw everything visible that has no footprint: single buildings, seasonal buildings, anything. The cells exist so that the work also covers ground that looks empty in the database.
Drawing needs a visible image: the Draw tool is disabled on an epoch with no imagery or a temporarily missing one. Closing the dialog with an unfinished polygon drops it.
- In the epoch dialog choose Remove polygon (5).
- Click the polygon once. It gets a white dashed outline and the status line asks you to confirm.
- Click the same polygon again to remove it. It disappears from every epoch together with your labels on it. Choosing any other tool cancels a pending removal.
A removal is refused, with the reason on the status line, for:
- footprints, which come from the building database;
- a polygon another interpreter drew: only the one who drew it can remove it;
- a polygon another interpreter has labelled: removing it would delete their labels, so it stays.
Press Export CSV in the toolbar. The file holds all interpreters' labels for the area, one row per object × epoch × interpreter, with the fixed column set:
area_key, bbox, cell_id, object_kind, county_id, reference, object_id, polygon_wkt, epoch_year, observation_date_min, observation_date_max, state, interpreter, note, updated_at
state is the integer code: 0 present, 1 absent, 2 indeterminate. The observation dates come from the orthophoto sheet that covers the object, not from the year card, because one year's image can be a mosaic of sheets flown on different days.
| Key | In the epoch dialog |
|---|---|
| 1 / 2 / 3 | choose Present / Absent / Indeterminate (press again to clear) |
| 4 | choose Draw polygon |
| 5 | choose Remove polygon |
| Enter | while drawing: save the polygon |
| Backspace | while drawing: undo the last corner |
| 0 | Fit: show the whole area |
| Esc | while drawing: drop the polygon; otherwise close the dialog |
| mouse wheel / drag | zoom / pan |
| You see | What it means | What to do |
|---|---|---|
… (status 401) or "Your session has expired" |
the session ended (after a deployment, or after an hour) | sign in again and reload the area |
The label could not be saved (status 400) on every building |
label writing is switched off on the server (AllowUpdateOrtoAreaLabel) |
report it; nothing can be labelled until it is switched on |
| A red not loaded - retry card | the map service answered a blank image | press Retry image; if it stays, try again later |
| Most cards slow to appear on the first visit | the area's images are being fetched for the first time | wait; later loads come from storage |
| "was drawn by …; only they can remove it" | the polygon is someone else's | ask the interpreter who drew it |
| "has labels from another interpreter" | the polygon is already part of the other interpreter's work | leave it |
| The dialog's buttons are hidden behind the page bar | an old version of the page is cached | reload with Ctrl+F5 |
- Verifying the Orto Data Page — the per-building mode of the same page.
- DiGi.GIS.WebAPI.UI#85 — deployment and browser verification of area mode.
- DiGi.GIS.WebAPI#75 — the API behind it: image storage, blank handling, label writes.