Bosanski

Land of a Thousand Pools

Herzegovina-Neretva Canton, Bosnia and Herzegovina · 1,998 pools found · imagery Mapbox Satellite, zoom 18 (0.217 m/pixel)

This page shows the outdoor swimming pools in the municipality of Mostar. I found the pools in satellite images with a Python script. I did not do a survey on the ground. The map shows each pool that the program found. The table shows the quantity of pools near each settlement.

1,998
Pools found
before correction
1,763
Corrected count
range 1,550–2,481
0.82
Precision
200 checked by hand
0.93
Recall
4 areas, by hand
1,143 km²
Municipality area
12% of it searched
20,619
Image tiles
≈1.2 GB downloaded

Where the pools are

Each circle is one pool that the program found. Click a circle to see the surface area and the nearest settlement. The circles group together when you look at a large area. Imagery: Esri World Imagery. Pool positions: this project.

Method

  1. I took the boundary of the municipality from OpenStreetMap. The area is 1,143 km².
  2. I made the search area smaller. I kept only the parts near a building. This removed 88 percent of the municipality. A pool is almost always near a building.
  3. I downloaded 20,619 satellite image tiles. One pixel shows 0.217 m of the ground. A pool of 8 m is thus 37 pixels wide.
  4. A colour filter found the blue shapes in each tile. The filter kept a shape only if the size and the form were correct. This step gave 4,295 possible pools.
  5. I looked at 600 of these shapes and marked each one. A shape was a pool, or it was not a pool.
  6. A neural network learned from these 600 examples. The network then looked at all 4,295 shapes.
  7. The program found 1,998 pools.

Accuracy

A count alone is not enough. You must also know the quantity of errors. I thus did two tests.

  1. For the first test, I looked at 200 pools from the result. 165 of them were correct pools. The precision is thus 0.83.
  2. For the second test, I counted all the pools in four areas by hand. The program found 93.5 percent of them. The recall is thus 0.935.
  3. I also counted the pools in two areas outside the search area. I found no pools there. The smaller search area is thus safe.

I corrected the count of 1,998 with these two values. The corrected count is 1,763 pools. The true quantity is between 1,550 and 2,481.

Limits

  1. The satellite images are not all from the same date. The dates are between 2019 and 2024.
  2. The program cannot find an indoor pool.
  3. The program can miss an empty pool. The program can also miss a pool with green water.
  4. The program does not count a pool with a surface area of less than 8 m².
  5. The name in the table is the name of the nearest settlement. It is not an administrative area. Many pools in the city of Mostar thus show the name of a village near the city.

Pools by settlement

The program gives each pool the name of the nearest settlement point in OpenStreetMap. These names are not administrative boundaries. The city of Mostar has many settlement points, and the pools in the city are thus divided between them.
SettlementPools Share
Kosor23011.5%
Blagaj1758.8%
Potoci984.9%
Podgrade844.2%
Gnojnice763.8%
Mokrice763.8%
Vojno743.7%
Mostar633.2%
Livač603.0%
Vrapčići593.0%
Do572.9%
Podpetak572.9%
Donje Opine542.7%
Ortiješ392.0%
Jarak331.7%
Buna321.6%
Lakševine321.6%
Kočine281.4%
Bovani271.4%
Rasoje271.4%
Trisića Han271.4%
Dračevice261.3%
Pucine241.2%
Suhi Do241.2%
Leke221.1%
Cim211.1%
Željuša201.0%
Ilići191.0%
Hodbina160.8%
Raštani160.8%
Humi150.8%
Rodoč150.8%
Bošnjaci140.7%
Lišani140.7%
Malo Polje140.7%
Bišće Polje130.7%
Parila130.7%
Vihovići130.7%
Krč120.6%
Maloševići110.6%
Navrhsela110.6%
Prigrađani110.6%
Rašuše110.6%
Salakovac110.6%
Govorci100.5%
Donji Bučići90.5%
Polog90.5%
Varda90.5%
Jasenica80.4%
Urbanovo80.4%
Brijeg70.4%
Donja Jasenica70.4%
Dubrava70.4%
Humilišani70.4%
Luke70.4%
Palanka70.4%
Bačevići60.3%
Krivodol60.3%
Zaton60.3%
Donja Drežnica50.3%
Donji Vranjevići50.3%
Podgorani50.3%
Podvelež50.3%
Žitomislići50.3%
Janjići40.2%
Kutilivač40.2%
Modrave40.2%
Selište40.2%
Razlomišće30.2%
Čomori30.2%
Čule30.2%
Bijela20.1%
Demirovića Mahala20.1%
Gološi20.1%
Goranci20.1%
Gornje selo20.1%
Grabovica20.1%
Kruševo20.1%
Kula20.1%
Mahala Čumurina20.1%
Patkovići20.1%
Poljane20.1%
Sprača20.1%
Staro selo20.1%
Striževo20.1%
Vejzovića Han20.1%
Zovke20.1%
Šipovac20.1%
Avlije10.1%
Babići10.1%
Blaževići10.1%
Bogodolska Ladina10.1%
Dogići10.1%
Elezovina10.1%
Gornja Drežnica10.1%
Gornja Jasenica10.1%
Gornje Gnojnice10.1%
Gubavica10.1%
Klještine10.1%
Knezovići10.1%
Kokorina10.1%
Marići10.1%
Međine10.1%
Milićevići10.1%
Miljkovići10.1%
Pijesci10.1%
Podgorje10.1%
Podivače10.1%
Proskoti10.1%
Ruište10.1%
Smrduša10.1%
Sretnice10.1%
Taška10.1%
Vrdi10.1%
Vrseljak10.1%
115 settlements · 1,998 pools · download pools.geojson or counts_by_town.csv