Suitability Analysis Map

Jul 5, 2026
GeoAI Field Notes Vol. 01 — Site Suitability

Finding the Best Spot for a New Shop, One 50-Meter Square at a Time

A step-by-step spatial analysis of Sonadanga, Khulna — built with Python, GeoPandas, and open street map data, instead of a traditional desktop GIS tool.

Location: Sonadanga, Khulna, Bangladesh Method: Vector-based Multi-Criteria Decision Analysis Grid size: 50m x 50m Tools: Python · GeoPandas · OSMnx · Matplotlib

Abstract

Where should a new shop or a new school go? People used to answer this question by walking around a neighborhood and guessing. This project answers it with data instead. I split a real neighborhood into thousands of small 50-meter squares, and gave every square a score based on three simple things: how close it is to a road, how close it is to homes, and how far it is from other shops. Then I combined the three scores into one final map that shows, in plain colors, exactly where the best spots are.

Keywords — Site Suitability · GeoPandas · OSMnx · Spatial Analysis · Multi-Criteria Decision Analysis

Why This Project Exists

Imagine you want to open a small shop. You have three questions in your head: Is it easy for people to reach? Do enough people live nearby to become customers? And is it far enough from other shops that already sell the same thing?

Normally, someone would answer these questions by feeling and experience. In this project, I answered them with numbers. I picked a real area — Sonadanga in Khulna city — and built a small computer program that looks at the whole area, square by square, and scores every square out of 1. A square with a high score is a great place for a new shop. A square with a low score is not.

This is called Site Suitability Analysis, and the method behind it is called Multi-Criteria Decision Analysis (MCDA) — a fancy name for a simple idea: take a few important factors, weigh them by how much they matter, and add them together.

Step One — Cutting the Map into Small Squares

Most older suitability studies use raster grids — think of them like a photograph made of big, blocky pixels. Instead, I used a cleaner, more precise method: I drew the study area boundary of Sonadanga, and then covered it completely with small squares, each one 50 meters wide. Every square becomes its own independent unit that gets studied and scored on its own.

Why 50 meters? Because it is small enough to notice real differences between one street corner and the next, but not so small that the computer has to process millions of tiny fragments.

Road network graph of Sonadanga, Khulna generated with OSMnx
Fig. 1Road network of Sonadanga pulled automatically from OpenStreetMap using OSMnx.
Study area covered with a 50 meter square grid
Fig. 2The full study area, now divided into a 50-meter grid. Each red square is one unit of analysis.

Step Two — Deciding What Matters, and How Much

Three factors decide whether a square is a good business spot. Each one gets turned into a score between 0 and 1, so that very different things — meters of distance, number of roads, number of shops — can all be compared fairly on the same scale.

Road Proximity
40%
Residential Proximity
30%
Competitor Distance
30%

Roads get the biggest weight because a shop nobody can reach is not a shop at all. Homes come next, since more nearby residents usually means more walk-in customers. Distance from existing competitors matters too, but slightly less, because a good location can sometimes still succeed even close to competition.

Step Three — Scoring Each Criterion

For every square, I measured the straight-line distance from its center point to the nearest road, the nearest home, and the nearest competitor shop. Each distance was then turned into a score between 0 and 1, using two simple rules: closer is better for roads and homes, farther is better for competitors.

Road & Residential Score = 1 − (distance ÷ maximum distance in the area)  ·  Competitor Score = distance ÷ maximum distance in the area

Click a tab below to switch between the three criteria and see how each one looks on the map.

Road suitability score heatmap, green means high score
Fig. 3Road proximity score. Green squares sit close to a road, red squares are farther away.
Residential proximity score map
Fig. 4Residential proximity score. Green squares are surrounded by homes, meaning more potential customers.
Competitor avoidance score map
Fig. 5Competitor avoidance score. Green squares are far from existing shops.

Step Four — Combining Everything Into One Final Score

Now the three scores get multiplied by their weights and added together. Every square ends up with one final number between 0 and 1, which is then sorted into three simple groups: Low, Medium, and High suitability.

Final combined site suitability map of Sonadanga
Fig. 6The final suitability map. Dark red and orange squares are the best places to open a new shop.
Suitability LevelScore RangeWhat It Means
High0.70 – 1.00Great access, near homes, away from rivals
Medium0.40 – 0.70Decent, but weak on one or more factors
Low0.00 – 0.40Hard to reach, few nearby customers, or too close to a competitor

Where This Method Can Go Wrong

All the road, home, and shop data in this project comes from OpenStreetMap, which is built by volunteers. This is powerful and free, but not perfect. A brand-new residential block or a small local shop that nobody has mapped yet simply will not show up in the data, even though it exists in real life.

That is why the whole workflow is built in separate, swappable steps. If a real client gives me their own accurate shapefiles, GPS survey data, or official city planning maps, I can plug that data directly into the same scoring formulas without rewriting the analysis from scratch.

Closing Thoughts

This project turns a question that usually depends on gut feeling — "where should I open my shop?" — into something measurable, repeatable, and visual. The same three-step method (score, weigh, combine) can be reused for almost any location decision: where to build a school, a clinic, a warehouse, or a bus stop.

The full notebook, along with the raw data pipeline, is open for review on my GitHub.

Built with GeoPandas · OSMnx · Matplotlib Author: Meheran — meheran.dev

Tech Stack