planX — Yerlesim Plani Arac Seti

Academic Reference Manual — 20 Processing Algorithms for Settlement Planning
Developer: Yusuf Eminoglu  |  Provider ID: planx_yerlesim
Workflow: Ada (Island) → Parsel (Parcel) → Bina (Building) → Peyzaj (Landscape)

Scope and Purpose

The planX Settlement Plan Toolset is a QGIS Processing plugin that implements a complete computational settlement planning workflow. It provides 20 algorithms organised into a sequential pipeline—from island subdivision through parcel formation, building footprint generation under four zoning typologies (nizam), macroform placement, surface analysis, parking layout, landscape design, and final quantitative reporting. An additional suite of six helper tools supports urban furniture cataloguing, accessibility geometry (stairs/ramps), pedestrian crossings, and axis-based parking generation.

This manual documents each algorithm with its theoretical foundations, mathematical formulations, parameter specifications, output schemas, interpretation guidance, and scholarly references. It is intended for urban planners, GIS analysts, computational design researchers, and students of parametric urbanism.

System Architecture

The toolset is organised as a single QGIS Processing Provider (PlanXYerlesimProvider) that registers 20 algorithms across three logical groups:

GroupGroup IDAlgorithms
Yerlesim Plani Is Akisi (Settlement Plan Workflow)yerlesim_plani_workflowSteps 1–8 (14 algorithms)
Yerlesim Plani Yardimcilar (Settlement Plan Helpers)yerlesim_plani_yardimcilarUrban Furniture, Stairs, Ramps, Pedestrian Crossing (4 algorithms)
Otopark Araclari (Parking Tools)parking_helpersParking Axis Layer, Axis Parking Generator (2 algorithms)

The plugin's core logic is distributed across a modular engine architecture in the core/ directory, comprising geometry_engine (edge extraction, OBB, scaling, aspect ratio), footprint_engine (nizam configuration, facade-aware setback, target-area fitting), macroform_engine (template matching), parcel_randomizer (LCG-based deterministic randomness), and hard_surface_engine (buffer-and-clip surface generation).

Theoretical Foundations

The toolset operationalises several interconnected theoretical frameworks from urban morphology, parametric design, and spatial analysis:

01

1. ParcelFlux — Island-to-Parcel Subdivision

Step 1 1_parcel_flux   Class: ParcelFluxAlgorithm

Theoretical Background

Parcel subdivision is the foundational operation in settlement morphology, translating development islands (imar adası) into individual plots (parsel) that form the basic operational unit of planning control. The algorithm implements a medial-axis subdivision strategy: each island polygon is divided by a centreline oriented along the long axis (the h-line), with perpendicular division lines placed at regular intervals corresponding to the target parcel width. This approach generalises the classical strip-parcelling method documented by Conzen (1960) in his study of Alnwick's burgage plots, extended with parametric controls for organic variation.

The algorithm addresses several well-known challenges in automatic parcel generation: (1) irregular island shapes are pre-processed through oriented minimum bounding box (OBB) normalisation; (2) single-row detection prevents over-subdivision of narrow islands where the short edge is less than 1.8 times the target width; (3) residual sliver polygons are merged through a three-pass spatial adjacency optimisation; (4) optional width variation, fishbone offset, and row-width asymmetry introduce controlled organic irregularity that avoids the mechanical appearance of purely geometric subdivision (Marshall 2009).

Mathematical Formulation

Parcel Count (Normal Mode): $$n = \left\lfloor \frac{L}{w} \right\rfloor,\quad n \geq 1$$ where $L$ is the division line length (island long-axis projection) and $w$ is the target parcel width. The remainder $r = L - n \cdot w$ is distributed symmetrically when uniform corners is enabled. Start Offset (Uniform Corners): $$s_0 = \frac{L - n \cdot w}{2}$$ Width Variation (per segment $i$): $$w_i = w \cdot \left(1 + \frac{\delta_i}{100}\right), \quad \delta_i \sim U\!\left(-\text{var}, +\text{var}\right)$$ with rescaling to maintain total length: $$w_i \leftarrow w_i \cdot \frac{L - \frac{1}{2}(L - n \cdot w)}{\sum w_i}$$ Row Width Asymmetry (Split Mode): $$w_A = w \cdot (1 + s / 100),\qquad w_B = w \cdot (1 - s / 100)$$ $$s \sim U(-\text{row\_asym},\, +\text{row\_asym})$$ $$n_A = \lfloor L / w_A \rfloor,\quad n_B = \lfloor L / w_B \rfloor$$ H-line Offset Ratio: $$r_h = 0.5 + \delta_h,\quad \delta_h \sim U(-h_{\text{off}}/100,\, +h_{\text{off}}/100)$$ Fishbone Offset (per division point): $$f_i \sim U(-f_{\max},\, +f_{\max}),\quad f_{\max} = w \cdot \frac{\text{fishbone}}{100}$$ Applied as a tangential displacement along the division line before extending the perpendicular cut.

Parameters

ParameterIDTypeDefaultRangeDescription
Girdi poligon katmanıINPUTPolygon sourceDevelopment island polygons
Hedef parsel genisligiLOT_WIDTHDouble16.05.0+Target parcel frontage width (m); 16m common in Turkish residential zones
Minimum parsel alanıMIN_AREADouble300.00+Minimum parcel area in m²; smaller parcels are candidates for merging
Maksimum parsel alanıMAX_AREADouble2000.00+Maximum parcel area filter upper bound
Birlestirme esigiMERGE_THRESHOLDDouble35.00–100Merge threshold as % of mean parcel area; higher = more aggressive merging
Koseleri esit dagitUNIFORM_CORNERSBooleanTrueWhen enabled, distributes remainder symmetrically; when disabled, parcels start from one edge
Genislik varyasyonuWIDTH_VARIATIONDouble0.00–25Width variation ±%; 0 = constant, 15 = natural diversity (e.g. 18m–23m range)
Fishbone sinir offsetFISHBONE_OFFSETDouble0.00–15Organic tangential shift at division line endpoints (%)
Sira genislik asimetrisiROW_WIDTH_ASYMMETRYDouble0.00–25Front-garden width difference between opposing rows; e.g. north-facing vs south-facing parcels
H-line kaymasiHLINE_OFFSETDouble0.00–25Offset of the medial dividing line from the centre (rear garden depth variation)

Outputs

FieldTypeDescription
parcel_id / planx_parcel_idIntSequential parcel identifier (1-based)
aream2Double (20,2)Parcel area in square metres
facade_frontString (100)Comma-separated front facade edge indices (populated in Step 2)
facade_sideString (100)Side facade edge indices (populated in Step 2)
facade_backString (100)Back facade edge indices (populated in Step 2)
facade_countIntNumber of front facades (populated in Step 2)
is_cornerBoolCorner parcel flag (populated in Step 2)
front_directionString (20)Compass direction of front facade (populated in Step 2)
wd_ratioDouble (10,2)Width/Depth ratio (populated in Step 2)
(Original fields)All input layer fields are preserved in output

Interpretation Guidance

Narrow islands (single-row): When max_width < 1.8 × lot_width, the algorithm switches to single-row mode automatically. The feedback panel reports this. If you see unexpected single-row classifications, reduce the lot width or increase the fishbone offset to generate more nuanced subdivision.

Residual slivers: Polygons with area < 5 m² are discarded. The three-pass merging algorithm targets slivers with the longest shared boundary. If many parcels are being merged, reduce MERGE_THRESHOLD or increase target width.

Row-width asymmetry: The most distinctive parameter. At 10% with 20m base width, one row receives ~22m parcels while the opposing row receives ~18m. This creates differentiated front-garden depths appropriate for solar-orientation-based planning (south-facing parcels narrower but deeper).

References

  1. Conzen, M.R.G. (1960). Alnwick, Northumberland: A Study in Town-Plan Analysis. Institute of British Geographers, Publication No. 27. London: George Philip. DOI: 10.2307/621094
  2. Marshall, S. (2009). Cities, Design and Evolution. Routledge. DOI: 10.4324/9780203886427
  3. Kropf, K. (2017). The Handbook of Urban Morphology. Wiley. DOI: 10.1002/9781118747711
  4. Parish, Y.I.H. & Müller, P. (2001). Procedural Modeling of Cities. Proceedings of SIGGRAPH 2001, pp. 301–308. DOI: 10.1145/383259.383292
  5. Moudon, A.V. (1997). Urban morphology as an emerging interdisciplinary field. Urban Morphology, 1(1), 3–10. DOI: 10.51347/jum.v1i1.4047
  6. Oliveira, V. (2016). Urban Morphology: An Introduction to the Study of the Physical Form of Cities. Springer. DOI: 10.1007/978-3-319-32083-0
  7. Vanegas, C.A., Aliaga, D.G., Benes, B. & Waddell, P. (2009). Visualization of Simulated Urban Spaces. Computers & Graphics, 33(5), 609–617. DOI: 10.1016/j.cag.2009.06.005
02

2. Facade Detector — Network-Based Front/Side/Back Classification

Step 2 2_facade_detector   Class: FacadeDetectorAlgorithm

Theoretical Background

Facade detection is a critical intermediary step that establishes the spatial relationship between each parcel edge and the movement network. In planning regulation, the classification of a parcel edge as front (facing a public road), side (lateral boundary), or back (rear boundary) determines the applicable setback distances and thus directly constrains building footprint geometry. The algorithm operationalises principles from space syntax theory (Hillier & Hanson 1984), where the configurational relationship between private parcels and public movement channels is the primary determinant of spatial integration.

The distance-based classification uses an adaptive threshold: when no explicit threshold is provided, it is calculated as 60% of the parcel's minimum bounding rectangle dimension—a heuristic derived from the empirical observation that parcels with standard depth-to-width ratios (typically 1:1.5 to 1:3 in Turkish residential zones) have front edges within approximately half to two-thirds of their depth from the road. Corner parcels are identified when two or more edges fall within the threshold distance, triggering the special setback rules mandated by Article 18 of the Turkish Planned Areas Zoning Regulation, where corner parcels have zero side yards and two rear yards instead of the standard one-side-two configuration.

Mathematical Formulation

Adaptive Distance Threshold: $$d_{\text{thresh}} = \begin{cases} \min(w_{\text{OBB}}, h_{\text{OBB}}) \times 0.6, & \text{if OBB available} \\[4pt] \sqrt{A} \times 0.5, & \text{otherwise} \end{cases}$$ where $w_{\text{OBB}}, h_{\text{OBB}}$ are the width and height of the oriented minimum bounding box, and $A$ is the parcel area. Edge-to-Network Distance: $$d(e_i) = \min_{r \in R} \text{dist}(m_i, r)$$ where $m_i = \left(\frac{p_{1x}+p_{2x}}{2}, \frac{p_{1y}+p_{2y}}{2}\right)$ is the midpoint of edge $i$, and $R$ is the set of road network geometries. Front Edge Set: $$F = \{e_i \mid d(e_i) < d_{\text{thresh}}\}$$ Corner Parcel Condition: $$\text{is\_corner} = \begin{cases} \text{true}, & |F| \geq 2 \\ \text{false}, & \text{otherwise} \end{cases}$$ Back Edge Identification (non-corner): $$b = \underset{e_i \notin F}{\arg\max}\; \text{dist}(c_F, m_i)$$ where $c_F$ is the average midpoint of all front edges. Compass Direction of Front Facade Normal: $$\alpha_i = \text{atan2}(p_{2y} - p_{1y},\, p_{2x} - p_{1x})$$ $$\text{normal}_i = (\alpha_i + 90^\circ) \bmod 360^\circ$$ Width/Depth Ratio: $$r_{wd} = \frac{(\sum_{e_i \in F} L_i)^2}{A}$$ where $L_i$ is the length of front edge $i$ and $A$ is parcel area.

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUT_PARCELSPolygon sourceStep 1 output with empty facade fields
Yol agı katmanıINPUT_ROADSLine sourceRoad centreline network
On cephe mesafe esigiTHRESHOLDDouble0.0Front facade distance threshold (m); 0 = automatic (60% of min OBB dimension)

Outputs

