<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Geoportal Pilot</title>
<link>https://ol2.ddns.net/blog/</link>
<atom:link href="https://ol2.ddns.net/blog/index.xml" rel="self" type="application/rss+xml"/>
<description>Research notes, methods, findings, sources, and limitations.</description>
<generator>quarto-1.9.38</generator>
<lastBuildDate>Sat, 15 Aug 2026 21:00:00 GMT</lastBuildDate>
<item>
  <title>From article to assessment: a connected pilot</title>
  <dc:creator>Geoportal Pilot</dc:creator>
  <link>https://ol2.ddns.net/blog/posts/2026-08-16-pilot/</link>
  <description><![CDATA[ 




<section id="short-finding" class="level2">
<h2 class="anchored" data-anchor-id="short-finding">Short finding</h2>
<p>A useful geospatial publication should let readers move from interpretation to the exact source data—and let practitioners reuse a recorded source version in a structured assessment. This pilot demonstrates that connection with artificial data.</p>
<div class="callout callout-style-default callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Warning
</div>
</div>
<div class="callout-body-container callout-body">
<p>The three demonstration zones are synthetic. They are not measurements, administrative boundaries, or evidence for a real environmental decision.</p>
</div>
</div>
</section>
<section id="explore-the-territory" class="level2">
<h2 class="anchored" data-anchor-id="explore-the-territory">Explore the territory</h2>
<iframe class="story-frame" title="Interactive synthetic planning zones geostory" src="../../../assets/geostories/pilot/index.html" loading="lazy">
</iframe>
<p><a href="../../../assets/geostories/pilot/" class="button-link">Open the geostory in a separate local view</a></p>
</section>
<section id="method" class="level2">
<h2 class="anchored" data-anchor-id="method">Method</h2>
<ol type="1">
<li>Three non-overlapping polygons were written as GeoJSON in EPSG:4326.</li>
<li>Existing GDAL tools on the nettop validate the source.</li>
<li>The build creates GeoPackage and CSV/WKT distributions.</li>
<li>SHA-256 checksums identify the exact downloadable files.</li>
<li>Django registers version 1.0.0 as an immutable catalogue record.</li>
<li>A SEA project can reference that exact version and retain the relationship.</li>
</ol>
</section>
<section id="data-and-reproducibility" class="level2">
<h2 class="anchored" data-anchor-id="data-and-reproducibility">Data and reproducibility</h2>
<ul>
<li><a href="../../../data/synthetic-planning-zones.html">Resource page</a></li>
<li><a href="../../../downloads/demo-territory/demo-zones.geojson">GeoJSON</a></li>
<li><a href="../../../downloads/demo-territory/demo-zones.gpkg">GeoPackage</a></li>
<li><a href="../../../downloads/demo-territory/demo-zones.csv">CSV with WKT</a></li>
<li><a href="../../../downloads/demo-territory/SHA256SUMS">Checksums</a></li>
<li><a href="https://ol2.ddns.net/workspace/data/synthetic-planning-zones/">Dynamic catalogue record</a></li>
</ul>
</section>
<section id="limitations" class="level2">
<h2 class="anchored" data-anchor-id="limitations">Limitations</h2>
<p>The current geostory is a lightweight, dependency-free local export so the interface works before Docker is installed. When GeoLibre becomes available, the same versioned data and narrative should be recreated there and exported back into this site.</p>
<p>The pilot does not claim legal completeness, regulatory compliance, or fitness for a real SEA.</p>


</section>

 ]]></description>
  <category>pilot</category>
  <category>geospatial</category>
  <category>SEA</category>
  <guid>https://ol2.ddns.net/blog/posts/2026-08-16-pilot/</guid>
  <pubDate>Sat, 15 Aug 2026 21:00:00 GMT</pubDate>
