GOAT

322 hectares of buildable farmland around Schwabach — found with open data

Towns and cities want more housing without losing more farmland — and the two keep colliding. As an experiment, Gokul Gopan (GIS Analyst at Plan4Better) used only open data to map the farmland around Schwabach that looks ready for housing on paper: near transit, next to existing homes, the right size and shape. The result — 322 hectares near rail, 842 near bus — and a workflow any German municipality can reuse.
By
Gokul Gopan
June 16, 2026
322 hectares of buildable farmland around Schwabach — found with open data

Bavaria has a housing problem. It also has a lot of farmland people would like to keep as farmland. These two facts are in constant tension in small cities like Schwabach — a city of about 40,000 people near Nürnberg, surrounded by fields and forest on most sides.

The usual response to this tension is a planning debate that goes in circles. A more useful starting point is a spatial one: forget the politics for a moment and just look at which farmland parcels already have the conditions for development — and which ones don't.

This article walks you through how we built a multicriteria analysis in GOAT to find which farmland parcels around a city already have the conditions for housing — using nothing but open data.

What makes farmland actually buildable?

Being close to a city isn't enough. The parcels worth looking at are the ones that tick a few boxes at once — four of them: transit access, adjacency to existing housing, the shape of the parcel, and whether it's forest.

Diagram of the four criteria used to find buildable farmland: transit access, adjacency to existing housing, parcel geometry, and exclusion of forest
The four steps for finding the best buildable parcels
1. Transit access

German planning practice (BBSR, VDV guidelines) uses 800 metres from a rail stop and 500 metres from a bus stop as rough thresholds for what counts as "transit-accessible." Sites that fall outside both aren't going to reduce car dependency — they're going to add to it. Worth flagging: this is straight-line buffering. Actual walkable catchments would be smaller and irregular, shaped by streets, crossings and slope.

2. Adjacency to existing housing

There's a difference between extending a neighbourhood and dropping a new development in the middle of nowhere. Parcels within 100 metres of existing residential land use (AX_Wohnbauflaeche) are the former. Everything else risks becoming the kind of sprawl nobody's proud of ten years later.

3. Geometry

This one sounds obvious but it's easy to miss. A lot of farmland near cities is shaped badly — long agricultural strips along field edges, irregular slivers, parcels that look fine at small scale but couldn't actually fit a building coherently. The analysis filters for parcels of at least 0.5 hectares — small enough to avoid major infrastructure overhaul, large enough to actually fit a residential development — with a Polsby-Popper compactness score above 0.3. The threshold isn't drawn from a specific planning standard — it was tuned empirically to reject elongated "spaghetti" parcels that wouldn't realistically fit a residential block. Loosen it to 0.2 and you get more candidates; tighten it to 0.4 and you lose some real ones. 0.3 was the value where the map matched planning intuition. That threshold cut more candidates than expected. There's quite a bit of farmland around Schwabach that meets the transit and adjacency criteria but is basically a noodle.

4. Not forest

Forest is excluded outright. The Bundeswaldgesetz settles that question before any analysis starts.

GOAT analysis workflow that can be reproduced for any German municipality
Workflow built on GOAT that can be reproduced for any German municipality

Rail vs. bus: why rail-adjacent land ranks higher

When a parcel sits near both a rail stop and a bus stop, it gets classified as rail-priority. This isn't because bus access doesn't matter — it's a planning convention worth being explicit about.

Bus routes change. A stop that exists today might be rerouted or dropped in a few years. Rail infrastructure tends to outlast bus networks — though not always (Bavarian Stilllegungen exist), so this is a tendency, not a law. German planning practice generally weighs rail-adjacency more highly on these grounds, and developers, Wohnungsgenossenschaften and the people who eventually live there respond to that distinction. Giving rail-adjacent sites higher priority reflects how infrastructure value actually gets read in the market.

Map of rail and bus stop buffer zones around Schwabach in GOAT, showing which farmland falls within walking distance of transit
Rail vs Bus buffer zones in GOAT

One important limitation: the analysis measures proximity, not service quality. A bus stop served three times a day is a very different thing from one on a ten-minute frequency. An obvious next iteration would be to weight transit access by GTFS service frequency. For this first pass, every stop counts equally — which means the 842 ha of bus-priority is best read as an upper bound.

The results: 322 ha rail-priority, 842 ha bus-priority

After running all the criteria across Schwabach's land use data, the result is about 322 hectares of rail-priority sites and 842 hectares of bus-priority sites. Farmland that's already well-positioned — near transit, next to existing housing, right size and shape.

The analysis doesn't speak to ownership. Spatially suitable farmland is one thing; available farmland is another. The biggest blocker in German municipal land-use planning is often parcels that meet every spatial criterion but where the owner has no intention of selling. The map shows where the conditions exist, not where the deals are doable.

Explore the full results in the interactive dashboard — and if you want to run an analysis like this yourself, you can try GOAT for free.

GOAT dashboard showing the buildable farmland analysis results for Schwabach, with rail-priority and bus-priority sites
The dashboard showing all the results from the analysis

FAQ

What data does this analysis use?

Only open data: ALKIS land-use parcels (Bayern Geoportal), public transport stops from GTFS (DELFI Germany), and rail lines from OpenStreetMap. No proprietary or paid datasets.

Can this method be applied to cities other than Schwabach?

Yes. Any German municipality with ALKIS land-use coverage and a published GTFS feed can be analysed with the same workflow in GOAT. Thresholds can be adjusted for local context.

What's the difference between rail-priority and bus-priority sites?

A parcel near both a rail and a bus stop is classified as rail-priority, because rail infrastructure tends to be longer-lived than bus routes and is generally weighted more highly in German planning practice. Bus-priority sites are near a bus stop but not a rail stop.

Why 800 m and 500 m for transit access?

These are common German planning thresholds (BBSR, VDV) for walkable distance to rail and bus stops respectively. They're applied here as straight-line buffers, so real walkable catchments would be somewhat smaller.

What is the Polsby-Popper compactness score, and why 0.3?

Polsby-Popper measures how close a shape is to a circle (1.0 = perfect circle). The 0.3 cutoff was tuned empirically to filter out long, thin parcels that couldn't fit a coherent residential block — not taken from a fixed standard.

Does suitable mean a site can actually be developed?

No. The analysis identifies spatially suitable land. Ownership and willingness to sell — often the real bottleneck in German land-use planning — are out of scope.

People on bicycles
People on bicycles

Ready to put your data on the map?

Join planners and cities already using GOAT to make better decisions, faster.