FieldTypeDescription
facade_frontString (100)Comma-separated indices of front edges
facade_sideString (100)Comma-separated indices of side edges
facade_backString (100)Comma-separated indices of back edges
facade_countIntNumber of front-facing edges
is_cornerBoolTrue if parcel has 2+ front facades (corner lot)
front_directionString (20)Compass direction (N, NE, E, SE, S, SW, W, NW) or "coklu" if multiple
wd_ratioDouble (10,2)Width/depth ratio

Interpretation Guidance

Zero threshold (automatic): Recommended for most cases. The adaptive formula handles parcels from 100 m² to over 2000 m². If you observe misclassification (front edges not detected or rear edges incorrectly labelled as front), set an explicit threshold based on your local road setback regulations.

Corner parcel rules: When is_corner = True, the building footprint algorithms (Steps 3.2–3.4) apply special setback logic: two rear yards and zero side yards, in accordance with Turkish planning regulations. Verify corner detection by checking that parcels at street intersections have facade_count ≥ 2.

Road network density: Sparse road networks with large gaps between axes may cause parcels far from any road to have no front edges classified. Consider densifying the road centreline network or increasing the threshold.

References

  1. Hillier, B. & Hanson, J. (1984). The Social Logic of Space. Cambridge University Press. DOI: 10.1017/CBO9780511597237
  2. Hillier, B. (1996). Space is the Machine: A Configurational Theory of Architecture. Cambridge University Press.
  3. Batty, M. (2013). The New Science of Cities. MIT Press. DOI: 10.7551/mitpress/9399.001.0001
  4. Peponis, J., Bafna, S. & Zhang, Z. (2008). The connectivity of streets: reach and directional distance. Environment and Planning B, 35(5), 881–901. DOI: 10.1068/b33088
  5. Turner, A. (2007). From Axial to Road-Centre Lines. Environment and Planning B, 34(3), 539–555. DOI: 10.1068/b32067
  6. Porta, S., Crucitti, P. & Latora, V. (2006). The network analysis of urban streets: a primal approach. Environment and Planning B, 33(5), 705–725. DOI: 10.1068/b32045
  7. Sevtsuk, A. & Mekonnen, M. (2012). Urban network analysis. Revue Internationale de Géomatique, 22(2), 287–305.
3.1

3.1. Emsal Cozumu (FAR-Based Perimeter Block)

Step 3 3_1_emsal_ada   Class: CoverageFootprintFarAlgorithm

Theoretical Background

Floor Area Ratio (FAR)—Emsal or KAKS in Turkish planning terminology—is the primary bulk control in zoning ordinances worldwide. Unlike TAKS (Building Coverage Ratio), which controls only the ground-plane footprint, FAR regulates total built volume by relating total floor area to site area. This algorithm solves the perimeter block typology, characteristic of European urbanism from the 19th-century Gründerzeit blocks to contemporary courtyard housing (Lehnerer 2009).

The algorithm decomposes the FAR constraint into a TAKS target using the building height: $TAKS = FAR / n_{floors}$, where $n_{floors}$ is derived from the maximum height $H_{max}$ divided by estimated floor-to-floor height (typically 3.1m for residential). Building masses are then distributed along the buildable perimeter (the island polygon offset inward by the fixed setback distance), segmented into individual building blocks separated by twice the side-yard distance, and filled with procedural architectural forms (L, U, T, I, courtyard, etc.) that respect a minimum structural depth of 9m. This represents a constraint-based generative design approach (Beirao et al. 2012) where legal and structural constraints drive formal outcomes.

Mathematical Formulation

Floor Count from Building Height: $$n_f = \left\lfloor \frac{H_{\max}}{h_{\text{floor}}} \right\rfloor,\quad n_f \geq 1$$ with $h_{\text{floor}} = 3.1\text{m}$ (default). TAKS Target from FAR: $$\text{TAKS}_{\text{target}} = \min\!\left(1.0,\; \frac{\text{FAR}}{\max(n_f, 1)}\right)$$ Buildable Area (Setback Reduction): $$A_{\text{buildable}} = \text{Area}\!\left(\text{Island} \ominus d_{\text{setback}}\right)$$ where $\ominus$ denotes morphological erosion (negative buffer) by the fixed setback distance. Target Building Footprint Area: $$A_{\text{target}} = A_{\text{buildable}} \times \text{TAKS}_{\text{target}}$$ Side Yard Distance (FAR-based): $$d_{\text{side}} = f(n_f)$$ Computed by compute_far_side_yard as a function of floor count, increasing with height to maintain fire safety and daylight access. Per-Edge Building Count: $$n_i = \min\!\left( \left\lfloor \frac{L_i \cdot n_{\text{forms}}}{\sum L_j} \right\rfloor,\; \left\lfloor \frac{L_i}{5 + 2 d_{\text{side}}} \right\rfloor \right)$$ where $L_i$ is the length of valid edge $i$ and $n_{\text{forms}}$ is the requested total building count. Building Width (per segment): $$b_{\text{width}} = \frac{L_i - 2 d_{\text{side}} - (n_i - 1) \cdot 2 d_{\text{side}}}{n_i},\quad b_{\text{width}} \geq 5\text{m}$$ Calculated Building Depth: $$d_{\text{calc}} = \max\!\left(d_{\min},\; \min\!\left(\frac{A_{\text{target}}}{\sum L_{\text{eff}} \cdot 0.65},\; 35\right)\right)$$ with $d_{\min} = 9\text{m}$, maximum depth 35m, and 0.65 representing the average bbox fill ratio of procedural forms.

Parameters

ParameterIDTypeDefaultDescription
Ada katmanıINPUTPolygon sourceIsland polygons (each feature = 1 island)
Emsal (FAR) sutunuFAR_FIELDFieldFloor Area Ratio field (total construction area / island area)
Yencok yukseklik sutunuHMAX_FIELDFieldMaximum building height Hmax (m)
Yapi yaklasma mesafesiFIXED_SETBACKDouble5.0Fixed setback distance from island boundary (m)
Ortalama kat yuksekligiAVG_FLOOR_HEIGHTDouble3.1Average floor-to-floor height for Hmax → floor count
Minimum bina derinligiMIN_DEPTHDouble9.0Minimum building structural depth (m)
Form secim moduFORM_TYPEEnum00=Random mixed, 1=Specific forms
Izin verilen formlarALLOWED_FORMSEnum (multi)All12 procedural form types (Dikdortgen, L, Ters L, U, T, Ters T, Z, H, C, Avlulu, E, +)
Form sayisiNUM_FORMSInteger6Target number of buildings per island (capacity-permitting)
Rastgele tohumRANDOM_SEEDInteger0Random seed (0=fully random, >0=reproducible)

Outputs

FieldTypeDescription
(Original fields)All input island fields preserved
ada_katman_idIntIsland feature ID
form_tipiString (30)Procedural form type label
bina_noIntBuilding sequence number within the island
bina_sayisiIntTotal buildings generated for this island
kat_adediIntCalculated floor count from Hmax
min_bina_mesafesiDouble (20,2)Minimum distance between adjacent buildings = 2 × side yard
taks_hedefDouble (20,4)Target Building Coverage Ratio from FAR/floor_count
bina_alan_m2Double (20,2)Actual building footprint area (m²)

Interpretation Guidance

FAR > floor_count: When FAR exceeds the number of floors, TAKS_target is capped at 1.0 (100% coverage), meaning the entire buildable area is filled with building form. This represents a fully extruded block condition. Increase Hmax or reduce FAR to avoid this saturation.

FAR = 0: Features with FAR = 0 are skipped with a log message. This is expected for non-buildable islands (parks, infrastructure, etc.).

Fallback geometry: When the segmented perimeter approach fails to generate valid buildings (typically on very small or irregular islands), a fallback geometry scaled to the target area is created with the label "fallback". Review these features individually for manual adjustment.

Form diversity: The 12 procedural forms range from simple rectangles to complex courtyard and comb typologies. Smaller islands (w < 20m or h < 20m) are restricted to simpler forms (rectangle, L, T) to maintain structural plausibility.

References

  1. Barnett, J. (1982). An Introduction to Urban Design. Harper & Row.
  2. Lehnerer, A. (2009). Grand Urban Rules. 010 Publishers. DOI: 10.5949/mitpress/9780262514781.001.0001
  3. Beirão, J.N., Duarte, J.P. & Stouffs, R. (2012). Structuring a Generative Model for Urban Design. Proceedings of eCAADe 2012, pp. 323–332.
  4. Schumacher, P. (2009). Parametricism: A New Global Style for Architecture and Urban Design. Architectural Design, 79(4), 14–23. DOI: 10.1002/ad.912
  5. Müller, P., Wonka, P., Haegler, S., Ulmer, A. & Van Gool, L. (2006). Procedural Modeling of Buildings. ACM Transactions on Graphics, 25(3), 614–623. DOI: 10.1145/1141911.1141931
  6. Batty, M. & Longley, P. (1994). Fractal Cities: A Geometry of Form and Function. Academic Press.
  7. Duarte, J.P. (2005). A discursive grammar for customizing mass housing. Automation in Construction, 14(2), 265–275. DOI: 10.1016/j.autcon.2004.07.013
3.2

3.2. Detached Building Coverage (Ayrık Nizam)

Step 3 3_2_ayrik_nizam   Class: CoverageFootprintAlgorithm

Theoretical Background

Detached order (Ayrık Nizam, abbreviated "A nizam" in Turkish planning codes) is the most common low-to-medium density residential building arrangement, characterised by free-standing buildings separated from all parcel boundaries by mandatory setbacks on all four sides. This typology dominates suburban morphologies globally and is the default zoning category for residential areas in most Turkish municipalities under the Planned Areas Zoning Regulation (Planli Alanlar Imar Yonetmeligi).

The algorithm implements facade-conscious setback, where each parcel edge's setback distance is determined by its facade classification from Step 2: front edges receive the front setback (typically largest, for streetscape definition and traffic safety), side edges receive the lateral setback (for fire separation and daylight access), and back edges receive the rear setback (for privacy and service access). The remaining buildable polygon is then scaled to satisfy the TAKS constraint through a geometry-scaling operation that preserves centroid and orientation. The theoretical basis lies in morphological constraint satisfaction (Kropf 2017), where legal norms (setbacks, coverage ratio) interact with site geometry (parcel shape, orientation, facade classification) to produce the permissible building envelope.

Mathematical Formulation

Edge-Specific Setback Assignment: $$s(e_i) = \begin{cases} s_{\text{front}}, & i \in F \quad \text{(front edges)} \\[4pt] s_{\text{side}}, & i \in S \quad \text{(side edges)} \\[4pt] s_{\text{back}}, & i \in B \quad \text{(back edges)} \end{cases}$$ where $F, S, B$ are the facade index sets from Step 2. Buildable Polygon (Facade-Conscious Erosion): $$P_{\text{buildable}} = \text{ErodeFacade}(P, \{s(e_i)\}_{i=0}^{n-1})$$ Implemented by the fit_footprint_to_target_area engine function with adjustable edge setback arrays. Area Scaling (Uniform Buffer Fallback): $$\bar{s} = \frac{s_{\text{front}} + s_{\text{side}} + s_{\text{back}}}{3}$$ $$P'_{\text{buildable}} = P \ominus \bar{s}$$ Target Area Satisfaction: $$A_{\text{building}} = A_P \times \text{TAKS}$$ If $A(P_{\text{buildable}}) > A_{\text{building}}$, the geometry is scaled: $$P_{\text{final}} = \text{ScaleToArea}(P_{\text{buildable}},\, A_{\text{building}})$$ TAKS Utilisation (Output): $$\text{TAKS}_{\text{use}} = \frac{A_{\text{building}}}{A_P}$$

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUTPolygon sourceStep 2 output with facade fields
TAKS sutunuTAKS_FIELDFieldBuilding coverage ratio (0.00–1.00)
On bahce mesafesi sutunuSETBACK_FRONT_FIELDFieldFront setback (m)
Yan bahce mesafesi sutunuSETBACK_SIDE_FIELDFieldSide setback (m)
Arka bahce mesafesi sutunuSETBACK_BACK_FIELDFieldRear setback (m)
Cephe bilincli setbackUSE_EDGE_SETBACKBooleanTrueUse Step 2 facade data; when disabled, uniform average setback is applied

