Subscribe to this thread
Home - General / All posts - Algorithm to digitize houses and built up areas in Africa
Corentin
162 post(s)
#20-Oct-23 11:34

Hello,

For years my firm has used satellite images to draw village maps in Africa in order to design electric networks. Usually we sent coordinates of the villages to colleagues based in Africa who would draw by hand each house in the village in a drawing in Manifold. In M8 we tried to automatize it by using the trace tool but it was not very efficient : roofs can be of different colors (depending on the roof material), shadows from tree made it difficult... They use to digitize 2 to 3 village a day (~500-1000 house per village)

We are starting a new project where we will need to digitize 500 to 1500 villages! Some of them might already be partially digitize on openstreet map.

Do you know any mean to perform this task in a more efficient way? Open source or lisenced algorithm.

Now that IA is so trendy we can even imagine to train an IA to recognize those houses : we have a large dataset of satellite images and corresponding vector drawings with digitized houses.

Sloots

693 post(s)
#20-Oct-23 12:14

Is this useful for you?

https://sites.research.google/open-buildings/#explore


http://www.mppng.nl/manifold/pointlabeler

Corentin
162 post(s)
#20-Oct-23 12:31

Seems very interesting,

I downloaded the tile around Bamako Mali (115Mo, 1.2Millions records)

I am not very good in M9 yet, the table as this kind of entries :

columns are : latitude / longitude / area_in_meter/geometry/full plus code

First : how can I create a Geom in Manifold9 to see the center of polygon (from the latitude/longitude column). I know it is a rookie question, but I spent 5mn on it, haven't find the solution yet ...

More advanced question : how to recreate the polygon from the "geometry" field : POLYGON((-9.56039400659247 10.7203865750299, -9.56039932905754 10.7205063665279, -9.56049665731812 10.7205021372459, -9.5604913348149 10.7203823457513, -9.56039400659247 10.7203865750299)) ?

Corentin
162 post(s)
#20-Oct-23 12:53

Own answer to my first question : transform / Geom / composepoint :)

Corentin
162 post(s)
#20-Oct-23 13:09

Own answer to my second question : transform / expression / StringWKTGeom

dchall8
1,015 post(s)
#20-Oct-23 18:53

For the center of an area you want to use the centroid. Here are two pages from M9 support page to help you.

Center and Centroids

and

Join Districts to Building Footprints

Note that the centroid can fall outside the boundary of the area if the area has a bend in the middle.

Corentin
162 post(s)
#20-Oct-23 14:40

This datasource is awesome!

In few minutes I was able to download million of building footprints and display them in Manifold9!

However it is really a pity that Mali is not covered (which is the country where I need data!). Do you know why it is not covered? (I asked the question on the website I am waiting for the answer)

Corentin
162 post(s)
#24-Oct-23 11:16

I still got no answer from the team who published these data.

So I come back to my first question : do you know any algorithm to digitize buildings from satellite images in desert areas such as Mali or Chad?

Dimitri


7,464 post(s)
#24-Oct-23 13:43

These days that's done not with an algorithm but with machine learning, training up a model with many images and then applying the model. I could be wrong, but I think there are a few open source models on the web for creating building footprints from aerial/satellite images.

Corentin
162 post(s)
#30-Oct-23 12:44

I found 2 sources for this kind of data.

One from google which publish an python script to download data from wkt polygon geometry https://colab.research.google.com/github/google-research/google-research/blob/master/building_detection/open_buildings_download_region_polygons.ipynb

works fine, the problem is they do not cover Chad nor Mali which are location that interest me most

One from Microsoft https://github.com/microsoft/GlobalMLBuildingFootprints/blob/main/examples/example_building_footprints.ipynb

but the script they publish does not work systematically. I got it work for an area in Cameroon, but it bugs for an area covering Ndjamena (capital of Chad)

(see attached python script with corresponding areas)

I am a newbie in python, the traceback errors says : "ValueError: Multiple rows found for QuadKey: 122212321"

do you understand why it works for Cameroon and not for Chad?

Attachments:
MstGB-Cameroon.py
MstGB-Chad.py

Manifold User Community Use Agreement Copyright (C) 2007-2021 Manifold Software Limited. All rights reserved.