How S8 is built

Author

Mohamed Gharbia

Published

October 17, 2026

Blueprint

flowchart TB
  N[/"S1 streets<br/>walkable, inside the area"/]:::data --> P["POINTS<br/>a viewpoint every 10 m"]:::step
  B[/"OpenStreetMap<br/>building outlines"/]:::data --> R["RAYS<br/>360 sight lines,<br/>stopped at the first outline<br/>or at 300 m"]:::step
  P --> R
  R --> M["MEASURES<br/>area, perimeter, longest<br/>and mean line, compactness"]:::step
  M --> S["SEGMENTS<br/>the mean of their viewpoints,<br/>and the middle view kept"]:::step
  S --> K["CHECK<br/>viewpoints inside an outline,<br/>views leaving the map"]:::step
  K --> OUT[/"points, segments,<br/>views, checkpoints"/]:::out
  OUT --> TE["TESTS"]:::test
  classDef data fill:none,stroke:#8a8a8a,color:#e6e6e6
  classDef rule fill:none,stroke:#8a8a8a,stroke-dasharray:4 3,color:#a6a6a6
  classDef step fill:none,stroke:#e6e6e6,color:#e6e6e6
  classDef out fill:none,stroke:#e6e6e6,stroke-width:2px,color:#ffffff
  classDef test fill:none,stroke:#fe83cc,color:#fe83cc

The sources

Source What S8 takes from it
S1 Streets the walkable segments inside the area, and their lines
OpenStreetMap buildings, through the Overpass API, fetched 2026-10-14, ODbL 1,682 building outlines over the area and 150 m around it; 14 buildings recorded as relations have no outline in the file and stop nothing

Viewpoints

Each walkable segment inside the area is cut into steps of about 10 m, and a viewpoint stands at the middle of each step. A segment shorter than 10 m gets one viewpoint. The viewpoint stands on the street’s centreline, where the S1 line runs.

Sight lines

From each viewpoint, 360 sight lines leave at every degree. Each one stops at the first building edge it crosses, or at 300 m. A line that passes exactly through a building’s corner counts as stopped there, so it cannot slip between two edges.

Measures

Measure What it says
area the surface enclosed by the ends of the 360 lines, in m²
perimeter the length of that outline
longest and mean sight line how far one can see at most, and on average
compactness 4π × area / perimeter², 1 for a circle, small for a long thin corridor
open share the share of lines that reach 300 m
beyond share the share of lines that end outside the box of buildings S8 read, where the view is unknown

Benedikt (1979) defined the isovist and several of these measures; Batty (2001) uses compactness to compare the shapes of isovists across a plan. Turner and others (2001) carry isovists into visibility graphs, which S8 does not build.

Assumptions

Assumption Why I accept it for now What would replace it
only building outlines block a view they are the only obstacles mapped openly for the whole area the city’s 3D buildings, trees with their crowns, the rail and road structures
the view is flat, at eye level the outlines carry no reliable height for walls and podiums a 3D model of the street
a viewpoint stands on the centreline S1 gives the street as one line the sidewalks of S6, when S9 needs sides
300 m reach far enough for the length of a block in the old grid and the width of the canal a stress test shows what changes

Tests

Seven checks

Each check asks one plain question of what S8 wrote. Six must pass, and all six do; the seventh only reports.

Question Answer
T1 Does every walkable segment inside the area have a viewpoint at least every 10 m or so? yes, 1,798 viewpoints on 231 segments
T2 Does every sight line stop at the first building edge or at the radius, and does the area follow? yes, every 25th viewpoint worked out again in plain Python, one line at a time
T3 Do the measures of every viewpoint agree with each other? yes
T4 Is every segment the mean of its viewpoints, with its middle view kept for the Lab? yes
T5 Is every viewpoint inside a building, and every view beyond the mapped buildings, a checkpoint, and nothing else? yes, 1 checkpoint
T6 Does S8 measure from the map alone, leaving out the counts, space syntax and the trees? yes
T7 What does S8 give? report
TipTesting the tests

T2 first failed on 16 viewpoints, by up to 9 m². The check started from the positions written in the file, rounded to the centimetre, and a centimetre was enough to let a line graze past a corner it had hit before. T2 now places the viewpoints again from S1. A smaller gap of 0.1 m² remained: the area was summed in coordinates of about five million metres, which loses decimals. S8 now sums it from the viewpoint outwards, and the two agree.

Stress tests

Change What moves
X1 the same input twice nothing: identical
X2 reach of 100, 200, 300 and 500 m median area 11,800 to 44,100 m²; the order of the streets against 300 m holds at 0.95 to 0.99
X3 90, 180, 360 and 720 sight lines at 720 the streets move by 0.9 % (median), 4 % at most; at 90, 7 % and 30 %
X4 a viewpoint every 5, 10 and 20 m the streets move by under 1 % (median); a few short ones by 14 to 45 %
X5 one OpenStreetMap outline in ten left out, three draws median area up by 13 to 78 %; the streets move by 4 to 21 % (median); order 0.90 to 0.99

X5 is the one that matters: S8 depends on how complete OpenStreetMap is, and a missing building widens a view more than any setting of S8 does. I read the order of the streets, and treat single areas as approximate.