Outputs

FieldTypeDescription
(Original fields)All input parcel fields preserved
bina_alan_m2Double (20,2)Building footprint area (m²)
taks_kullanimDouble (20,4)Actual TAKS utilisation = building_area / parcel_area

Interpretation Guidance

Text fields: All numeric parameters accept TEXT-format columns (commas converted to dots automatically). This is critical for working with data exported from CAD or municipal databases where numeric fields may be stored as text.

Facade data requirement: When USE_EDGE_SETBACK = True, the algorithm requires proper facade_front, facade_side, and facade_back fields populated by Step 2. If these are missing or incomplete, disable this option or re-run Step 2.

Empty building geometries: Parcels where the setback erosion eliminates all buildable area (e.g., very narrow parcels with large setbacks) produce no output feature. These are silently skipped and should be reviewed manually.

References

  1. Conzen, M.R.G. (1969). Alnwick, Northumberland: A Study in Town-Plan Analysis. 2nd ed. Institute of British Geologists.
  2. Kropf, K. (2017). The Handbook of Urban Morphology. Wiley. DOI: 10.1002/9781118747711
  3. Martin, L. & March, L. (1972). Urban Space and Structures. Cambridge University Press.
  4. Levy, A. (1999). Urban morphology and the problem of the modern urban fabric. Urban Morphology, 3(2), 79–89. DOI: 10.51347/jum.v3i2.3880
  5. Panerai, P., Castex, J., Depaule, J.C. & Samuels, I. (2004). Urban Forms: The Death and Life of the Urban Block. Architectural Press. DOI: 10.4324/9780080472454
  6. Berghauser Pont, M. & Haupt, P. (2010). Spacematrix: Space, Density and Urban Form. NAi Publishers.
3.3

3.3. Block Building Coverage (Blok Nizam)

Step 3 3_3_blok_nizam   Class: BlockCoverageFootprintAlgorithm

Theoretical Background

Block order (Blok Nizam) is a semi-detached arrangement where buildings on adjacent parcels share a common lateral wall, eliminating the side setback between paired parcels while maintaining setbacks on all other sides. This typology represents an intermediate density between detached and fully attached forms, commonly found in 20th-century garden-city and suburban planned developments across Europe and Turkey. The regulatory logic is: internal shared edges within a paired block group have zero setback, while external (free) side edges retain the full side-yard distance, creating a 2× side-yard gap between adjacent block groups.

The algorithm introduces a novel two-layer neighbour detection: first, Step 2's facade classification identifies which edges are nominally "side" edges; second, geometric intersection testing against adjacent parcels determines which of these side edges are physically shared (touching a neighbour). Only edges that pass both tests are assigned zero setback. A graph-based row-neighbour matching algorithm uses oriented bounding box long-axis projection to distinguish genuine lateral (row) neighbours from front-to-back adjacencies, preventing false zero-setback assignments on rear boundaries—a critical safeguard against over-densification.

Mathematical Formulation

Edge Setback for Block Order: $$s(e_i) = \begin{cases} s_{\text{front}}, & i \in F \\[4pt] 0, & i \text{ shares a lateral boundary with a paired neighbour} \\[4pt] s_{\text{side}}, & i \text{ is a free external side edge} \\[4pt] s_{\text{back}}, & i \in B \quad (\text{never zero}) \end{cases}$$ Row-Neighbour Test: Given two parcels with centroids $c_1, c_2$, and the island's long-axis direction $(dx_{\text{long}}, dy_{\text{long}})$: $$\vec{v} = (c_{2x} - c_{1x},\, c_{2y} - c_{1y})$$ $$p_{\text{long}} = |\vec{v} \cdot (dx_{\text{long}},\, dy_{\text{long}})|$$ $$p_{\text{short}} = |\vec{v} \cdot (-dy_{\text{long}},\, dx_{\text{long}})|$$ The neighbour is a row neighbour (lateral) if $p_{\text{long}} > p_{\text{short}}$. Graph-Based Pairing: Parcels are sorted by projection onto the long axis: $$\text{proj}(f) = c_x \cdot dx_{\text{long}} + c_y \cdot dy_{\text{long}}$$ Adjacent parcels in the sorted order whose centroids project more strongly along the long axis than the short axis are paired as block neighbours. Inter-Block Gap Guarantee: $$\text{gap}_{\text{effective}} = s_{\text{side}}^{(A)} + s_{\text{side}}^{(B)} \geq 2 \times s_{\text{side}}$$ ensuring fire separation between independent block groups.

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUTPolygon sourceStep 2 output
Ada ID sutunuADA_ID_FIELDField (optional)Island grouping field; auto-detected if empty
TAKS sutunuTAKS_FIELDFieldBuilding coverage ratio (0.00–1.00)
On bahce mesafesi sutunuSETBACK_FRONTFieldFront setback (m)
Yan bahce mesafesi sutunuSETBACK_SIDEFieldSide setback for free external edges (m)
Arka bahce mesafesi sutunuSETBACK_BACKFieldRear setback (m)

Outputs

FieldTypeDescription
(Original fields)All input parcel fields
nizam_tipString (20)Fixed value: "blok"
ic_kenar_adetIntNumber of internal shared edges detected (0 = isolated, 1 = end-unit, 2+ = mid-block)
bina_alan_m2Double (20,2)Building footprint area (m²)
taks_kullanimDouble (20,4)Actual TAKS utilisation

Interpretation Guidance

ic_kenar_adet = 0: The parcel has no shared lateral edges with neighbours. The building behaves essentially as detached. Check that the island grouping field correctly identifies parcels belonging to the same island.

ic_kenar_adet = 2+: Mid-block parcel fully integrated into a continuous row. Both side edges are zero-setback. These parcels achieve the highest coverage utilisation.

Corner parcel handling: Corner parcels with multiple front facades have rear setbacks set to zero (building extends to rear boundary) as per Turkish planning code provisions for corner lots, which prioritise street frontage definition over rear-yard preservation.

References

  1. Panerai, P., Castex, J., Depaule, J.C. & Samuels, I. (2004). Urban Forms: The Death and Life of the Urban Block. Architectural Press. DOI: 10.4324/9780080472454
  2. Marshall, S. (2005). Streets and Patterns. Spon Press. DOI: 10.4324/9780203589397
  3. Steadman, P. (2014). Building Types and Built Forms. Troubador Publishing.
  4. Jacobs, J. (1961). The Death and Life of Great American Cities. Random House.
  5. Kropf, K. (1996). Urban tissue and the character of towns. Urban Design International, 1(3), 247–263. DOI: 10.1057/udi.1996.32
  6. Moudon, A.V. (1986). Built for Change: Neighborhood Architecture in San Francisco. MIT Press.
3.4

3.4. Attached Building Coverage (Bitişik Nizam)

Step 3 3_4_bitisik_nizam   Class: AttachedCoverageFootprintAlgorithm

Theoretical Background

Attached order (Bitişik Nizam, "B nizam") represents the densest conventional building arrangement in Turkish planning, where buildings extend to both lateral parcel boundaries, forming a continuous street wall without side yards. This typology corresponds to the row-house, townhouse, and perimeter-block morphologies characteristic of historic urban cores and 19th-century expansion districts across Europe and the Mediterranean basin. The defining regulatory characteristic is the complete absence of lateral setbacks: the building may (and typically does) extend to the full width of the parcel between side boundaries.

The algorithm reflects this with a simplified setback model containing only two non-zero distances: front setback (from the road-facing edge) and rear setback (from the back boundary). All lateral edges unconditionally receive zero setback. The corner-parcel exception mirrors that of the block-coverage algorithm: when a parcel has multiple front facades (a corner condition), the rear setback may be reduced to zero, recognising that corner buildings define two street frontages and the concept of a "rear" becomes ambiguous. The theoretical framework draws on urban block morphology as systematised by Panerai et al. (2004) and the streetscape continuity principle central to both classical urban design (Sitte 1889) and contemporary form-based codes (Parolek et al. 2008).

Mathematical Formulation

Edge Setback for Attached Order: $$s(e_i) = \begin{cases} s_{\text{front}}, & i \in F \quad \text{(front edges)} \\[4pt] 0, & i \text{ is a lateral edge (by process of elimination)} \\[4pt] s_{\text{back}} \text{ or } 0, & i \in B \quad \text{(rear edge; zero if corner parcel)} \end{cases}$$ Corner Parcel Exception: $$\text{is\_corner} \implies s_{\text{back}} = 0 \quad \text{for all rear edges}$$ Lateral Edge Identification: $$L = \{0, 1, \ldots, n-1\} \setminus (F \cup B)$$ All edges not classified as front or back are treated as lateral with zero setback. Front Facade Count (Output): $$n_{\text{front}} = |F|$$ Recorded as on_cephe_adet, indicating whether the parcel is standard (1 front) or corner (2+ fronts). Coverage Constraint: $$A_{\text{building}} = A_P \times \text{TAKS}$$ Scaled from the buildable polygon using fit_footprint_to_target_area with the attached-order edge setback vector.

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUTPolygon sourceStep 2 output
Ada ID sutunuADA_ID_FIELDField (optional)Island grouping field; used for neighbour-aware axle detection
TAKS sutunuTAKS_FIELDFieldBuilding coverage ratio (0.00–1.00)
On bahce mesafesi sutunuSETBACK_FRONTFieldFront setback (m)
Arka bahce mesafesi sutunuSETBACK_BACKFieldRear setback (m)

Outputs

FieldTypeDescription
(Original fields)All input parcel fields
nizam_tipString (20)Fixed value: "bitisik"
on_cephe_adetIntNumber of front facades (1 = standard, 2+ = corner)
bina_alan_m2Double (20,2)Building footprint area (m²)
taks_kullanimDouble (20,4)Actual TAKS utilisation

Interpretation Guidance

No side setback parameter: Unlike the detached and block algorithms, this algorithm has no side setback field. This is by design—attached-order regulations permit zero lateral setback by definition. If your local code requires a minimum side setback even in attached zones, the detached-coverage algorithm with appropriate field values should be used instead.

Corner parcel intensity: Corner parcels with zero rear setback will maximise building coverage at the expense of rear open space. This reflects actual practice in dense urban cores where corner buildings define both street frontages. If this is undesirable, consider using the block-coverage algorithm which preserves rear setbacks even for corner parcels.

References

  1. Sitte, C. (1889/1965). City Planning According to Artistic Principles. Trans. G.R. Collins & C.C. Collins. Random House.
  2. Parolek, D.G., Parolek, K. & Crawford, P.C. (2008). Form-Based Codes: A Guide for Planners, Urban Designers, Municipalities, and Developers. Wiley.
  3. Panerai, P., Castex, J., Depaule, J.C. & Samuels, I. (2004). Urban Forms: The Death and Life of the Urban Block. Architectural Press. DOI: 10.4324/9780080472454
  4. Kostof, S. (1991). The City Shaped: Urban Patterns and Meanings Through History. Bulfinch Press.
  5. Lynch, K. (1981). A Theory of Good City Form. MIT Press.
  6. Krier, L. (2009). The Architecture of Community. Island Press. DOI: 10.5822/978-1-61091-124-5
  7. Steadman, P. (2014). Building Types and Built Forms. Troubador Publishing.
3B

3B. Building Macroform Placement

Step 3B 4_1_bina_makroform   Class: BuildingMacroformAlgorithm

Theoretical Background

While the coverage footprint algorithms (3.1–3.4) produce rectangular building envelopes satisfying regulatory constraints, real buildings exhibit formal variety—L-shaped wings, courtyard voids, articulated facades—that affect microclimate, daylight access, and architectural character. The macroform placement algorithm introduces template-based form substitution: a library of user-supplied building geometries (loaded from any open QGIS polygon layer) is matched to each building envelope based on aspect ratio compatibility, then fitted within the envelope through affine transformation (translation, rotation, uniform scaling).