</item>
<item>
  <title>From a legal rule to an open spatial protocol</title>
  <dc:creator>Oleksii Boiko</dc:creator>
  <link>https://ol2.ddns.net/blog/posts/2026-08-16-pzs-method/</link>
  <description><![CDATA[ 




<section id="a-rule-is-not-yet-a-procedure" class="level2">
<h2 class="anchored" data-anchor-id="a-rule-is-not-yet-a-procedure">A rule is not yet a procedure</h2>
<p>I work with geospatial analysis, but I am increasingly interested in a wider question: how do we turn a public rule into a process that people can inspect, repeat and improve?</p>
<p>A legal norm may define a distance, threshold or restriction. That still leaves a practical gap. Which data should be used? How is the shoreline represented? How is terrain measured? Can another analyst reproduce the result? If those choices remain inside a closed expert procedure, the public sees a boundary but not how it was made.</p>
<p>My proposal is modest: where a rule has measurable spatial parameters, we can publish its implementation as an <strong>open protocol</strong>—the instructions, data, algorithm, software model, metadata, tests, limitations and version history needed to examine the calculation.</p>
</section>
<section id="why-use-riparian-protective-strips" class="level2">
<h2 class="anchored" data-anchor-id="why-use-riparian-protective-strips">Why use riparian protective strips?</h2>
<p>Ukrainian water and land legislation describes minimum widths for riparian protective strips and a terrain condition under which the minimum width is doubled. The current official texts are available in the <a href="https://zakon.rada.gov.ua/go/213/95-%D0%B2%D1%80">Water Code of Ukraine</a> and the <a href="https://zakon.rada.gov.ua/go/2768-14">Land Code of Ukraine</a>.</p>
<p>This makes the subject useful for testing an open protocol: the rule contains measurable concepts, but its spatial application depends on data quality, scale, shoreline geometry and an explicit calculation procedure.</p>
<div class="callout callout-style-default callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Warning
</div>
</div>
<div class="callout-body-container callout-body">
<p>The result presented here is an analytical screening layer. It is not an official or legally established boundary, does not classify land rights, and does not replace land-management documentation or a competent authority’s decision.</p>
</div>
</div>
</section>
<section id="what-i-tested" class="level2">
<h2 class="anchored" data-anchor-id="what-i-tested">What I tested</h2>
<p>For this portal case I used the lighter of two real test datasets so the whole workflow can run on the nettop and remain practical to download:</p>
<ul>
<li>a 5.457 km² area of interest;</li>
<li>a 1 m digital elevation model;</li>
<li>42 polygonal and 10 linear water features;</li>
<li>elevations from 128 to 216 metres;</li>
<li>source CRS EPSG:5564 (UCS-2000 / Gauss-Kruger zone 6).</li>
</ul>
<p>The source water attributes do not legally classify every object. I therefore use <strong>50 metres as a visible test parameter</strong>, matching the saved example in the model, rather than claiming that 50 metres is the correct statutory width for every feature in the dataset.</p>
</section>
<section id="explore-the-result" class="level2">
<h2 class="anchored" data-anchor-id="explore-the-result">Explore the result</h2>
<iframe class="story-frame" title="Interactive riparian protective-strip method geostory" src="../../../assets/geostories/pzs-method/index.html" loading="lazy">
</iframe>
<div class="button-row">
<p><a class="button-link" href="../../../assets/geostories/pzs-method/">Open the geostory full screen</a> <a class="button-link" href="../../../data/riparian-protective-strip-method.html">Open the data and tool record</a></p>
</div>
</section>
<section id="how-the-calculation-works" class="level2">
<h2 class="anchored" data-anchor-id="how-the-calculation-works">How the calculation works</h2>
<p>The published derivative follows the method described in the source repository:</p>
<ol type="1">
<li>Convert polygonal water objects and buffered linear water objects into a common shoreline representation.</li>
<li>For every valid terrain pixel, find the nearest shoreline pixel and its elevation.</li>
<li>At the 50 m ring, compare terrain elevation with the nearest shoreline elevation.</li>
<li>Flag shoreline pixels associated with a rise greater than the tangent of 3°.</li>
<li>Keep the standard 50 m screening band everywhere and selectively extend it toward 100 m where the terrain test is triggered.</li>
<li>Publish the result as a classified GeoTIFF and as GeoPackage and GeoJSON vectors.</li>
</ol>
<p>The run produced 0.756 km² of standard-width screening zone and 0.411 km² of additional slope-triggered extension. These figures describe this input version and these parameters—not a generally applicable legal result.</p>
<p>The original QGIS model is redistributed unchanged. It uses <code>ProjectCrs</code> and <code><span class="citation" data-cites="project_folder">@project_folder</span></code>, so command-line reproduction requires a QGIS project in EPSG:5564. For the web derivative I also publish a faster array-based build script implementing the documented distance, elevation and threshold steps.</p>
</section>
<section id="from-an-expert-result-to-shared-infrastructure" class="level2">
<h2 class="anchored" data-anchor-id="from-an-expert-result-to-shared-infrastructure">From an expert result to shared infrastructure</h2>
<p>The point is not that an algorithm should replace public authority. The state still defines the norm, its legal meaning, official data requirements, procedural safeguards and routes for appeal.</p>
<p>The useful change is that the operational layer can become inspectable. Analysts can challenge a parameter. Data holders can improve the inputs. Communities can see where uncertainty enters. Developers can report a software problem. Each correction can create a new, traceable version rather than an unexplained replacement.</p>
<p>That is what I mean by an open spatial protocol: not government by software, but a shared technical object around which public reasoning can happen.</p>
</section>
<section id="data-tools-and-source" class="level2">
<h2 class="anchored" data-anchor-id="data-tools-and-source">Data, tools and source</h2>
<p>The <a href="../../../data/riparian-protective-strip-method.html">complete resource record</a> provides the original archive, individual DEM and water files, derived raster and vectors, QGIS model, theory note, metadata, checksums and reproducibility script.</p>
<p>The method’s working source, step-by-step explanations and issue history remain in the <a href="https://github.com/oleksaboiko/pzs_method">oleksaboiko/pzs_method GitHub repository</a>.</p>
<p><strong>Attribution:</strong> method, data publication and QGIS tool by Oleksii Boiko and Yuliia Maksymova, version 1.0.0, licensed under CC BY 4.0.</p>


</section>

 ]]></description>
  <category>geospatial methods</category>
  <category>open governance</category>
  <category>water</category>
  <category>QGIS</category>
  <guid>https://ol2.ddns.net/blog/posts/2026-08-16-pzs-method/</guid>
  <pubDate>Sat, 15 Aug 2026 21:00:00 GMT</pubDate>
</item>
</channel>
</rss>
