<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://epifanio.github.io/guide/blog</id>
    <title>FastGIS Blog</title>
    <updated>2026-05-01T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://epifanio.github.io/guide/blog"/>
    <subtitle>FastGIS Blog</subtitle>
    <icon>https://epifanio.github.io/guide/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Introducing FastGIS: GRASS GIS, finally in your browser]]></title>
        <id>https://epifanio.github.io/guide/blog/introducing-fastgis</id>
        <link href="https://epifanio.github.io/guide/blog/introducing-fastgis"/>
        <updated>2026-05-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you've ever used GRASS GIS, you know it's one of the most powerful spatial analysis platforms ever built. Decades of algorithms, impeccable accuracy, a passionate community. You also know that getting it installed, configured, and running on a new machine can be a bit of an adventure — and sharing your work with a colleague who doesn't have GRASS set up? That's a whole afternoon gone.]]></summary>
        <content type="html"><![CDATA[<p>If you've ever used <strong>GRASS GIS</strong>, you know it's one of the most powerful spatial analysis platforms ever built. Decades of algorithms, impeccable accuracy, a passionate community. You also know that getting it installed, configured, and running on a new machine can be a bit of an adventure — and sharing your work with a colleague who doesn't have GRASS set up? That's a whole afternoon gone.</p>
<p><strong>FastGIS</strong> started as a personal itch-scratcher for exactly that problem.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-idea">The idea<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#the-idea" class="hash-link" aria-label="Direct link to The idea" title="Direct link to The idea" translate="no">​</a></h2>
<p>The core premise is simple: what if you could open a browser tab, point it at a GRASS environment, run <code>r.slope.aspect</code>, and see the result draped over a 3-D globe — without installing anything locally?</p>
<p>That's it. No desktop app, no remote desktop, no "works on my machine". Just a URL and an API token.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-looks-like-in-practice">What it looks like in practice<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#what-it-looks-like-in-practice" class="hash-link" aria-label="Direct link to What it looks like in practice" title="Direct link to What it looks like in practice" translate="no">​</a></h2>
<p>You open the GRASS Runner, connect to a server running your GRASS database, pick a location and mapset, and you're in. From there you can:</p>
<ul>
<li class=""><strong>Run any GRASS module</strong> through a generated form — type <code>r.watershed</code>, hit Load, fill in the fields, and watch the output stream back live in a terminal panel</li>
<li class=""><strong>See results immediately</strong> on a CesiumJS 3-D globe — raster outputs appear as WMS layers the moment a module finishes</li>
<li class=""><strong>Draw directly on the map</strong> — set the computational region by dragging a bounding box, trace an elevation profile across a ridge, draw a histogram bounding box around a glacier</li>
<li class=""><strong>Manage layers</strong> like you'd expect — drag to reorder, toggle visibility, adjust opacity, expand a legend, zoom to extent</li>
</ul>
<p>The whole thing runs in the browser. Your GRASS data stays on the server. Your laptop just needs a web connection.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-few-things-were-especially-happy-with">A few things we're especially happy with<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#a-few-things-were-especially-happy-with" class="hash-link" aria-label="Direct link to A few things we're especially happy with" title="Direct link to A few things we're especially happy with" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-profile-tool">The profile tool<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#the-profile-tool" class="hash-link" aria-label="Direct link to The profile tool" title="Direct link to The profile tool" translate="no">​</a></h3>
<p>Click the profile button, draw a line across a mountain range by clicking waypoints on the globe, double-click to finish — and a chart of the elevation profile appears below the map in about a second. The transect line stays on the globe while you work. You can change the input raster and re-run without redrawing the line.</p>
<p>It's powered by <code>r.profile</code> under the hood, but from the user's perspective it's just "draw a line, get a chart."</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-persistence">Session persistence<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#session-persistence" class="hash-link" aria-label="Direct link to Session persistence" title="Direct link to Session persistence" translate="no">​</a></h3>
<p>This one took some thought to get right. When you navigate away from the page and come back, everything is where you left it — the camera angle, the layers, the drawn transect, the histogram chart. No "please re-run your analysis." We call it autosave, and it's invisible by design.</p>
<p>You can also save named workspaces and load them on a different device or share them with a colleague. The state is stored server-side so it survives browser restarts.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-layer-manager">The layer manager<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#the-layer-manager" class="hash-link" aria-label="Direct link to The layer manager" title="Direct link to The layer manager" translate="no">​</a></h3>
<p>Layers have drag-and-drop reordering, inline opacity sliders, vector style controls (colour, line width, transparency), WMS legend panels, and group support. It sounds like a small thing, but being able to organise a dozen layers without hunting through a settings menu is genuinely nice to use.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-stack-in-brief">The stack, in brief<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#the-stack-in-brief" class="hash-link" aria-label="Direct link to The stack, in brief" title="Direct link to The stack, in brief" translate="no">​</a></h2>
<p>FastGIS is built on <a href="https://fastapi.tiangolo.com/" target="_blank" rel="noopener noreferrer" class="">FastAPI</a> at the back end, which proxies GRASS module execution and streams output over Server-Sent Events. Map tiles come from <a href="https://mapserver.org/" target="_blank" rel="noopener noreferrer" class="">MapServer</a> via WMS/WFS. The front end is plain ES modules — no build step, no framework — around a <a href="https://cesium.com/platform/cesiumjs/" target="_blank" rel="noopener noreferrer" class="">CesiumJS</a> globe. It's deliberately lightweight.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's next<a href="https://epifanio.github.io/guide/blog/introducing-fastgis#whats-next" class="hash-link" aria-label="Direct link to What's next" title="Direct link to What's next" translate="no">​</a></h2>
<p>There's a lot more on the list. The identifier tool (click the map, get <code>r.what</code>/<code>v.what</code> values for all active layers). Better session UI. More robust environment management. And eventually, letting users draw and export vector data directly from the browser.</p>
<p>But the core loop — connect, run a module, see the result on a map, save your work — is solid and in use.</p>
<p>If you want to try it, the <a class="" href="https://epifanio.github.io/guide/docs/getting-started/quick-start">Quick Start</a> guide gets you running in a few minutes. If you find a bug or have an idea, <a href="https://github.com/epifanio/FastGIS/issues" target="_blank" rel="noopener noreferrer" class="">open an issue</a>. And if you know someone who spends too much time wishing GRASS had a web UI, send them the link.</p>]]></content>
        <author>
            <name>Massimo Di Stefano</name>
            <uri>https://github.com/epifanio</uri>
        </author>
        <category label="Announcement" term="Announcement"/>
        <category label="GRASS GIS" term="GRASS GIS"/>
        <category label="Web GIS" term="Web GIS"/>
    </entry>
</feed>