This approach echoes the shape grammar formalism (Stiny & Gips 1972; Stiny 1980) where a vocabulary of primitive forms is recursively transformed and composed. The algorithm performs a simplified single-step grammar application: the building envelope acts as the spatial label constraining the transformation, and the template is the shape rule's replacement geometry. Aspect ratio matching (envelope width/height vs. template bounding box width/height) serves as the primary fitness criterion, reflecting the architectural principle that building form should respond to site proportions (Alexander et al. 1977, Pattern 106: "Positive Outdoor Space").

Mathematical Formulation

Aspect Ratio of Building Envelope: $$r_{\text{bbox}} = \frac{\max(w_{\text{bbox}},\, h_{\text{bbox}})}{\min(w_{\text{bbox}},\, h_{\text{bbox}})}$$ Aspect Ratio of Template $t$: $$r_t = \frac{\max(w_t,\, h_t)}{\min(w_t,\, h_t)}$$ Compatibility Score: $$\Delta_t = |r_{\text{bbox}} - r_t|$$ Lower $\Delta_t$ indicates better aspect ratio match. Template Selection (Diversity-Weighted): Given diversity level $D \in \{\text{Low}, \text{Medium}, \text{High}\}$, a subset of $k$ best-matching templates is selected: $$k = \begin{cases} 1, & D = \text{Low} \\[4pt] \lfloor N/2 \rfloor, & D = \text{Medium} \\[4pt] N, & D = \text{High} \end{cases}$$ where $N$ is the total number of templates. A random choice is made from the best $k$ using the LCG random number generator. Area Utilisation Constraint: Template is accepted only if after fitting: $$\frac{A_{\text{fitted}}}{A_{\text{bbox}}} \leq U_{\max}$$ where $U_{\max}$ is the maximum utilisation rate (default 95%).

Parameters

ParameterIDTypeDefaultDescription
Bina taban alanı katmanıINPUT_BUILDINGSPolygon sourceStep 3.x output building footprints
Sablon bina formları katmanıTEMPLATE_LAYERVector layerAny open polygon layer in QGIS serving as template library
Yalnizca secili nesnelerSELECTED_ONLYBooleanFalseUse only selected features from the template layer
Form cesitlilik seviyesiDIVERSITYEnum1 (Medium)0=Low (best match only), 1=Medium (half-random), 2=High (fully random)
Maks alan kullanimiMAX_UTILIZATIONDouble95.0Maximum bbox area utilisation (%)
Sablonu dondurROTATE_TO_FITBooleanTrueAllow template rotation for best fit to envelope
Rastgele tohumRANDOM_SEEDInteger0Random seed

Outputs

FieldTypeDescription
(Original fields)All input building fields preserved
form_tipiString (50)Template form type (or "orijinal"/"fallback" if no match)
macroform_alan_m2Double (20,2)Placed macroform area (m²)

Interpretation Guidance

Template layer fields: Template features may optionally include form_tipi (string label), min_alan_m2, and max_alan_m2 fields to constrain which templates are considered for a given building envelope. Templates with area constraints outside the envelope's target range are skipped.

Fallback geometries: Buildings labelled "orijinal" or "fallback" in form_tipi indicate that no template could be satisfactorily fitted. This is common when the template library is small or the envelopes have extreme aspect ratios. Expand the template library or adjust the utilisation threshold.

Optional step: This algorithm is entirely optional. If not used, the rectangular building footprints from Step 3 are the final building geometry.

References

  1. Stiny, G. & Gips, J. (1972). Shape Grammars and the Generative Specification of Painting and Sculpture. Information Processing 71, pp. 1460–1465.
  2. Stiny, G. (1980). Introduction to shape and shape grammars. Environment and Planning B, 7(3), 343–351. DOI: 10.1068/b070343
  3. Alexander, C., Ishikawa, S. & Silverstein, M. (1977). A Pattern Language. Oxford University Press.
  4. Duarte, J.P. (2005). A discursive grammar for customizing mass housing. Automation in Construction, 14(2), 265–275. DOI: 10.1016/j.autcon.2004.07.013
  5. Koning, H. & Eizenberg, J. (1981). The language of the prairie: Frank Lloyd Wright's prairie houses. Environment and Planning B, 8(3), 295–323. DOI: 10.1068/b080295
  6. Mitchell, W.J. (1990). The Logic of Architecture: Design, Computation, and Cognition. MIT Press.
3C

3C. Dynamic Macroform (Procedural Building Forms)

Step 3C 4_2_dinamik_form   Class: DynamicMacroformAlgorithm

Theoretical Background

Dynamic macroform generation implements a procedural building typology with 12 distinct architectural plan configurations, each governed by structural depth constraints (minimum wing depth 7m, minimum wing width 5m) derived from practical residential construction standards. Unlike the template-based macroform (Step 3B), which requires a pre-existing library of building geometries, the dynamic approach generates forms from parametric rules, offering greater flexibility and eliminating library maintenance overhead.

The 12 form types span the morphological spectrum from simple rectangles (I-form) to complex articulations (E-form, H-form, courtyard), covering the majority of multi-family residential plan configurations documented in the architectural typology literature (Steadman 2014; Lehnerer 2009). The diversity parameter ensures that consecutive parcels receive different forms, creating the heterogeneous streetscape that characterises organic urban growth and avoids the visual monotony of purely repetitive generation. Form feasibility filtering prevents complex forms (O, H, E) from being applied to parcels below minimum dimensional thresholds (20m × 20m for courtyard and H-forms), maintaining architectural realism.

Mathematical Formulation

Rectangular Form (I) — Width Shrink: $$b_w = \max(d_{\min},\; w \cdot \xi),\quad \xi \sim U(0.80, 0.95)$$ $$x_0 = \frac{w - b_w}{2}$$ L-Form — Main Body + Wing: $$w_{\text{main}} = \max(d_{\min},\; w \cdot U(0.35, 0.55))$$ $$h_{\text{wing}} = \max(d_{\min},\; h \cdot U(0.30, 0.50))$$ Mirror condition: random choice between left-anchored and right-anchored wing. U-Form — Two Arms + Base: $$w_{\text{arm}} = \max(d_{\min},\; w \cdot U(0.25, 0.38))$$ $$h_{\text{base}} = \max(d_{\min},\; h \cdot U(0.25, 0.38))$$ Gap check: If $w - 2 w_{\text{arm}} < d_{\min}$, arms are narrowed to maintain minimum gap. Courtyard (O-Form) — Outer Shell minus Inner Void: $$w_{\text{wall}} = \max(d_{\min},\; \min(w, h) \cdot U(0.20, 0.30))$$ $$w_{\text{inner}} = w - 2 w_{\text{wall}},\quad h_{\text{inner}} = h - 2 w_{\text{wall}}$$ If $w_{\text{inner}} < 3$ or $h_{\text{inner}} < 3$, falls back to rectangular form. Bbox Fill Ratio (Output): $$\rho = \frac{A_{\text{form}}}{A_{\text{bbox}}},\quad \rho \in (0, 1]$$ Arc: The 12 forms are: dikdortgen (Rectangle), L, L_Ters (Inverted L), U, T, T_Ters (Inverted T), Z (stepped), H, C (bracket), avlu (Courtyard), E (comb), arti (Cross/+).

Parameters

ParameterIDTypeDefaultDescription
Bina taban alanı katmanıINPUT_BUILDINGSPolygon sourceStep 3 output building footprints serving as buildable bbox
Form secim moduFORM_TYPEEnum00=Random mixed, 1=Specific forms
Izin verilen formlarALLOWED_FORMSEnum (multi)All 12Multi-select: Dikdortgen, L, Ters L, U, T, Ters T, Z, H, C, Avlulu, E, +
CesitlilikDIVERSITYInteger3Consecutive parcel diversity (1–5); higher = fewer repeats
Rastgele tohumRANDOM_SEEDInteger0Random seed

Outputs

FieldTypeDescription
(Original fields)All input building fields
form_tipiString (20)Generated procedural form type label
form_alan_m2Double (20,2)Generated form area (m²)
bbox_dolulukDouble (20,4)Fill ratio: form_area / bbox_area

Interpretation Guidance

Form distribution feedback: The algorithm logs the distribution of generated form types in the Processing feedback panel. If certain forms are never generated, they may be systematically filtered out by the size-feasibility check (e.g., E-form requires large parcels >30m in at least one dimension).

Fill ratio: The bbox_doluluk field typically ranges from 0.40 (L-forms with long wings) to 0.85 (compact rectangles). Ratios below 0.30 may indicate a mismatch between building envelope and generated form; consider reducing the diversity or restricting to simpler forms.

Wing depth constraint (7m): This architectural minimum ensures all generated forms have habitable room depths. It cannot be changed without modifying MIN_WING_DEPTH and MIN_WING_WIDTH in the source code.

References

  1. Steadman, P. (2014). Building Types and Built Forms. Troubador Publishing.
  2. Lehnerer, A. (2009). Grand Urban Rules. 010 Publishers. DOI: 10.5949/mitpress/9780262514781.001.0001
  3. Müller, P., Wonka, P., Haegler, S., Ulmer, A. & Van Gool, L. (2006). Procedural Modeling of Buildings. ACM Trans. Graph., 25(3), 614–623. DOI: 10.1145/1141911.1141931
  4. Parish, Y.I.H. & Müller, P. (2001). Procedural Modeling of Cities. Proc. SIGGRAPH 2001, 301–308. DOI: 10.1145/383259.383292
  5. Schumacher, P. (2009). Parametricism: A New Global Style for Architecture and Urban Design. Architectural Design, 79(4), 14–23. DOI: 10.1002/ad.912
  6. Wonka, P., Wimmer, M., Sillion, F. & Ribarsky, W. (2003). Instant Architecture. ACM Trans. Graph., 22(3), 669–677. DOI: 10.1145/882262.882324
  7. Alexander, C. (1964). Notes on the Synthesis of Form. Harvard University Press.
04

4. Building Optimizer — Parcel-Building Compliance Check

Step 4 5_veri_kontrol   Class: BuildingOptimizerAlgorithm

Theoretical Background

Quality assurance is a critical but often under-automated phase in computational planning workflows. The Building Optimizer performs a systematic compliance audit comparing generated building geometries against parcel-level regulatory constraints, analogous to the plan-checking process in municipal planning departments. It operationalises two verification criteria: (1) density compliance—the aggregate building area within each parcel must not exceed the TAKS-mandated maximum ($A_{\text{buildings}} \leq A_{\text{parcel}} \times \text{TAKS}$), with a 1% numerical tolerance; and (2) geometric validity—building geometries must pass the GEOS isGeosValid() check, which detects self-intersections, ring orientation errors, and other topology violations that would cause downstream processing failures.

The algorithm employs a spatial index (QgsSpatialIndex) for efficient building-to-parcel matching, performing geometric intersection tests only for building-parcel pairs whose bounding boxes overlap. This $O(n \log n)$ approach scales to large datasets with thousands of parcels and buildings, and the boolean status flags (taks_ok, geom_valid) facilitate direct filtering in QGIS for targeted manual correction workflows.

Mathematical Formulation

Aggregate Building Area within Parcel: $$A_{\text{bldg}}(p) = \sum_{b \in B} \text{Area}\!\left(p \cap b\right)$$ where $B$ is the set of buildings whose bounding boxes intersect the parcel $p$. TAKS Compliance Check: $$\text{TAKS}_{\text{actual}} = \frac{A_{\text{bldg}}(p)}{A_p}$$ $$\text{taks\_ok} = \begin{cases} \text{true}, & \text{TAKS}_{\text{actual}} \leq \text{TAKS}_{\text{target}} + 0.01 \\[4pt] \text{false}, & \text{otherwise} \end{cases}$$ Geometric Validity: $$\text{geom\_valid} = \bigwedge_{b \in B(p)} \text{isGeosValid}(b)$$ Composite Status: $$\text{status} = \begin{cases} \text{"OK"}, & \text{taks\_ok} \land \text{geom\_valid} \\[4pt] \text{"TAKS\_ASIM"}, & \lnot\text{taks\_ok} \land \text{geom\_valid} \\[4pt] \text{"GEOM\_HATALI"}, & \text{taks\_ok} \land \lnot\text{geom\_valid} \\[4pt] \text{"TAKS\_ASIM,GEOM\_HATALI"}, & \lnot\text{taks\_ok} \land \lnot\text{geom\_valid} \end{cases}$$

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUT_PARCELSPolygon sourceParcel layer for spatial context
Bina katmanıINPUT_BUILDINGSPolygon sourceBuilding footprint layer to check
TAKS sutunuTAKS_FIELDField (optional)Target building coverage ratio; if empty, TAKS check is skipped (always OK)

