Measuring the Philippine Coastline.
An investigation into fractal dimension algorithms (Box Counting, Rigid Yardstick, and Bending Yardstick) applied to Philippine islands and lakeshores.
View Latest FindingsTheoretical Framework
From Classical Geometry to Fractional Dimensions
In classical Euclidean geometry, topological dimensions are strictly integers: a zero-dimensional point (D = 0), a one-dimensional line (D = 1), a two-dimensional plane (D = 2), and a three-dimensional volume (D = 3). When a 1D line is scaled by a factor of 1/s, it produces N = s1 copies; a 2D square produces N = s2 copies.
In 1918, Felix Hausdorff generalized dimension to non-integers: if scaling an object by 1/s yields N self-similar sub-units, its Hausdorff-Besicovitch Dimension is defined by N = (1/s)^D ⇒ D = log(N) / log(1/s).
Cantor Dust
D = log(2)/log(3) ≈ 0.6309Formed by recursively deleting the middle third of a line segment. It has zero total length yet contains an uncountably infinite number of points, living strictly between D = 0 and D = 1.
Koch Snowflake
D = log(4)/log(3) ≈ 1.2618Formed by replacing the middle third of each segment with an equilateral triangle (N = 4, s = 1/3). It encloses a finite, bounded area inside an infinitely long, nowhere-differentiable perimeter.
Sierpiński Gasket
D = log(3)/log(2) ≈ 1.5850Constructed by cutting out the central triangle from an equilateral face (N = 3, s = 1/2). It has zero area but infinite boundary complexity spanning between a line (D = 1) and a plane (D = 2).
Hilbert Curve
D = log(4)/log(2) = 2.0000A continuous, non-self-intersecting 1D path that twists infinitely to pass through every single point of a 2D unit square, achieving a space-filling dimension of exactly D = 2.0.
The Coastline Paradox in Nature
Benoit Mandelbrot (1967) observed that natural geographical boundaries (islands, bays, and lakes) behave as statistical fractals. Unlike smooth geometric shapes (D = 1.0), measuring a real coastline with a smaller yardstick reveals previously unresolved bays, coves, and promontories—causing the total measured length to diverge towards infinity. For Laguna de Bay (D ≈ 1.134), measuring the fractal dimension provides a mathematically rigorous baseline: when human infrastructure (like road viaducts) straightens the perimeter, D drops toward 1.0, directly quantifying the loss of edge-effect microhabitats.
Algorithm Implementation
Box Counting: A regular grid of box size ε covers the boundary. The algorithm counts every box intersecting the shoreline. As ε shrinks geometrically, the exponential growth of occupied boxes N(ε) yields the fractal dimension: D = - lim (log N / log ε).
Box Counting
A grid of boxes is placed over the shoreline. We count how many boxes intersect the curve. By exponentially shrinking the box size and plotting the counts logarithmically, the slope reveals the fractal dimension.
Rigid Yardstick
A virtual, rigid yardstick of length L "walks" along the shoreline from start to finish. The process is repeated with smaller yardsticks. The rate at which total steps increase reveals the dimension.
Bending Yardstick
An experimental method that allows the yardstick to bend precisely once at convex headlands. This aims to trace detail more accurately without conforming to every microscopic feature, reducing fractal inflation.
Estimator Pseudocode
The implementation remains private during the current research phase. The non-runnable pseudocode below summarizes the shared estimator workflow.
FOR each measurement scale
measure the shoreline with box, rigid-yardstick, or bending-yardstick rules
record the scale and resulting count
END FOR
fit the slope of log(count) against log(inverse scale)
report the slope as the estimated fractal dimensionComputational Cost
For a shoreline of n points fitted over K = 12 scales, all three estimators are linear in shoreline size in theory — and the measured scaling confirms it. Timing runs pin the process to one CPU core under the performance governor, discard a warm-up, and average three wall-clock runs.
| Estimator | Theoretical cost | Why | Measured exponent |
|---|---|---|---|
| Box Counting | O(K·(n + Σ N(s))) | Every segment is traced through the grid; the count of occupied cells N(s) adds work at each scale. | 1.43 ± 0.04 |
| Rigid Yardstick | O(K·n) | The walk advances monotonically, visiting each vertex once per scale. | 0.93 ± 0.01 |
| Bending Yardstick | ≤ O(K·B·n) | Stick placements partition the coast; each hinge only re-examines its own stick's span, so the budget B adds a constant, not an exponent. | 0.94 ± 0.01 |
Exponents are log-log fits of kernel time against point count on densified test rings (1k–64k points), ± standard error; raw fits in the project archive. Box counting shows mild superlinearity only under extreme densification, where its finest fitted scale tracks point spacing and the cell count grows with it — at real shoreline sizes every estimator finishes in under a millisecond.
Robustness of the Estimates
Every estimator was stress-tested against the two free choices hidden inside each method: where a walk begins (24 starting vertices, both directions) and where a grid sits (16 sub-cell placements). The parameters change where measuring starts, never how much work happens — runtime is invariant — but they do move the answer:
| Free parameter | Sweep | Effect on D (synthetics) | Effect on D (real shorelines) |
|---|---|---|---|
| Walk start & direction (both yardsticks) | 24 starts × 2 directions; open arcs in both directions | Rigid ±0.005–0.007; bending as stable or stabler | Laguna ≤ ±0.01; Taal up to 0.05 between directions |
| Grid origin (box counting) | 4×4 sub-cell offset lattice | Koch curve sd 0.013 | Laguna sd ±0.022; Taal range 0.934–1.098 |
The honest conclusion: single-placement box-counting deltas and Taal's apparent year-to-year change are the same size as these spreads, so the paper reports grid-based deltas only alongside the grid-free yardstick walks and treats Taal as an unstable reference. Laguna's near-zero result survives every placement. The bending yardstick's hinge budget saturates by K = 8 bends per stick, and K = 1 (the conservative choice) is used for headline tables.
Review of Related Literature
Our approach builds heavily on established computational methods for self-similar boundaries. The Box Counting baseline is standard, while our Rigid Yardstick implementation follows the classic digital compass walk by Shelberg, Moellering, and Lam (1982). Our experimental Bending Yardstick sits computationally between the standard walking family and the constant-deviation variable-step (CDVS) convex-hull methods pioneered by Normant and Tricot (1991).
Locally, Philippine prior art is sparse. Alova (2025) measured the Negros Island coastline at D = 1.018 using Box Counting and coarse GADM vectors. However, there are no published archipelago-wide values, nor studies utilizing precise satellite-derived masks for Philippine lakes (like Laguna de Bay or Taal Lake). This project represents the first multi-feature algorithm-comparison fractal study tailored specifically for Philippine topographies.
Data Pipeline
Dual-Lake NDWI Compositing
Sentinel-2 Harmonized Level-2A surface reflectance is processed through normalized difference water index (NDWI) thresholding. Matched March composites and a 150m morphological kernel reduce transient clouds, hyacinth mats, and tributary river branches.
Hugging Face & SAMGeo Cross-Validation
To verify our NDWI thresholds against semantic edge cases, we integrated the Hugging Face 6-band Sentinel-2 UNet++ model (giswqs/s2-water-unetplusplus-efficientnet-b4) and Meta's SAMGeo (Segment Anything for Geospatial). These deep neural networks served as an independent cross-check to confirm that turbid shallows and fishpens were not erroneously classified as land.
10-Year Longitudinal Engine
An automated pipeline streaming Cloud-Optimized GeoTIFFs (COGs) via AWS Earth Search computes historical monthly Fractal Dimensions across a 10-year baseline (2017–2026), providing an empirical baseline prior to LLRN road construction.
AWS Earth Search STAC Streaming
Direct spatial subset streaming of Sentinel-2 L2A 10m bands (B2, B3, B4, B8, B11, B12) and Scene Classification Layer (SCL) without downloading heavy .SAFE archives.
Cloud & Shadow Filtering (SCL Mask)
Pixels categorized as cloud high/medium probability, thin cirrus, or cloud shadow are flagged as invalid (NaN) to prevent atmospheric edge artifacts.
Matched-Date Temporal Median Stacking
Seven shared March observations per year are composited for both lakes. Clear-view counts are retained, and pixels never clear in a period remain nodata rather than becoming land.
Normalized Difference Water Index (NDWI)
NDWI = (Green - NIR) / (Green + NIR). Water pixels with index > 0.00 are segmented into a continuous binary lake mask.
150m Morphological Opening (River-Snipping)
A 15×15 morphological opening snips narrow inland river channels such as the Napindan River before boundary tracing.
Native Fractal Estimation Engine
Optimized C routines execute Box Counting grids, Rigid Divider Compass walks, and Bending Yardstick sweeps across 30,000+ coordinates to compute the fractal dimension (D).
Failure Modes of Existing Vision Models & Potential Contributions
Before settling on our temporal median and morphological pipeline, we evaluated several pretrained neural networks and zero-shot foundation models. Their systematic failure on tropical lacustrine environments highlighted critical gaps in current remote-sensing computer vision:
SAMGeo & Foundation Models
Meta's Segment Anything adapted for geospatial rasters (SAMGeo) oversegmented transient water hyacinth rafts (Eichhornia crassipes) into tens of thousands of isolated land patches. This fragmented the boundary into disjoint, non-manifold multi-polygons instead of a singular continuous lake boundary.
Pretrained UNet++ (Hugging Face)
Pretrained 6-band Sentinel-2 UNet++ architectures (giswqs/s2-water-unetplusplus-efficientnet-b4) trained on temperate oligotrophic water bodies failed under high turbidity. In Laguna de Bay's shallow West Bay, suspended sediment altered red/NIR reflectance, causing murky near-shore water to be misclassified as mudflats.
Single-Scene Gradient Filters
Classical edge operators (Canny, Sobel, Otsu) applied to single-date captures latched onto cloud shadow gradients and cumulus cloud fringes, artificially inflating the fractal dimension to D > 1.35—measuring atmospheric cloud complexity rather than lake topography.
Prospective Machine Learning Contributions
- Tropical Turbidity Benchmark Dataset: Releasing an open-access multi-spectral dataset of tropical, sediment-rich, and weed-infested lake perimeters with verified SCL quality masks to fine-tune geospatial vision models.
- Topological Manifold Loss Constraints: Developing loss formulations and boundary polygonizers that enforce topological closure and manifold continuity, preventing floating weed mats from creating spurious holes.
- Multi-Scale Fractal Regularization: Introducing multi-resolution fractal scaling invariance as a self-supervised geometric regularization loss for coastline segmentation networks.
Archipelago Database
Comprehensive Nationwide Shoreline Survey
Using our native C computational engine, we processed high-resolution vectorized boundaries for 122 major Philippine coastal and inland water features (108 major islands and 14 lakes) spanning Luzon, the Visayas, and Mindanao. This represents the first archipelago-wide comparative fractal baseline for Philippine geography.
Philippine Shoreline Coverage Map
Hover or click any island/lake on the map to inspectTip: Click on any island or lake row to inspect its exact coordinate polyline and live Richardson log-log power law curve.
| Feature Name | Type | Island Group | Province / Region | Vertices | Perimeter (km) | Area (km²) | D (Box) | D (Rigid) | D (Bending) |
|---|---|---|---|---|---|---|---|---|---|
| Luzon↗ | Island | Luzon | NCR / Regions I-V / CAR | 55,454 | 5,365.98 | 104,870.09 | 1.1683 | 1.1598 | 1.1329 |
| Mindanao↗ | Island | Mindanao | Regions IX-XIII / BARMM | 47,852 | 4,427.25 | 93,965.24 | 1.1386 | 1.1458 | 1.1099 |
| Palawan↗ | Island | Luzon | Palawan | 24,225 | 2,074.31 | 11,416.84 | 1.1980 | 1.1363 | 1.1266 |
| Samar↗ | Island | Visayas | Samar / Eastern Samar / Northern Samar | 15,507 | 1,331.01 | 12,435.74 | 1.1627 | 1.1694 | 1.1507 |
| Negros↗ | Island | Visayas | Negros Occidental / Oriental | 9,643 | 894.32 | 12,775.14 | 1.0869 | 1.0679 | 1.0696 |
| Panay↗ | Island | Visayas | Iloilo / Capiz / Aklan / Antique | 8,726 | 920.49 | 11,517.21 | 1.1300 | 1.1330 | 1.1006 |
| Leyte↗ | Island | Visayas | Leyte / Southern Leyte | 9,123 | 868.92 | 7,007.1 | 1.1303 | 1.1143 | 1.0963 |
| Cebu↗ | Island | Visayas | Cebu | 7,594 | 686.72 | 4,417.93 | 1.1025 | 1.0624 | 1.0602 |
| Mindoro↗ | Island | Luzon | Occidental / Oriental Mindoro | 6,160 | 677.02 | 9,817.9 | 1.0819 | 1.0872 | 1.0717 |
| Bohol↗ | Island | Visayas | Bohol | 4,950 | 413.9 | 3,769.48 | 1.1239 | 1.0941 | 1.0906 |
| Masbate↗ | Island | Luzon | Masbate | 6,446 | 624.33 | 3,204.5 | 1.1524 | 1.1434 | 1.1147 |
| Catanduanes↗ | Island | Luzon | Catanduanes | 3,801 | 320.94 | 1,443.5 | 1.1665 | 1.1442 | 1.1320 |
| Basilan↗ | Island | Mindanao | Basilan | 3,073 | 250.43 | 1,234.9 | 1.1088 | 1.0998 | 1.0920 |
| Busuanga↗ | Island | Luzon | Palawan (Calamian) | 4,318 | 367.13 | 945 | 1.2371 | 1.2257 | 1.1595 |
| Marinduque↗ | Island | Luzon | Marinduque | 2,090 | 200.47 | 899.09 | 1.1571 | 1.1364 | 1.1111 |
| Jolo↗ | Island | Mindanao | Sulu | 3,488 | 275.1 | 834.69 | 1.1282 | 1.1111 | 1.1101 |
| Dinagat↗ | Island | Mindanao | Dinagat Islands | 4,166 | 349 | 780.17 | 1.2514 | 1.2071 | 1.1732 |
| Tablas↗ | Island | Luzon | Romblon | 2,694 | 240.79 | 671.17 | 1.1784 | 1.1376 | 1.1071 |
| Polillo↗ | Island | Luzon | Quezon | 2,601 | 240.13 | 646.03 | 1.1951 | 1.1840 | 1.1554 |
| Tawi-Tawi↗ | Island | Mindanao | Tawi-Tawi | 3,376 | 268.8 | 622.34 | 1.1757 | 1.1522 | 1.1260 |
| Guimaras↗ | Island | Visayas | Guimaras | 2,652 | 206.1 | 575.3 | 1.1734 | 1.1540 | 1.1309 |
| Biliran↗ | Island | Visayas | Biliran | 1,282 | 115.29 | 497.65 | 1.1082 | 1.0655 | 1.0575 |
| Sibuyan↗ | Island | Luzon | Romblon | 937 | 101.42 | 450.76 | 1.0882 | 1.0545 | 1.0422 |
| Siargao↗ | Island | Mindanao | Surigao del Norte | 1,791 | 150.83 | 427.22 | 1.1520 | 1.1189 | 1.0976 |
| Burias↗ | Island | Luzon | Masbate | 2,562 | 226.31 | 417.56 | 1.1926 | 1.1073 | 1.0836 |
| Culion↗ | Island | Luzon | Palawan (Calamian) | 3,313 | 278.09 | 387.44 | 1.2982 | 1.3131 | 1.2076 |
| Dumaran↗ | Island | Luzon | Palawan | 2,090 | 173.28 | 327.59 | 1.2306 | 1.2337 | 1.1503 |
| Ticao↗ | Island | Luzon | Masbate | 1,395 | 136.68 | 324.5 | 1.1369 | 1.1209 | 1.0907 |
| Siquijor↗ | Island | Visayas | Siquijor | 1,070 | 101.04 | 319.46 | 1.0902 | 1.0883 | 1.0754 |
| Balabac↗ | Island | Luzon | Palawan | 1,636 | 137.73 | 315.18 | 1.2286 | 1.1943 | 1.1318 |
| Samal (IGACOS)↗ | Island | Mindanao | Davao del Norte | 1,034 | 95.4 | 251.21 | 1.0877 | 1.0491 | 1.0498 |
| Camiguin↗ | Island | Mindanao | Camiguin | 647 | 66.69 | 242.4 | 1.0538 | 1.0378 | 1.0337 |
| Panaon↗ | Island | Visayas | Southern Leyte | 715 | 82.38 | 202.67 | 1.1042 | 1.0456 | 1.0430 |
| Calayan↗ | Island | Luzon | Cagayan (Babuyan) | 776 | 74.31 | 191.46 | 1.1281 | 1.1013 | 1.0598 |
| Lubang↗ | Island | Luzon | Occidental Mindoro | 992 | 97.69 | 194.46 | 1.1266 | 1.1277 | 1.0809 |
| Alabat↗ | Island | Luzon | Quezon | 1,013 | 96.96 | 188.41 | 1.1214 | 1.0375 | 1.0452 |
| Bantayan↗ | Island | Visayas | Cebu | 709 | 65.05 | 113.95 | 1.1091 | 1.0796 | 1.0699 |
| Camotes (Pacijan/Poro)↗ | Island | Visayas | Cebu | 1,086 | 92.68 | 195.23 | 1.1231 | 1.0904 | 1.0749 |
| Romblon Island↗ | Island | Luzon | Romblon | 610 | 55.99 | 81.69 | 1.1704 | 1.0890 | 1.0776 |
| Batan Island↗ | Island | Luzon | Batanes | 611 | 57.9 | 70.93 | 1.1385 | 1.0926 | 1.0701 |
| Itbayat↗ | Island | Luzon | Batanes | 760 | 55.4 | 84.06 | 1.0878 | 1.0472 | 1.0535 |
| Sabtang↗ | Island | Luzon | Batanes | 338 | 31.32 | 33.91 | 1.1628 | 1.0834 | 1.0396 |
| Coron Island↗ | Island | Luzon | Palawan (Calamian) | 972 | 73.2 | 71.81 | 1.1812 | 1.1490 | 1.1158 |
| Linapacan↗ | Island | Luzon | Palawan | 1,691 | 140.21 | 101.82 | 1.3242 | 1.3100 | 1.1769 |
| Mapun (Cagayan de Sulu)↗ | Island | Mindanao | Tawi-Tawi | 905 | 68.15 | 69.04 | 1.1816 | 1.1948 | 1.1144 |
| Semirara↗ | Island | Visayas | Antique | 812 | 70.84 | 66.72 | 1.1598 | 1.1925 | 1.1513 |
| Cuyo↗ | Island | Luzon | Palawan | 651 | 50.83 | 57.71 | 1.1375 | 1.1382 | 1.0997 |
| Jomalig↗ | Island | Luzon | Quezon | 292 | 35.78 | 51.82 | 1.0928 | 1.0419 | 1.0374 |
| Rapu-Rapu↗ | Island | Luzon | Albay | 535 | 46.67 | 64.52 | 1.1046 | 1.0667 | 1.0628 |
| Batan Island (Albay)↗ | Island | Luzon | Albay | 1,004 | 81.43 | 88.61 | 1.1903 | 1.1803 | 1.1486 |
| Cagraray↗ | Island | Luzon | Albay | 873 | 72 | 69.81 | 1.2116 | 1.2013 | 1.1579 |
| San Miguel (Albay)↗ | Island | Luzon | Albay | 397 | 33.8 | 21.73 | 1.2237 | 1.0999 | 1.1055 |
| Homonhon↗ | Island | Visayas | Eastern Samar | 608 | 60.71 | 103.2 | 1.1272 | 1.0507 | 1.0424 |
| Panglao↗ | Island | Visayas | Bohol | 516 | 51.24 | 90.82 | 1.0862 | 1.0577 | 1.0557 |
| Mactan↗ | Island | Visayas | Cebu | 735 | 61.49 | 60.5 | 1.2110 | 1.1013 | 1.0990 |
| Olango↗ | Island | Visayas | Cebu | 524 | 43.31 | 13.28 | 1.3242 | 1.4041 | 1.2179 |
| Bucas Grande↗ | Island | Mindanao | Surigao del Norte | 1,339 | 109.82 | 125.63 | 1.2044 | 1.2210 | 1.1713 |
| Patnanungan↗ | Island | Luzon | Quezon (Polillo) | 876 | 78.32 | 93.23 | 1.1550 | 1.1664 | 1.1093 |
| Balesin↗ | Island | Luzon | Quezon | 128 | 13.32 | 4.22 | 1.1254 | 1.0818 | 1.0790 |
| Fuga Island↗ | Island | Luzon | Cagayan (Babuyan) | 521 | 52.96 | 95.3 | 1.1267 | 1.0515 | 1.0528 |
| Camiguin Norte↗ | Island | Luzon | Cagayan (Babuyan) | 753 | 75.34 | 170.12 | 1.1031 | 1.0754 | 1.0746 |
| Dalupiri Island↗ | Island | Luzon | Cagayan (Babuyan) | 522 | 45.05 | 64.56 | 1.1201 | 1.0668 | 1.0699 |
| Babuyan Claro↗ | Island | Luzon | Cagayan (Babuyan) | 425 | 39.15 | 72.4 | 1.0763 | 1.0370 | 1.0316 |
| Sibutu↗ | Island | Mindanao | Tawi-Tawi | 820 | 83.87 | 104.72 | 1.1642 | 1.0853 | 1.1101 |
| Simunul↗ | Island | Mindanao | Tawi-Tawi | 404 | 35.94 | 39.99 | 1.1110 | 1.0820 | 1.0697 |
| Sanga-Sanga↗ | Island | Mindanao | Tawi-Tawi | 532 | 42.91 | 44.58 | 1.1269 | 1.1276 | 1.1024 |
| Pangutaran↗ | Island | Mindanao | Sulu | 463 | 57.63 | 96.54 | 1.1280 | 1.1223 | 1.0914 |
| Siasi↗ | Island | Mindanao | Sulu | 598 | 47.29 | 75.5 | 1.1227 | 1.0615 | 1.0990 |
| Lugus Island↗ | Island | Mindanao | Sulu | 294 | 30.43 | 36.78 | 1.1249 | 1.0693 | 1.1025 |
| Tapul Island↗ | Island | Mindanao | Sulu | 238 | 23.42 | 32.05 | 1.1510 | 1.0325 | 1.0429 |
| Pata Island↗ | Island | Mindanao | Sulu | 487 | 35.34 | 46.48 | 1.1050 | 1.0388 | 1.0669 |
| Laminusa↗ | Island | Mindanao | Sulu | 82 | 6.65 | 1.21 | 1.1535 | 1.0774 | 1.0471 |
| Olutanga↗ | Island | Mindanao | Zamboanga Sibugay | 1,611 | 123.43 | 189.04 | 1.1859 | 1.1548 | 1.0838 |
| Sacol Island↗ | Island | Mindanao | Zamboanga del Sur | 615 | 50.12 | 37.08 | 1.1765 | 1.1372 | 1.1575 |
| Talikud Island↗ | Island | Mindanao | Davao del Norte (IGACOS) | 223 | 21.52 | 27.73 | 1.1173 | 1.0399 | 1.0358 |
| Balut Island↗ | Island | Mindanao | Davao Occidental (Sarangani) | 574 | 44.35 | 53.86 | 1.2061 | 1.1015 | 1.0851 |
| Sarangani Island↗ | Island | Mindanao | Davao Occidental | 668 | 54.49 | 35.25 | 1.2529 | 1.2160 | 1.1542 |
| Hibuson↗ | Island | Mindanao | Dinagat Islands | 141 | 15.91 | 10.15 | 1.1735 | 1.0698 | 1.0581 |
| Boracay↗ | Island | Visayas | Aklan | 252 | 22.98 | 9.99 | 1.2313 | 1.0907 | 1.1249 |
| Sicogon↗ | Island | Visayas | Iloilo | 185 | 15.71 | 10.7 | 1.1333 | 1.0717 | 1.0614 |
| Gigantes Norte↗ | Island | Visayas | Iloilo | 100 | 9.71 | 4.48 | 1.0863 | 1.0307 | 1.0222 |
| Gigantes Sur↗ | Island | Visayas | Iloilo | 154 | 14.29 | 5.3 | 1.1805 | 1.0876 | 1.0589 |
| Pan de Azucar↗ | Island | Visayas | Iloilo | 344 | 28.54 | 16.27 | 1.2173 | 1.1813 | 1.0851 |
| Cabilao↗ | Island | Visayas | Bohol | 110 | 11.82 | 7.2 | 1.0329 | 1.0349 | 1.0337 |
| Lapinig↗ | Island | Visayas | Bohol | 933 | 74.34 | 45.05 | 1.2751 | 1.2315 | 1.1809 |
| Ponson (Camotes)↗ | Island | Visayas | Cebu | 422 | 32.16 | 33.74 | 1.1020 | 1.0311 | 1.0419 |
| Capul↗ | Island | Visayas | Northern Samar | 301 | 30.03 | 34.03 | 1.1275 | 1.0244 | 1.0294 |
| Batag↗ | Island | Visayas | Northern Samar | 546 | 44.33 | 32.13 | 1.2158 | 1.1362 | 1.1507 |
| Maripipi↗ | Island | Visayas | Biliran | 209 | 21.61 | 28.99 | 1.0724 | 1.0422 | 1.0278 |
| Suluan↗ | Island | Visayas | Eastern Samar | 130 | 11.29 | 4.65 | 1.1122 | 1.0770 | 1.0817 |
| Manicani↗ | Island | Visayas | Eastern Samar | 187 | 14.99 | 11.3 | 1.1241 | 1.0475 | 1.0456 |
| Carabao (Hambil)↗ | Island | Visayas | Romblon | 277 | 24.21 | 28.06 | 1.0884 | 1.0445 | 1.0437 |
| Banton↗ | Island | Luzon | Romblon | 320 | 28.68 | 28.6 | 1.2098 | 1.1085 | 1.0524 |
| Simara↗ | Island | Luzon | Romblon | 266 | 25.43 | 20.4 | 1.1867 | 1.0960 | 1.0477 |
| Maestro de Campo (Sibale)↗ | Island | Luzon | Romblon | 351 | 30.27 | 20.38 | 1.2621 | 1.2103 | 1.0939 |
| Ambil Island↗ | Island | Luzon | Occidental Mindoro (Lubang) | 350 | 31.71 | 28.85 | 1.1683 | 1.1773 | 1.0758 |
| Golo Island↗ | Island | Luzon | Occidental Mindoro | 387 | 35.36 | 21.09 | 1.2227 | 1.0434 | 1.0378 |
| Cabra Island↗ | Island | Luzon | Occidental Mindoro | 141 | 12.83 | 9.57 | 1.1167 | 1.0179 | 1.0199 |
| Caluya↗ | Island | Visayas | Antique | 257 | 23.33 | 24.33 | 1.1227 | 1.0529 | 1.0572 |
| Agutaya↗ | Island | Luzon | Palawan (Cuyo) | 214 | 17.64 | 14.92 | 1.1126 | 1.0275 | 1.0571 |
| Bugsuk↗ | Island | Luzon | Palawan | 553 | 55.46 | 122.37 | 1.1229 | 1.0612 | 1.0765 |
| Pandanan↗ | Island | Luzon | Palawan | 524 | 42.59 | 39.91 | 1.1543 | 1.1180 | 1.0667 |
| Cagayancillo↗ | Island | Luzon | Palawan | 388 | 31.49 | 7.7 | 1.2475 | 1.1606 | 1.0986 |
| Lahuy Island↗ | Island | Luzon | Camarines Sur (Caramoan) | 408 | 35.24 | 17.96 | 1.2558 | 1.2018 | 1.1535 |
| Quinalasag↗ | Island | Luzon | Camarines Sur | 806 | 65.8 | 31.96 | 1.3560 | 1.3101 | 1.1869 |
| Ibuhos Island↗ | Island | Luzon | Batanes | 105 | 11.03 | 6.18 | 1.0781 | 1.0361 | 1.0258 |
| Dequey Island↗ | Island | Luzon | Batanes | 47 | 4.15 | 0.82 | 1.0803 | 1.0508 | 1.0406 |
| Mavulis (Y'Ami)↗ | Island | Luzon | Batanes (Northernmost PH) | 68 | 5.72 | 1.31 | 1.1156 | 1.0477 | 1.0376 |
| Laguna de Bay↗ | Lake | Luzon | Laguna / Rizal | 11,799 | 301.1 | 790.91 | 1.1307 | 1.1235 | 1.1022 |
| Taal Lake↗ | Lake | Luzon | Batangas | 6,247 | 163.65 | 213.61 | 1.1698 | 1.1594 | 1.1553 |
| Lake Lanao↗ | Lake | Mindanao | Lanao del Sur | 9,727 | 123.64 | 342.71 | 1.0976 | 1.0954 | 1.0609 |
| Lake Mainit↗ | Lake | Mindanao | Agusan del Norte / Surigao del Norte | 7,578 | 84.18 | 138.86 | 1.0921 | 1.0995 | 1.0841 |
| Lake Naujan↗ | Lake | Luzon | Oriental Mindoro | 3,930 | 55.25 | 80.8 | 1.0964 | 1.1084 | 1.0776 |
| Lake Buluan↗ | Lake | Mindanao | Maguindanao / Sultan Kudarat | 1,944 | 58.21 | 71.37 | 1.1500 | 1.1336 | 1.0926 |
| Lake Bato↗ | Lake | Luzon | Camarines Sur | 2,026 | 37.7 | 25.14 | 1.1488 | 1.1882 | 1.1021 |
| Lake Buhi↗ | Lake | Luzon | Camarines Sur | 1,770 | 25.94 | 16.56 | 1.1768 | 1.1530 | 1.0866 |
| Lake Sebu↗ | Lake | Mindanao | South Cotabato | 392 | 125.16 | 818.41 | 1.1001 | 1.0374 | 1.0303 |
| Lake Caliraya↗ | Lake | Luzon | Laguna | 16,973 | 112.48 | 9.78 | 1.4375 | 1.4113 | 1.3146 |
| Lake Danao (Leyte)↗ | Lake | Visayas | Leyte | 312 | 7.3 | 1.4 | 1.1467 | 1.0748 | 1.0808 |
| Lake Paoay↗ | Lake | Luzon | Ilocos Norte | 1,236 | 15.28 | 3.15 | 1.1473 | 1.2119 | 1.1609 |
| Lake Wood↗ | Lake | Mindanao | Zamboanga del Sur | 721 | 14.22 | 7.23 | 1.0751 | 1.1012 | 1.0810 |
| Lake Balinsasayao↗ | Lake | Visayas | Negros Oriental | 75 | 47.94 | 78.75 | 1.1215 | 1.1019 | 1.0644 |
Flooded Rias & Karst Inlets
The highest fractal complexity occurs in dendritic flooded river valleys like Lake Caliraya (D = 1.4375) and Pantabangan Reservoir (D = 1.3528), as well as karst island chains like Quinalasag (D = 1.3560), Linapacan (D = 1.3242) and Culion (D = 1.2982).
Archipelagic Scale
Large landmasses display moderate, robust fractal dimensions: Luzon (D = 1.1683, 5,366 km perimeter), Samar (D = 1.1627), Mindanao (D = 1.1386), and Negros (D = 1.0869), capturing multi-scale coastal bays.
Volcanic Cones & Graben Lakes
The lowest fractal dimensions belong to volcanic islands like Cabilao (D = 1.0329) and Camiguin (D = 1.0538) and deep graben basins like Lake Wood (D = 1.0751) and Lake Mainit (D = 1.0921), which naturally approach Euclidean circles.

Fractal complexity ranking across 122 Philippine shorelines (108 Major Islands & 14 Inland Lakes). Coral: Major Islands. Emerald: Inland Lakes. Reference lines denote Euclidean boundary (D = 1.0), national mean (D = 1.1545), and the mathematical Koch Snowflake (D = 1.2618).
Findings
Multi-Temporal Composite Verification
Single-date satellite scenes in the tropics suffer from moving cumulus clouds that can fragment extracted water boundaries. Matched-date temporal compositing reduces this interference, while never-clear coverage is retained as a limitation.

Laguna de Bay, March 2026 (Sentinel-2B), with the traced boundary overlaid. Reading notes: the boundary follows the urban West Bay at left — the stretch where LLRN Phase I hugs the shore — wraps around forested Talim Island in the center, and continues into the eastern bay. The straight feature crossing the lower-left shore is the Napindan Channel crossing, whose narrow channel is removed by the 150 m rule. Faint grids in the West Bay water are fishpen structures, which read as water. Residual clouds at upper right are excluded rather than traced.

March 2026 median composite of seven clear observations. Reading notes: black holes are pixels never cloud-free during the month — mostly over the eastern ridges and a persistent cloud cluster east of Talim Island — and are treated as unknown rather than land. Sediment plumes are visible along the shallow western shore. Because every pixel is the middle of seven observations, no single passing cloud or floating vegetation mat survives into the boundary the estimators measure.
LLRN Shoreline Monitoring
Measuring the Ecological Impact of the Laguna Lakeshore Road Network
Laguna de Bay is a vital ecological and economic resource in the Philippines. The Laguna Lakeshore Road Network (LLRN) may alter the lake margin, but shoreline geometry alone cannot establish hydrologic, ecological, or public-health effects.
Harmonized Sentinel-2 imagery from seven March dates per year was processed using NDWI, cloud masking, temporal median compositing, and the same 150m morphology rule for Laguna and Taal. Never-clear pixels remain nodata. FD is computed in open mode only on shoreline arcs clear in both periods and geographically matched within 150m.
On the 38.3km common-clear Laguna March arc, observed changes were +0.0003 for box, +0.0016 for rigid, and +0.0011 for bending. A January–March sensitivity analysis was also near zero. The fully clear Q1 LLRN corridor remained small and mixed: +0.0061 for box, +0.0034 for rigid, and -0.0021 for bending.
No consistent localized LLRN-associated shoreline change was detected at Sentinel-2 resolution. These measurements form a baseline for later construction observations. A disease analysis also requires population-normalized incidence and a direct hydrologic measure.
Mosquito-Borne Disease Data Readiness
This is an evidence-readiness matrix, not an incidence map: it shows why a shoreline–disease correlation cannot yet be estimated without inventing precision the public records do not provide.
| Disease | Public record found | Spatial match to shoreline FD | Current inference |
|---|---|---|---|
| Dengue | ● Partial Laguna municipality counts (2012–2021); Batangas barangay records released for 2023–2026. | Not yet matched to lake segments, population, or dates. | Most promising; needs a compiled, population-normalized time series. |
| Malaria | ● Aggregate FHSIS historical reporting, not a shoreline-scale series. | Insufficient. | Do not test or claim an association. |
| Chikungunya | ● No usable local series FHSIS does not collect it. | Unavailable. | Do not test or claim an association. |
| Japanese encephalitis | ● No usable local series FHSIS does not collect it. | Unavailable. | Do not test or claim an association. |
| Zika | ● No locality time series located | Unavailable. | Do not test or claim an association. |
Sources: DOH eFOI Laguna dengue municipality request; DOH eFOI Batangas dengue release; and DOH eFOI FHSIS vector-disease response. A valid test still requires case counts, population denominators, time lags, and a direct water-stagnation measure.
Shoreline Geometry Analysis

Open shoreline arcs kept at least 100 m from unknown pixels in both periods. Cyan: 2025. Orange: 2026. March and January-March windows are reported separately. Robustness sweeps (24 start points, both walking directions, 16 grid placements) bound how much of each reported change can be produced by the measuring tools alone.

The full LLRN Phase I-adjacent corridor was clear in both January-March composites. Its three estimators changed only slightly and did not agree in direction; the corridor's own start-point and grid-placement spreads (see the robustness sweeps) are of the same order as the changes, so no construction signal is claimed.