Outputs

FieldTypeDescription
parcel_fidIntSource parcel feature ID
parcel_area_m2Double (20,2)Parcel area (m²)
building_area_m2Double (20,2)Aggregate building area within parcel (m²)
taks_actualDouble (20,4)Actual building coverage ratio
taks_targetDouble (20,4)Target TAKS from input field
taks_okBoolTAKS compliance flag
geom_validBoolAll building geometries valid flag
statusString (50)Composite status label

Interpretation Guidance

TAKS violation threshold: The 1% tolerance (taks_target + 0.01) accounts for floating-point arithmetic and minor intersection-area computation discrepancies. Adjust this in the source if stricter compliance is required.

Edge case — buildings extending beyond parcel: The intersection-based area computation (pg.intersection(bg)) means that portions of buildings outside the parcel are excluded from the area calculation. A building entirely outside its parcel contributes zero area, which may mask coverage violations. Consider pre-screening with a containment check if this is a concern.

Workflow diagnostics: This tool is a quality gate. Resolve all TAKS_ASIM and GEOM_HATALI parcels before proceeding to later steps, as invalid or oversize geometries will propagate errors through hard-surface, parking, and landscape generation.

References

  1. Longley, P.A., Goodchild, M.F., Maguire, D.J. & Rhind, D.W. (2015). Geographic Information Science and Systems. 4th ed. Wiley.
  2. O'Sullivan, D. & Unwin, D.J. (2010). Geographic Information Analysis. 2nd ed. Wiley. DOI: 10.1002/9780470549094
  3. Burrough, P.A., McDonnell, R.A. & Lloyd, C.D. (2015). Principles of Geographical Information Systems. 3rd ed. Oxford University Press.
  4. Rigaux, P., Scholl, M. & Voisard, A. (2001). Spatial Databases: With Application to GIS. Morgan Kaufmann.
  5. Worboys, M.F. & Duckham, M. (2004). GIS: A Computing Perspective. 2nd ed. CRC Press. DOI: 10.1201/9780367805777
05

5. Hard Surface Generator (Yurume Alani)

Step 5 6_hard_surface   Class: HardSurfaceAlgorithm

Theoretical Background

Hard surfaces—pathways, service yards, terraces, and access routes surrounding buildings—constitute the connective tissue of settlement morphology, mediating between private building interiors and the public realm. In Turkish planning regulation, these are classified as sert zemin (impervious/hard ground), distinct from yumusak zemin (soft/landscaped ground), with minimum ratios specified in some municipal codes for stormwater management and urban heat island mitigation.

The algorithm generates hard surfaces through a classical computational geometry pipeline: buffer (dilate) the building footprint by a specified walkway width, intersect the buffered polygon with the parcel boundary to ensure surfaces remain within the property, and subtract the original building footprint to avoid double-counting. This three-step Boolean operation pattern—buffer, intersect, difference—is a common idiom in GIS-based site analysis (Longley et al. 2015) and generates a clean topological result: a polygon (or multi-polygon) representing only the walkable area around the building, clipped to the parcel extent.

Mathematical Formulation

Hard Surface Generation: $$S_{\text{hard}} = \bigl(B \oplus d\bigr) \cap P \setminus B$$ where $B$ is the building footprint (or union of building footprints within a parcel), $d$ is the buffer distance, $\oplus$ denotes morphological dilation (buffer), $\cap$ is geometric intersection, $\setminus$ is geometric difference, and $P$ is the parcel polygon. Hard Surface Ratio: $$r_{\text{hard}} = \frac{A(S_{\text{hard}})}{A_P}$$ Total Impervious Surface (Combined with Building): $$A_{\text{impervious}} = A_B + A(S_{\text{hard}})$$ This can be compared against maximum impervious-surface ratio limits if present in local codes.

Parameters

ParameterIDTypeDefaultDescription
Bina katmanıINPUT_BUILDINGSPolygon sourceBuilding footprints from Step 3 or 3B
Parsel katmanıINPUT_PARCELSPolygon sourceParcel boundaries (Step 2 output)
Buffer mesafesiBUFFER_DISTDouble3.0Walkway width around the building (m); range 1–6

Outputs

FieldTypeDescription
parcel_fidIntSource parcel feature ID
hs_area_m2Double (20,2)Hard surface area (m²)
hs_ratioDouble (20,4)Hard surface / parcel area ratio

Interpretation Guidance

Buffer distance: 3–4m corresponds to typical residential walkway/service yard widths. Larger values (5–6m) may be appropriate for commercial or institutional buildings requiring loading zones and wider circulation.

Multi-building parcels: When multiple buildings exist within a single parcel, their geometries are combined (union) before the buffer-difference pipeline. The output is the aggregate hard surface for the entire parcel, not per-building.

Buffer segment count: The algorithm attempts 16-segment buffers first, falling back to 8-segment if the QGIS version does not support the higher parameter. This affects the smoothness (circularity) of the generated walkway corners.

References

  1. Longley, P.A., Goodchild, M.F., Maguire, D.J. & Rhind, D.W. (2015). Geographic Information Science and Systems. 4th ed. Wiley.
  2. Forman, R.T.T. (2014). Urban Ecology: Science of Cities. Cambridge University Press. DOI: 10.1017/CBO9781139030472
  3. Lehmann, S. (2016). Sustainable urbanism: towards a framework for quality and optimal density? Future Cities and Environment, 2(1), 1–14. DOI: 10.1186/s40984-016-0021-3
  4. Gehl, J. (2011). Life Between Buildings: Using Public Space. Island Press.
  5. Whyte, W.H. (1980). The Social Life of Small Urban Spaces. Conservation Foundation.
06

6. Parametric Parking Generator (Ada Uyumlu)

Step 6 7_parking_generator   Class: ParkingGeneratorAlgorithm

Theoretical Background

Parking layout design is fundamentally a geometric packing problem: given a spatial container (the parking area polygon), maximise the number of regularly-shaped stalls while respecting manoeuvring aisle widths, edge margins, and vehicle entry corridors. The algorithm employs a concentric-ring tessellation strategy: parking stalls are placed along the perimeter of the parking area polygon, oriented parallel to each edge segment. After exhausting the perimeter, the polygon is shrunk inward by one stall depth plus one aisle width, and the process repeats—forming concentric "rings" of parking until no further stalls can be placed.

This approach is structurally analogous to offset-polygon algorithms in computational geometry (Kallay 1984) and the morphological erosion used in the FAR coverage solver (Step 3.1). The vehicle entry point, when provided via the road layer, creates a 7m-wide corridor (3.5m radius from the nearest approach point on the road) that is excluded from stall placement, ensuring unimpeded vehicle access. The per-segment stall count follows a linear tessellation: $n = \lfloor L / (w + g) \rfloor$, where $L$ is the segment length, $w$ the stall width (default 2.5m, the Turkish standard), and $g$ the inter-stall gap.

Mathematical Formulation

Stalls per Edge Segment: $$n_s = \left\lfloor \frac{L}{w + g} \right\rfloor,\quad n_s \geq 0$$ where $L = \sqrt{(p_{2x} - p_{1x})^2 + (p_{2y} - p_{1y})^2}$. Stall Placement (Centre Coordinates): $$s_k = \frac{L - n_s(w + g)}{2} + \frac{w + g}{2} + k \cdot (w + g),\quad k = 0, 1, \ldots, n_s - 1$$ $$c_x = p_{1x} + \frac{dx}{L} \cdot s_k + v_x \cdot \frac{d}{2}$$ $$c_y = p_{1y} + \frac{dy}{L} \cdot s_k + v_y \cdot \frac{d}{2}$$ where $(v_x, v_y)$ is the inward-pointing unit normal (determined by containment test). Stall Geometry (Rotated Rectangle): $$R_k = \{ (x, y) \mid (x, y) = c + R_{-\theta} \cdot (\pm w/2, \pm d/2) \}$$ where $\theta = \text{atan2}(dy, dx)$ and $R_{-\theta}$ is the rotation to align with the edge direction. Concentric Ring Shrink Distance: $$s_{\text{ring}} = d + a$$ where $d$ is stall depth (5.0m default) and $a$ is aisle width (6.0m default). Entry Corridor Exclusion: $$\text{dist}(c_k, \text{corridor}) \leq 3.5\text{m} \implies \text{stall rejected}$$ where the corridor is the line segment from the nearest road point to the polygon centroid.

Parameters

ParameterIDTypeDefaultDescription
Otopark alanı katmanıINPUTPolygon sourceParking area polygons
Yol Orta CizgisiROAD_LAYERLine source (opt.)Road centreline for vehicle entry point detection
Otopark yeri genisligiSTALL_WIDTHDouble2.5Stall width (m); Turkish standard for perpendicular parking
Otopark yeri derinligiSTALL_DEPTHDouble5.0Stall depth (m)
Arac Gecis/Manevra YoluAISLE_WIDTHDouble6.0Aisle width for inner rings (m)
Stall arasi boslukSTALL_GAPDouble0.0Gap between stalls (m)
Kenar bosluguEDGE_MARGINDouble0.5Edge margin / road setback (m)

Outputs

FieldTypeDescription
area_fidIntSource parking area feature ID
stall_idIntSequential stall number within the area
stall_area_m2Double (20,2)Individual stall area (m²)

Interpretation Guidance

Stall count per area: The feedback panel reports the number of stalls generated per polygon. Divide by the required parking count (from Step 8) to determine parking adequacy.

Concentric ring behaviour: Large polygons will generate multiple rings. Each ring's stalls are placed independently; overlap detection prevents stalls from different rings from intersecting. If inner rings produce zero stalls, the polygon is too narrow for additional rings and the algorithm terminates for that area.

Entry corridor: When the road layer is provided, stalls within 3.5m of the approach line are excluded. This ensures a 7m-wide vehicle access corridor. For parking areas with multiple access points, consider placing separate polygons or using the axis-based parking generator (Helper) for finer control.

References

  1. Shoup, D. (2005). The High Cost of Free Parking. APA Planners Press. DOI: 10.4324/9781351179560
  2. ITE (Institute of Transportation Engineers). (2010). Parking Generation. 4th ed. ITE.
  3. Kallay, M. (1984). The geometry of offset curves. Computer-Aided Design, 16(6), 295–299. DOI: 10.1016/0010-4485(84)90165-9
  4. Litman, T. (2020). Parking Management Best Practices. 2nd ed. APA Planners Press. DOI: 10.4324/9781351179492
  5. Manville, M. & Shoup, D. (2005). Parking, People, and Cities. Journal of Urban Planning and Development, 131(4), 233–245. DOI: 10.1061/(ASCE)0733-9488(2005)131:4(233)
  6. Ben-Joseph, E. (2012). Rethinking a Lot: The Design and Culture of Parking. MIT Press.
07

7. Landscape Generator (Agac Yerlestirme)

Step 7 8_landscape_generator   Class: LandscapeGeneratorAlgorithm

Theoretical Background

The landscape generator implements a Poisson-disc-like point distribution within the softscape area of each parcel (total parcel area minus building footprints, optionally further restricted to designated green-space polygons). Trees are placed through rejection sampling within the axis-aligned bounding box of the available area, with each candidate point tested against two constraints: (1) it must fall within the available (non-building) area of the parcel, and (2) it must maintain a minimum distance $d_{\text{tree-tree}}$ from all previously placed trees. Each placement attempt is limited to 500 random trials per tree, after which the tree is abandoned if no valid location is found.

The tree density parameter is expressed per 500m² of available area—a unit chosen because it corresponds approximately to a 22m × 22m garden zone, a typical Turkish residential garden parcel scale. The algorithm distinguishes between trees placed in parcel-level gardens (source_type='parsel') and those placed in dedicated green/recreation areas (source_type='yesil_alan'), supporting differentiated styling and counting in later analysis stages.

Mathematical Formulation

Available Planting Area: $$A_{\text{avail}} = P \setminus \bigl(B \oplus d_{\text{tb}}\bigr)$$ where $P$ is the parcel polygon, $B$ is the union of all building footprints, and $d_{\text{tb}}$ is the minimum tree-to-building distance (default 2m). Target Tree Count: $$n_{\text{target}} = \max\!\left(1,\; \left\lfloor \rho \cdot \frac{A_{\text{avail}}}{500} \right\rfloor \right)$$ where $\rho$ is the density parameter (trees per 500m²). Rejection Sampling (per candidate point $p$): $$p \in A_{\text{avail}} \quad \land \quad \forall p_i \in P_{\text{placed}} : \text{dist}(p, p_i) \geq d_{\text{tt}}$$ where $d_{\text{tt}}$ is the minimum tree-to-tree distance (default 3m). Tree Height Assignment: $$h_i \sim U(h_{\min},\; h_{\max})$$

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUT_PARCELSPolygon sourceParcel layer for garden areas
Bina katmanıINPUT_BUILDINGSPolygon sourceBuilding layer for exclusion zones
Yesil alan katmanıINPUT_GREENPolygon source (opt.)Optional dedicated green/recreation areas
Agac yogunluguDENSITYInteger1Trees per 500m²; range 1–10
Min agac yuksekligiMIN_HEIGHTDouble1.0Minimum tree height (m)
Max agac yuksekligiMAX_HEIGHTDouble5.0Maximum tree height (m)
Min agac-bina mesafesiMIN_TREE_BUILDINGDouble2.0Minimum tree-to-building distance (m)
Min agac-agac mesafesiMIN_TREE_TREEDouble3.0Minimum tree-to-tree distance (m)

Outputs

FieldTypeDescription
source_fidIntParcel or green-area feature ID
heightDoubleAssigned tree height (m)
source_typeString (20)"parsel" (parcel garden) or "yesil_alan" (designated green area)

Interpretation Guidance

Density calibration: At density=1, a 500m² garden receives one tree (approximately 1 tree per 22m × 22m). At density=10, the same area receives 10 trees. Adjust based on local landscaping ordinances: many Turkish municipalities require 1 tree per 200–500m² of open space for new developments.

Rejection sampling failures: If the target tree count cannot be achieved (500 failed attempts per tree), the algorithm silently produces fewer trees. Review parcels with unexpectedly low tree counts—they may have highly constrained available areas or may benefit from reduced tree-to-tree distance.

References

  1. Corner, J. (1999). Recovering Landscape: Essays in Contemporary Landscape Architecture. Princeton Architectural Press.
  2. Waldheim, C. (2006). The Landscape Urbanism Reader. Princeton Architectural Press. DOI: 10.1007/1-56898-672-6
  3. McHarg, I.L. (1969). Design with Nature. Natural History Press. DOI: 10.1016/0016-7185(70)90053-8
  4. Nowak, D.J. & Dwyer, J.F. (2007). Understanding the Benefits and Costs of Urban Forest Ecosystems. In: Kuser, J.E. (ed.) Urban and Community Forestry in the Northeast. Springer, pp. 25–46. DOI: 10.1007/978-1-4020-4289-8_2
  5. Jim, C.Y. & Chen, W.Y. (2009). Ecosystem services and valuation of urban forests in China. Cities, 26(4), 187–194. DOI: 10.1016/j.cities.2009.03.003
  6. Cook, E.A. (2002). Landscape structure indices for assessing urban ecological networks. Landscape and Urban Planning, 58(2–4), 269–280. DOI: 10.1016/S0169-2046(01)00226-2
08

8. Settlement Finalizer — Statistics and Parking Adequacy

Step 8 9_settlement_finalizer   Class: SettlementFinalizerAlgorithm

Theoretical Background

The settlement finalizer synthesises the outputs of all preceding steps into quantitative planning metrics that directly inform regulatory review and decision-making. It implements what urban analytics literature terms a planning support system (PSS) function (Geertman & Stillwell 2009): the automated calculation of density indicators (TAKS, FAR/emission), population estimates, and infrastructure adequacy ratios from spatial data. The algorithm's two-output design separates aggregate statistics (attribute-only table, no geometry) from parcel-level diagnostics (spatial polygon layer with per-parcel parking adequacy), supporting both high-level reporting and targeted intervention.

Population estimation uses the standard density formula common to Turkish planning practice: total construction area divided by average dwelling size yields estimated dwelling count; dwellings multiplied by average household size yields estimated population. The default values—120m² average dwelling size and 2.77 persons per household—reflect 2026 Turkish Statistical Institute (TUIK) data and Izmir regional planning norms. The parking adequacy check applies the 2026 Turkish Parking Regulation (Otopark Yonetmeligi) standard of one parking space per dwelling unit for residential uses.

Mathematical Formulation

Total Construction Area (per parcel): $$A_{\text{total}} = A_P \times \text{KAKS},\quad \text{if KAKS} > 0$$ Estimated Dwelling Count: $$n_{\text{dwell}} = \left\lfloor \frac{A_{\text{total}}}{A_{\text{flat}}} \right\rfloor$$ where $A_{\text{flat}}$ is the average dwelling size (default 120m²). Estimated Population: $$P_{\text{est}} = n_{\text{dwell}} \times H$$ where $H$ is average household size (default 2.77). Required Parking (Residential, 2026 Regulation): $$n_{\text{park,req}} = n_{\text{dwell}}$$ Parking Adequacy: $$\text{yeterli} = n_{\text{park,exist}} \geq n_{\text{park,req}}$$ $$\Delta = n_{\text{park,exist}} - n_{\text{park,req}}$$ Mean Site TAKS: $$\overline{\text{TAKS}} = \frac{\sum A_{\text{building}}}{\sum A_{\text{parcel}}}$$

Parameters

ParameterIDTypeDefaultDescription
Parsel katmanıINPUT_PARCELSPolygon sourceParcel layer
Bina katmanıINPUT_BUILDINGSPolygon sourceBuilding footprint layer
Agac katmanıINPUT_TREESPoint source (opt.)Tree points from Step 7
Sert zemin katmanıINPUT_HARDSURFACEPolygon source (opt.)Hard surface from Step 5
Otopark stall katmanıINPUT_PARKINGPolygon source (opt.)Parking stalls from Step 6
TAKS sutunuTAKS_FIELDField (opt.)Target TAKS
KAKS/Emsal sutunuKAKS_FIELDField (opt.)FAR/Emsal for construction area calculation
Ortalama daire buyukluguFLAT_SIZEDouble120.0Average dwelling size (m²)
Ortalama hane halki buyukluguHOUSEHOLD_SIZEDouble2.77Average household size (persons)

Outputs

Output 1 — General Statistics (OUTPUT_STATS):

FieldTypeDescription
metricString (100)Statistic name (e.g., "parsel_sayisi")
valueDouble (20,2)Numeric value
unitString (20)Unit of measurement

Statistics produced: parsel_sayisi, bina_sayisi, toplam_parsel_alan_m2, toplam_bina_alan_m2, ortalama_taks, tahmini_toplam_daire, tahmini_toplam_nufus, gerekli_otopark_toplam, mevcut_otopark_toplam, otopark_fark, and optionally agac_sayisi and sert_zemin_alan_m2.

Output 2 — Parking Adequacy Report (OUTPUT_PARKING_REPORT):

FieldTypeDescription
parcel_fidIntParcel feature ID
parcel_area_m2Double (20,2)Parcel area
kaks_emsalDouble (20,4)FAR value from input
toplam_insaat_m2Double (20,2)Total construction area (m²)
tahmini_daireIntEstimated dwelling count
tahmini_nufusDouble (20,1)Estimated population
gerekli_otoparkIntRequired parking spaces
mevcut_otoparkIntExisting parking stall count
otopark_yeterliBoolParking adequacy flag
otopark_fazla_eksikIntSurplus (+) or deficit (−) parking spaces

Interpretation Guidance

Parking deficit: Sort the parking report by otopark_fazla_eksik ascending to identify parcels with the greatest parking shortfall. These parcels may need additional off-street parking areas or reduced dwelling counts.

Population density: Divide tahmini_toplam_nufus by total parcel area (in hectares) to obtain gross population density (persons/hectare). Typical Turkish residential densities range from 50 p/ha (low-density detached) to 400+ p/ha (high-density attached blocks).

KAKS-dependent calculations: If the KAKS field is empty, toplam_insaat_m2 will be zero and all derived estimates (dwellings, population, parking requirement) will also be zero. Ensure KAKS data is available for meaningful reporting.

References

  1. Geertman, S. & Stillwell, J. (eds.). (2009). Planning Support Systems: Best Practice and New Methods. Springer. DOI: 10.1007/978-1-4020-8952-7
  2. Batty, M. (2013). The New Science of Cities. MIT Press. DOI: 10.7551/mitpress/9399.001.0001
  3. Berghauser Pont, M. & Haupt, P. (2010). Spacematrix: Space, Density and Urban Form. NAi Publishers.
  4. Shoup, D. (2005). The High Cost of Free Parking. APA Planners Press. DOI: 10.4324/9781351179560
  5. Ewing, R. & Cervero, R. (2010). Travel and the Built Environment: A Meta-Analysis. Journal of the American Planning Association, 76(3), 265–294. DOI: 10.1080/01944361003766766
  6. Brail, R.K. & Klosterman, R.E. (eds.). (2001). Planning Support Systems: Integrating Geographic Information Systems, Models, and Visualization Tools. ESRI Press.
  7. TUIK (Turkish Statistical Institute). (2026). Address-Based Population Registration System Results. Ankara.
H1

H1. Urban Furniture Creator (Kentsel Donati)

Helper urban_furniture   Class: UrbanFurnitureAlgorithm

Theoretical Background

Urban furniture—benches, lighting, waste receptacles, signage, fountains, and play equipment—constitutes the "micro-architecture" of public space that significantly influences perceived quality, safety, and usability (Whyte 1980; Gehl 2011). This algorithm creates a stylised point layer pre-populated with 12 furniture types as template features (all located at the coordinate origin), each configured with SVG icon symbology, categorised rendering, and ValueMap-driven attribute forms. It functions as a digital catalogue that students and planners populate manually by copying template features to desired locations on the map.

The post-processing phase (postProcessAlgorithm) automatically applies a QgsCategorizedSymbolRenderer with SVG marker symbols and configures the attribute form to use dropdown (ValueMap) widgets for furniture type selection, hiding internal metadata fields. This represents a pedagogical design pattern for QGIS-based planning education, where the tool provides the structured framework and the user provides the site-specific placement decisions—an instance of scaffolded computational support in planning pedagogy.

Parameters

ParameterIDTypeDefaultDescription
Koordinat sistemiCRSCRSEPSG:5253CRS for the output layer (should match project)

Furniture Catalogue

IDName (Turkish)CategorySize (map units)Colour
bankOturma Bankıoturma (seating)5.0#8B7355
aydinlatmaAydınlatma Diregiaydinlatma (lighting)4.0#FFD700
cop_kovasiCöp Kovasıtemizlik (sanitation)3.5#4A5568
yangin_muslubuYangın Musluğuguvenlik (safety)4.0#E53E3E
agac_donatiSüs Ağacıpeyzaj (landscape)6.0#38A169
bilgi_panosuBilgi Panosubilgilendirme (information)4.0#4A5568
cesmeCesme / Su Ogesipeyzaj (landscape)5.0#3182CE
bisiklet_parkBisiklet Parkıulasim (transport)4.5#DD6B20
elektrik_sarjEV Sarj Istasyonuulasim (transport)4.5#38B2AC
oyun_alaniCocuk Oyun Alanırekreasyon (recreation)7.0#ED8936
arabaArabaulasim (transport)15.0#607D8B
trafik_isigiTrafik Isigiulasim (transport)3.0#333333

Outputs

FieldTypeDescription
donati_idString (30)Furniture type identifier (from catalogue)
donati_adiString (60)Furniture display name (hidden in form)
kategoriString (30)Functional category (hidden)
svg_dosyaString (255)SVG icon file path (hidden)
renkString (10)Hex colour (hidden)
boyut_mmDoubleSymbol size in map units (hidden)
aciklamaString (200)Usage description

Interpretation Guidance

Usage workflow: (1) Run the algorithm to create the template layer with 12 features at the origin. (2) Toggle editing mode (pencil icon). (3) Copy a template feature and paste at the desired location. (4) Set the donati_id field via dropdown—the SVG symbol updates automatically. This workflow eliminates manual symbology configuration and ensures consistent cartographic representation across projects.

References

  1. Whyte, W.H. (1980). The Social Life of Small Urban Spaces. Conservation Foundation.
  2. Gehl, J. (2011). Life Between Buildings: Using Public Space. Island Press.
  3. Marcus, C.C. & Francis, C. (eds.). (1997). People Places: Design Guidelines for Urban Open Space. 2nd ed. Wiley.
  4. Carmona, M., Heath, T., Oc, T. & Tiesdell, S. (2010). Public Places, Urban Spaces: The Dimensions of Urban Design. 2nd ed. Routledge. DOI: 10.4324/9780080515427
  5. Mehta, V. (2013). The Street: A Quintessential Social Public Space. Routledge. DOI: 10.4324/9780203067635
H2

H2. Stairs Generator (Merdiven)

Helper helper_stairs   Class: GenerateStairsAlgorithm

Theoretical Background

Staircase geometry in two-dimensional plan representation follows standardised dimensional conventions derived from building codes and ergonomic research. The rise-run relationship (Blondel's formula) governs comfortable stair proportions: $2h_{\text{rise}} + g_{\text{going}} \approx 63\text{cm}$ (Neufert & Neufert 2012). In plan view, a staircase is represented as a rectangular projection whose length equals the total going ($n_{\text{steps}} \times \text{tread depth}$) and whose width equals the stair flight width. The algorithm generates this rectangular projection oriented along the direction of the input line geometry, with optional hatch-pattern symbology applied in post-processing to indicate tread lines.

This computational representation abstracts the staircase to its planimetric envelope, suitable for settlement-plan scale drawings (1:200 to 1:1000) rather than detailed construction documents. The simplification is consistent with the geometric level of detail (LOD) taxonomy proposed by Biljecki et al. (2016) for 3D city models, adapted here to 2D plan representation.

Mathematical Formulation

Total Going (Stair Length): $$L = t \times n$$ where $t$ is the tread depth (basar, default 0.30m) and $n$ is the number of steps. Orientation Angle (from Line Geometry): $$\theta = \text{atan2}(p_{2y} - p_{1y},\; p_{2x} - p_{1x})$$ Envelope Corner Points: $$c_1 = s + \frac{w}{2} \cdot (-\sin\theta,\; \cos\theta)$$ $$c_2 = s - \frac{w}{2} \cdot (-\sin\theta,\; \cos\theta)$$ $$c_3 = c_2 + L \cdot (\cos\theta,\; \sin\theta)$$ $$c_4 = c_1 + L \cdot (\cos\theta,\; \sin\theta)$$ where $s$ is the start point and $w$ is the stair width. Blondel's Rule (Implied): $$2 h_{\text{rise}} + t \approx 0.63\text{m}$$

Parameters

ParameterIDTypeDefaultRangeDescription
Iz/Dogrultu KatmaniINPUTAny geometryLine or polygon indicating stair direction and start point
Merdiven GenisligiSTAIR_WIDTHDouble2.00.5+Stair flight width (m)
Basamak Derinligi/BasarSTAIR_TREADDouble0.30.15+Tread depth per step (m)
Basamak SayisiSTAIR_COUNTInteger101+Number of steps

Outputs

FieldTypeDescription
tipString (20)Fixed value: "Merdiven"
genislikDoubleStair width (m)
uzunlukDoubleTotal going length (m)
basamak_sayisiIntStep count

References

  1. Neufert, E. & Neufert, P. (2012). Architects' Data. 4th ed. Wiley-Blackwell. DOI: 10.1002/9781118255346
  2. Biljecki, F., Ledoux, H. & Stoter, J. (2016). An improved LOD specification for 3D building models. Computers, Environment and Urban Systems, 59, 25–37. DOI: 10.1016/j.compenvurbsys.2016.04.005
  3. Templer, J. (1992). The Staircase: Studies of Hazards, Falls, and Safer Design. MIT Press.
  4. Preiser, W.F.E. & Ostroff, E. (eds.). (2001). Universal Design Handbook. McGraw-Hill.
H3

H3. Ramps Generator (Rampa)

Helper helper_ramps   Class: GenerateRampsAlgorithm

Theoretical Background

Accessibility ramps are mandatory elements of inclusive urban design, governed by strict slope and dimensional requirements. International standards (ADA Standards for Accessible Design 2010; TS 12576 in Turkey) specify a maximum running slope of 1:12 (8.33%) for ramps, with a minimum clear width of 0.90m for single-direction travel and 1.50m for bidirectional. The ramp generator creates a rectangular plan projection oriented along the input geometry direction, with a gradient-fill symbol applied in post-processing to visually distinguish ramps from stairs and level surfaces.

The ramp length and width parameters, together with the implied rise, determine the effective slope. Users must independently verify that the resulting slope ratio complies with applicable accessibility codes. The algorithm provides the geometric envelope; regulatory compliance verification remains the planner's responsibility.

Mathematical Formulation

Ramp Plan Envelope: Identical corner-point construction to the stairs generator, parameterised by width $w$ and length $L$: $$c_1 = s + \frac{w}{2} \cdot (-\sin\theta,\; \cos\theta)$$ $$c_2 = s - \frac{w}{2} \cdot (-\sin\theta,\; \cos\theta)$$ $$c_3 = c_2 + L \cdot (\cos\theta,\; \sin\theta)$$ $$c_4 = c_1 + L \cdot (\cos\theta,\; \sin\theta)$$ Effective Slope (Designer's Check): $$m = \frac{h_{\text{rise}}}{L} \times 100\%$$ Accessibility threshold: $m \leq 8.33\%$ (1:12).

Parameters

ParameterIDTypeDefaultRangeDescription
Iz/Dogrultu KatmaniINPUTAny geometryLine or polygon indicating ramp direction
Rampa GenisligiRAMP_WIDTHDouble2.00.5+Ramp width (m); min 0.9m for single-direction ADA compliance
Rampa UzunluguRAMP_LENGTHDouble5.01.0+Ramp length (m)

Outputs

FieldTypeDescription
tipString (20)Fixed value: "Rampa"
genislikDoubleRamp width (m)
uzunlukDoubleRamp length (m)

References

  1. ADA (Americans with Disabilities Act). (2010). ADA Standards for Accessible Design. U.S. Department of Justice.
  2. Iwarsson, S. & Ståhl, A. (2003). Accessibility, usability and universal design. Disability and Rehabilitation, 25(2), 57–66. DOI: 10.1080/0963828021000007965
  3. Preiser, W.F.E. & Ostroff, E. (eds.). (2001). Universal Design Handbook. McGraw-Hill.
  4. Imrie, R. & Hall, P. (2001). Inclusive Design: Designing and Developing Accessible Environments. Spon Press. DOI: 10.4324/9780203362501
  5. Neufert, E. & Neufert, P. (2012). Architects' Data. 4th ed. Wiley-Blackwell. DOI: 10.1002/9781118255346
H4

H4. Pedestrian Crossing Generator (Yaya Gecidi)

Helper helper_pedestrian_crossing   Class: PedestrianCrossingAlgorithm

Theoretical Background

Pedestrian crossings are critical nodes in the multimodal transportation network, representing the formalised intersection of pedestrian desire lines with vehicular carriageways. Their geometric representation in settlement plans follows cartographic conventions that prioritise visual legibility: a transverse line (or polygon) spanning the carriageway width, rendered with a distinctive zebra-stripe or dashed pattern. The algorithm functions primarily as a symbology pass-through, copying the input line geometry to the output while applying map-unit-based dashed-line rendering that creates the characteristic crossing pattern at any scale.

The post-processing symbology applies a dashed line style (dash pattern 3:3) with a line width set in map units (metres), ensuring that the crossing symbol scales correctly with the plan—a cartographic design principle documented in Slocum et al. (2009) for thematic mapping.

Parameters

ParameterIDTypeDefaultRangeDescription
Yol CizgisiINPUTLine sourceRoad or intersection line marking the crossing
Yaya Gecidi GenisligiCROSSING_WIDTHDouble5.02.0+Crossing width for dash-line symbology (m)

Outputs

FieldTypeDescription
tipString (20)Fixed value: "Yaya Gecidi"
genislikDoubleCrossing width (m)

Interpretation Guidance

Symbology only: This algorithm does not modify geometry—it is a symbology and metadata tool. The input line is passed through unchanged. To achieve the correct visual result, ensure the output layer's symbology settings are preserved (they are applied automatically by postProcessAlgorithm).

References

  1. Slocum, T.A., McMaster, R.B., Kessler, F.C. & Howard, H.H. (2009). Thematic Cartography and Geovisualization. 3rd ed. Pearson.
  2. ITE (Institute of Transportation Engineers). (2010). Designing Walkable Urban Thoroughfares: A Context Sensitive Approach. ITE/CNU.
  3. Gehl, J. (2010). Cities for People. Island Press.
H5

H5. Parking Axis Layer (Cizgi Otopark Aks Katmani)

Helper helper_parking_axis_layer   Class: HelperParkingAxisLayerAlgorithm

Theoretical Background

Axis-based parking generation represents a sketch-and-generate paradigm where the designer draws a spatial control line (the parking axis) and a subsequent algorithm (H6) populates parking stalls along it according to configurable geometric rules. This two-step approach separates creative spatial judgment (where should parking go?) from mechanical tessellation (how should stalls be laid out?)—a design pattern that echoes the separation of concerns principle in parametric design workflows (Woodbury 2010).

This algorithm creates the scratch (in-memory) line layer with preconfigured attribute fields and ValueMap widgets, making it a configuration tool rather than a geometry generator. The output layer has no features initially; the user draws them interactively in QGIS, selecting parking angle (90°, 60°, 45°, 0°/parallel), generation side (right, left, both), stall gap, and axis offset for each drawn axis line via dropdown forms. This interactive parametric approach has roots in direct manipulation interfaces for spatial design.

Scratch Layer Schema

FieldTypeWidget TypeDescription
aks_idIntDefaultAxis identifier
park_acisiString (50)ValueMapParking angle: 0=90°, 1=60°, 2=45°, 3=0° (parallel)
olusturma_yonuString (50)ValueMapGeneration side: 0=Right, 1=Left, 2=Both
hücre_boslukDouble (10,2)DefaultInter-stall gap (m)
aks_mesafesiDouble (10,2)Range (0–5)Axis-to-stall offset distance (m)

References

  1. Woodbury, R. (2010). Elements of Parametric Design. Routledge. DOI: 10.4324/9780203800201
  2. Shoup, D. (2005). The High Cost of Free Parking. APA Planners Press. DOI: 10.4324/9781351179560
H6

H6. Axis-Based Parking Generator (Cizgi Cercevesinde Otopark)

Helper helper_axis_parking_generator   Class: HelperAxisParkingGeneratorAlgorithm

Theoretical Background

Axis-based parking generation solves the problem of directed, geometry-controlled stall placement along a user-defined control line—a common requirement when parking layout must conform to irregular site boundaries, curved roads, or specific access patterns that the polygon-based perimeter algorithm (Step 6) cannot express. The algorithm processes each axis line segment independently, computing the effective stall width and depth based on the parking angle, then placing stalls at regular intervals along the segment, offset perpendicularly by the axis distance and stall depth.

The parking angle transformation uses trigonometric decomposition derived from standard traffic engineering design guidelines (ITE 2010; Neufert & Neufert 2012). For angled parking (60° or 45°), the effective width along the axis is the stall width divided by the cosine of the complement angle: $w_{\text{eff}} = w / \cos(90° - \alpha)$. The effective depth (perpendicular projection) is $d_{\text{eff}} = d \cos(90° - \alpha) + w \sin(90° - \alpha)$, accounting for the angular geometry.

Mathematical Formulation

Parking Angle Decomposition (for $\alpha = 60^\circ$): $$\beta = 90^\circ - \alpha = 30^\circ$$ $$w_{\text{eff}} = \frac{w}{\cos\beta},\quad d_{\text{eff}} = d \cos\beta + w \sin\beta$$ For 90° (Perpendicular): $$w_{\text{eff}} = w,\quad d_{\text{eff}} = d$$ For 0° (Parallel): $$w_{\text{eff}} = d,\quad d_{\text{eff}} = w$$ (stall width and depth are swapped). Stalls per Segment: $$n = \left\lfloor \frac{L}{w_{\text{eff}} + g} \right\rfloor$$ $$s_k = \frac{L - n(w_{\text{eff}} + g)}{2} + \frac{w_{\text{eff}} + g}{2} + k(w_{\text{eff}} + g)$$ Stall Centre Offset (Right Side): $$c_x = p_{1x} + \frac{dx}{L} s_k + u_y \cdot \left(\frac{d_{\text{eff}}}{2} + a_{\text{off}}\right)$$ $$c_y = p_{1y} + \frac{dy}{L} s_k - u_x \cdot \left(\frac{d_{\text{eff}}}{2} + a_{\text{off}}\right)$$ where $(u_x, u_y)$ is the unit direction vector of the segment and $a_{\text{off}}$ is the axis offset distance.

Parameters

ParameterIDTypeDefaultDescription
Otopark Cizim AkısıINPUTLine sourceParking axis lines (typically from H5 scratch layer)
Otopark yeri genisligiSTALL_WIDTHDouble2.5Stall width (m)
Otopark yeri derinligiSTALL_DEPTHDouble5.0Stall depth (m)
Park acisiPARKING_ANGLEEnum00=90°, 1=60°, 2=45°, 3=0° (parallel)
Olusturma YonuSIDEEnum00=Right, 1=Left, 2=Both sides
Hucreler arasi boslukSTALL_GAPDouble0.0Gap between stalls (m)
Akstan uzaklikAXIS_OFFSETDouble0.0Axis offset distance (m)

Outputs

FieldTypeDescription
aks_idIntSource axis feature ID
stall_noIntSequential stall number (global counter)
alan_m2Double (20,2)Stall area (m²)

Interpretation Guidance

Feature-level vs. global parameters: Individual axis features may override the global parking angle, side, gap, and offset settings via their attribute fields. When these fields are present and contain valid values, they take precedence over the algorithm dialog values, enabling mixed-angle parking layouts within a single layer.

Stall rotation: The stall rotation angle for angled parking is computed as line_angle - β for the right side. For the left side and non-perpendicular/non-parallel angles, the rotation is recomputed to maintain consistent stall orientation relative to the axis direction.

References

  1. ITE (Institute of Transportation Engineers). (2010). Parking Generation. 4th ed. ITE.
  2. Neufert, E. & Neufert, P. (2012). Architects' Data. 4th ed. Wiley-Blackwell. DOI: 10.1002/9781118255346
  3. Shoup, D. (2005). The High Cost of Free Parking. APA Planners Press. DOI: 10.4324/9781351179560
  4. Litman, T. (2020). Parking Management Best Practices. 2nd ed. APA Planners Press. DOI: 10.4324/9781351179492
  5. Ben-Joseph, E. (2012). Rethinking a Lot: The Design and Culture of Parking. MIT Press.

Appendix A: Glossary of Turkish Planning Terms

Turkish TermAbbreviationEnglish EquivalentDescription
AdaIsland / BlockA development island bounded by roads or natural features; the primary unit of subdivision
ParselParcel / PlotAn individual cadastral unit within an island; the basic unit of property and development control
NizamBuilding Order / Zoning TypologyThe legally prescribed building arrangement on a parcel: Ayrık (detached), Blok (block/semi-detached), Bitişik (attached)
TAKSTaban Alanı KatsayısıBuilding Coverage Ratio (BCR)Building footprint area / parcel area; range 0.00–1.00
KAKS / EmsalKat Alanı KatsayısıFloor Area Ratio (FAR)Total floor area / parcel area; controls built volume
Yençok / Hmax$H_{\max}$Maximum Building HeightMaximum permitted building height in metres
Ön BahçeFront Yard / Front SetbackSetback distance from the parcel front (road-facing) edge
Yan BahçeSide Yard / Side SetbackSetback distance from parcel lateral edges
Arka BahçeRear Yard / Back SetbackSetback from the parcel rear boundary
Yapı Yaklaşma MesafesiBuilding Approach DistanceMinimum distance from the island boundary (often 5m)
CepheFacadeA parcel edge classified by its orientation relative to roads
Köşe ParselCorner ParcelA parcel with two or more front facades (at a street intersection)
Sert ZeminHard SurfaceImpervious ground: walkways, service yards, paved areas
Yaya GeçidiPedestrian CrossingA marked crossing point across a vehicular carriageway
OtoparkParking / Car ParkVehicle parking area
MerdivenStairs / StaircaseA vertical circulation element with steps
RampaRampAn inclined accessible circulation element
DonatıUrban Furniture / Street FurnitureBenches, lighting, bins, signage, and other public-space elements

Appendix B: Turkish Planning Control Framework

The algorithms in this toolset operationalise provisions from the following regulatory instruments:

Appendix C: Collected References

  1. Alexander, C. (1964). Notes on the Synthesis of Form. Harvard University Press.
  2. Alexander, C., Ishikawa, S. & Silverstein, M. (1977). A Pattern Language. Oxford University Press.
  3. Barnett, J. (1982). An Introduction to Urban Design. Harper & Row.
  4. Batty, M. (2013). The New Science of Cities. MIT Press. DOI: 10.7551/mitpress/9399.001.0001
  5. Batty, M. & Longley, P. (1994). Fractal Cities: A Geometry of Form and Function. Academic Press.
  6. Beirão, J.N., Duarte, J.P. & Stouffs, R. (2012). Structuring a Generative Model for Urban Design. Proceedings of eCAADe 2012, 323–332.
  7. Ben-Joseph, E. (2012). Rethinking a Lot: The Design and Culture of Parking. MIT Press.
  8. Berghauser Pont, M. & Haupt, P. (2010). Spacematrix: Space, Density and Urban Form. NAi Publishers.
  9. Biljecki, F., Ledoux, H. & Stoter, J. (2016). An improved LOD specification for 3D building models. Computers, Environment and Urban Systems, 59, 25–37. DOI: 10.1016/j.compenvurbsys.2016.04.005
  10. Carmona, M., Heath, T., Oc, T. & Tiesdell, S. (2010). Public Places, Urban Spaces. 2nd ed. Routledge. DOI: 10.4324/9780080515427
  11. Conzen, M.R.G. (1960/1969). Alnwick, Northumberland: A Study in Town-Plan Analysis. Institute of British Geographers. DOI: 10.2307/621094
  12. Corner, J. (1999). Recovering Landscape: Essays in Contemporary Landscape Architecture. Princeton Architectural Press.
  13. Duarte, J.P. (2005). A discursive grammar for customizing mass housing. Automation in Construction, 14(2), 265–275. DOI: 10.1016/j.autcon.2004.07.013
  14. Ewing, R. & Cervero, R. (2010). Travel and the Built Environment. Journal of the American Planning Association, 76(3), 265–294. DOI: 10.1080/01944361003766766
  15. Geertman, S. & Stillwell, J. (eds.) (2009). Planning Support Systems. Springer. DOI: 10.1007/978-1-4020-8952-7
  16. Gehl, J. (2010/2011). Cities for People / Life Between Buildings. Island Press.
  17. Hillier, B. (1996). Space is the Machine. Cambridge University Press.
  18. Hillier, B. & Hanson, J. (1984). The Social Logic of Space. Cambridge University Press. DOI: 10.1017/CBO9780511597237
  19. Imrie, R. & Hall, P. (2001). Inclusive Design. Spon Press. DOI: 10.4324/9780203362501
  20. ITE. (2010). Parking Generation. 4th ed. Institute of Transportation Engineers.
  21. Iwarsson, S. & Ståhl, A. (2003). Accessibility, usability and universal design. Disability and Rehabilitation, 25(2), 57–66. DOI: 10.1080/0963828021000007965
  22. Kallay, M. (1984). The geometry of offset curves. Computer-Aided Design, 16(6), 295–299. DOI: 10.1016/0010-4485(84)90165-9
  23. Kropf, K. (1996/2017). Urban tissue and the character of towns / The Handbook of Urban Morphology. Wiley. DOI: 10.1002/9781118747711
  24. Lehnerer, A. (2009). Grand Urban Rules. 010 Publishers. DOI: 10.5949/mitpress/9780262514781.001.0001
  25. Litman, T. (2020). Parking Management Best Practices. 2nd ed. APA Planners Press. DOI: 10.4324/9781351179492
  26. Longley, P.A. et al. (2015). Geographic Information Science and Systems. 4th ed. Wiley.
  27. Lynch, K. (1981). A Theory of Good City Form. MIT Press.
  28. Marshall, S. (2005/2009). Streets and Patterns / Cities, Design and Evolution. Routledge. DOI: 10.4324/9780203589397
  29. Martin, L. & March, L. (1972). Urban Space and Structures. Cambridge University Press.
  30. McHarg, I.L. (1969). Design with Nature. Natural History Press. DOI: 10.1016/0016-7185(70)90053-8
  31. Mitchell, W.J. (1990). The Logic of Architecture. MIT Press.
  32. Moudon, A.V. (1986/1997). Built for Change / Urban morphology as an emerging interdisciplinary field. Urban Morphology, 1(1), 3–10. DOI: 10.51347/jum.v1i1.4047
  33. Müller, P. et al. (2006). Procedural Modeling of Buildings. ACM Trans. Graph., 25(3), 614–623. DOI: 10.1145/1141911.1141931
  34. Neufert, E. & Neufert, P. (2012). Architects' Data. 4th ed. Wiley-Blackwell. DOI: 10.1002/9781118255346
  35. Oliveira, V. (2016). Urban Morphology: An Introduction. Springer. DOI: 10.1007/978-3-319-32083-0
  36. Panerai, P. et al. (2004). Urban Forms: The Death and Life of the Urban Block. Architectural Press. DOI: 10.4324/9780080472454
  37. Parish, Y.I.H. & Müller, P. (2001). Procedural Modeling of Cities. Proc. SIGGRAPH 2001, 301–308. DOI: 10.1145/383259.383292
  38. Parolek, D.G. et al. (2008). Form-Based Codes. Wiley.
  39. Preiser, W.F.E. & Ostroff, E. (eds.) (2001). Universal Design Handbook. McGraw-Hill.
  40. Schumacher, P. (2009). Parametricism. Architectural Design, 79(4), 14–23. DOI: 10.1002/ad.912
  41. Shoup, D. (2005). The High Cost of Free Parking. APA Planners Press. DOI: 10.4324/9781351179560
  42. Sitte, C. (1889/1965). City Planning According to Artistic Principles. Random House.
  43. Slocum, T.A. et al. (2009). Thematic Cartography and Geovisualization. 3rd ed. Pearson.
  44. Steadman, P. (2014). Building Types and Built Forms. Troubador Publishing.
  45. Stiny, G. (1980). Introduction to shape and shape grammars. Environment and Planning B, 7(3), 343–351. DOI: 10.1068/b070343
  46. Templer, J. (1992). The Staircase. MIT Press.
  47. Waldheim, C. (2006). The Landscape Urbanism Reader. Princeton Architectural Press. DOI: 10.1007/1-56898-672-6
  48. Whyte, W.H. (1980). The Social Life of Small Urban Spaces. Conservation Foundation.
  49. Wonka, P. et al. (2003). Instant Architecture. ACM Trans. Graph., 22(3), 669–677. DOI: 10.1145/882262.882324
  50. Woodbury, R. (2010). Elements of Parametric Design. Routledge. DOI: 10.4324/9780203800201