Wednesday, November 26, 2025

How to Open QGIS Attribute Table as a docked window

 If you don't want your layers attribute table been displayed as a regular window that is movable on screen, then you ca make it docked/fixed by following this guide.

When you open an attribute table of any vector layer by default, it will appear to cover the map canvas justr like the image below.

Even if you tried to move the attribute table window, it won't be of much help in having it docked like in the image below. 


To achieve this docked window, you need to make use of the 'Settings Menu' as follow;-

Settings ► Options ► Data sources ► Feature Attributes and Table. Then check the box for 'Open attribute table in a docked window'


You can also make the column size fit to content by checking the 'Autosize all columns by default when opening attribute table' check-box.


That is it!

Thursday, November 20, 2025

Mapping Inter-confederation, European playoffs fixtures for the 2026 World Cup

 As of November 20, 2025, 42 spots for the 48-team 2026 FIFA World Cup have been secured through direct qualification. The remaining six spots will be decided through two separate playoff tournaments in March 2026. 

In this post, I will create a map showing the teams that will participate in the playoff tournaments.

Teams for Inter-confederation playoff: New Caledonia, Jamaica, Bolivia, Suriname, DR Congo, and Iraq



Teams for European playoff: Italy, Northern Ireland, Wales, Bosnia-Herzegovina, Ukraine, Sweden, Poland, Albania, Turkey, Romania, Slovakia, Kosovo, Denmark, North Macedonia, Czech Republic and Republic of Ireland




Goodluck to the playoff teams

Monday, November 10, 2025

Reproducing the "Map of Nigerian Languages"

 I needed a softcopy of the 'Map of Nigerian Languages' by the National Library of Nigeria. Unfortunately, all the softcopies I found where not useful to me because the image resolution was poor (see images below). So I decided to re-produce one from scratch.

Radio Nigeria has a copy of the map here but it is of low resultion for my use. Although it served as a reference for the new map i intend to reproduce. I also referenced this video on National Library of Nigeria facebook page.

For the list of languages, I utilized this source from National Institute for Cultural Orientation (NICO) to prepare the list below in JSON format:-

'[{"STATES":"ABIA","LANGUAGES":"Igbo"},{"STATES":"ADAMAWA","LANGUAGES":"Bachama, Bali, Bare, Batta, Bena, Bille, Boga, Baba, Bura, Chamba, Chobbo, Dangsa, Dadiya, Dera, Dijim-Bwilim, Dirim, Dibanci, Dong, Doso, Fali, Fulfude, Gaa, Ga’anda, Gbaya-Northeast, Gola, Gengle, Gira, Gongla, Gorobi, Gude, Gudu, Gwaba, Hide, Higgi, Holma, Hona, Huba, Hwana, Hya, Jenjo, Kaan, Kanakuru, Kamwe, Kofa, Koma, Korna, Kpasam, Kugama, Jango, Jkumba, Kilba, Kwa, Kwak, Koma, Laka, Lala, Lak-Roba, Lamang, Libbo, Lunguda, Loo, Matakam, Mobas, Mafa, Marghi South, Mboi, Mbongno, Mbula-Bwazza, Mingang Mumuye, Muchala, Mwana,Ngoshe, Ngwaba, Njayi, Njerep, Nona, Nyong, Nzanyi, Psikye, Samba Leko, Sate, Sukur, Tambo,Tangale, Teme, The, Tso, Vemgo, Verre, Volma, Voro, Waja, Wom, Wula, Yandang, Yundur, Zizilivakan"},{"STATES":"AKWA IBOM","LANGUAGES":"Anang, Efai, Eki, Ekit, Etebi, Ibibio, Ibino, Ibuoro, Idere, Iko, Ilue, Itu Mbon Uzo, Okobo, Uda"},{"STATES":"ANAMBRA","LANGUAGES":"Igbo, Igala"},{"STATES":"BAUCHI STATE","LANGUAGES":"Ajawa, Beele, Bure, Ciwogai, Dass, Daza, Deno, Diri, Duguri, Galambu, Gamo-Ningi, Fulfude, Geji, Gera, Giiwo, Gwa, Gyem, Izere, Jimi, Ju, Karekare, Kariya Kir-Balar, Kubi Kudu, Kudu Camo, Kutto, Kwaami, Labir, Lame Lenoro, Lere, Luri, Mangas, Mburku, Miya Pa’a,-Kwonci, Sanga, Saya, Shau, Shiki, Shuva-Siri, Sur, Tala Tunzuii, Vaghat-Ya-Bijin-Legeri, Warji, Zangwal, Zari, Zeem, Ziriya"},{"STATES":"BAYELSA","LANGUAGES":"Abureni, Epie, Do Southeast, Kirike, Odual, Ogbia, Okochia, Kugbo, Izon"},{"STATES":"BENUE","LANGUAGES":"Agatu, Akpa, Basa, Edumoga, Eloyi, Etulo, Igede, Igbo, Idoma, Iyala, Kukele, Koring, Otank, Odual, Otukpo, Otukpa, Orokam, Peere, Samba-Daka, Tite, Tiv Wanna, Surubu, Utonkon"},{"STATES":"BORNO","LANGUAGES":"Afade, Arabic, Shuwa, Bure-Pabir, Ciback, Aghwede, Fullfude, Glauda, Guduf-Gara, Gvoko Hide, Jara, Jilbe, Kanuri, Lamang, Kurama, Mafa, Marghi South, Tadaga, Tera, Wandda, Yedina Cinen, Babur-Bura."},{"STATES":"CROSS RIVER","LANGUAGES":"Awgagwune, Alege, Bakpinka, Bekwarra, Betc-Bendi, Bokyi, Bumaji, Doko Uyanga, Ebughu, Efik, Efutop, Ejagham, Evant, Kevemaci, Ito, Kiong, Kohumono, Korop, Kukele, Lenyima, Leyigha, Lokaa Lubila, Mbembe, Nde-Nsele-Nta, Ndoe, Nkem-Nkum, Nkukoli, Nnam, Obanlinku, Obolo, Odut Olulomo, Ikom, Oring, Oro Otank, Putukwan, Tamajag, Ubaghara, Ubangi Ukpe-Bayobiri, Ukpet-Ehom, Umon, Usaghade, Uzekwe, Tacc, Yaka"},{"STATES":"DELTA","LANGUAGES":"Eruwa, Isekiri, Isoko Izon, Kalabari, Ogboronuagum, Okpe, Urhobo, Vubie, Ika, Ukwani-Aboh-Ndoni"},{"STATES":"EDO","LANGUAGES":"Edo, Emai-Luleha-Ora, Enwan, Esan, Ghotuo, Ibilo, Idesa, Igwe, Ihevbe, Ika, Ikpeshi, Ivebe-North-Okpela-Arhe, Ososo, Sasaru, Ukaan, Uneme, Uokha Yekhee"},{"STATES":"EKITI","LANGUAGES":"Yoruba"},{"STATES":"EBONYI","LANGUAGES":"Igbo"},{"STATES":"ENUGU STATE","LANGUAGES":"Igbo, Igala"},{"STATES":"GOMBE","LANGUAGES":"Awak, Bangunji, Bolewa, Boh, Burak, Cham, Dadiya, Deji Fulani, Gasi, Ggizim, Hausa, Hone, Jara, Jukun, Kamo, Kana-Kuru, Kanuri, Koma, Kare-Kare, Kushi, Lunguda, Marghi South, Ngamo Pero, Tangale, Tera, Tso, Tula, Tuk, Kamo, Waja, Wurkum"},{"STATES":"IMO","LANGUAGES":"Igbo"},{"STATES":"JIGAWA","LANGUAGES":"Auyokawa, Fulfude, Kanuri, Teshenawa, Kurama, Hausa"},{"STATES":"KADUNA","LANGUAGES":"Amo, Ashe, Atsam, Ayu, Begbere-Ejar, Bina, Cinder-Regi-Tiyal, Cori, Doka, Dungu, Dza, Gbagyi, Gbiri-Niragu, Fulfude, Hyam Idon,M Idun, Iku-Gora-An-Kwa, Izere, Jere, Jiu, Kadara, Kaningkom-Nindem, Kanufi, Kataf, Kinuku, Kono, Kuturmi, Mada, Mala, Ndun, Ningye, Ninzo, Nungu, Nyeng, Piti, Rogo, Ruma, Saya, Sha, Shamang, Tumi Zhire"},{"STATES":"KANO","LANGUAGES":"Fulfude, Gibannawa, Hausa, Kurama, Amo"},{"STATES":"KATSINA","LANGUAGES":"Fulfude, Hausa"},{"STATES":"KEBBI","LANGUAGES":"Acipa, Cinda-Regi, Fulfude, Tital, C’lela, Dendi, Hunsaare, Kyenga, Peshe, Tsikimba, Ut-Ma’in, Hausa,"},{"STATES":"KOGI","LANGUAGES":"Alere, Basa, Ebira, Eggan, Gwari, Igala, Kakanda, Koto, Kupa, Oko-Eni-Osayeri, Okun, Okpamheri, Saya, Ogori"},{"STATES":"KWARA","LANGUAGES":"Batonu, Bagobiri, Bokobaru, Fulfude, Hausa, Nupe, Yoruba"},{"STATES":"LAGOS","LANGUAGES":"Yoruba, Awori"},{"STATES":"NASARAWA","LANGUAGES":"Afo, Agatu, Agoi, Ake, Alago, Alumutesu, Arum, Ashe, Basa-Gumna, Buh, Duhwa, Eggo, Fulani, Gade, Gbagyi, Goemai, Gwandara, Ham, Hausa, Hasha, Jukun, Kantana, Kofyar, Koro, Kulere, Lijili, Migili, Mada, Mama, Ninzo-Nungu, Nyankpa, Saya, Yeskwa"},{"STATES":"NIGER","LANGUAGES":"Asu, Baangi, Basa-Gumna, Basa-Gurmana, Basa-Kon Tagora, Busa, Gishinginni, C’ida, Dendi, Dibo, Fungwa Gbari, Gurmana, Gwandara, Hungworo, Hun-Saare, Ija-Zuba, Kadara, Kakanda, Kakihum, Laru, Lopa, Nepe-Nope-Tako, Pongu, Rogo, Shama-Sambuga, Tsikimba, Tsishinginni, Tsuvadi"},{"STATES":"OGUN","LANGUAGES":"Gun, Yoruba, Egba, Ijebu, Owu, Awori, Yewa."},{"STATES":"ONDO","LANGUAGES":"Ahan, Akpes, Arigidi, Ayere, Ehuem, Iyayu, Uhami, Ukaan, Ukue, Yoruba, Okpamher"},{"STATES":"OSUN","LANGUAGES":"Yoruba"},{"STATES":"OYO","LANGUAGES":"Yoruba"},{"STATES":"PLATEAU","LANGUAGES":"Atsam, Bada, Berom, Boghom, Bo-Rukul, Cakfem-Mushere, Casacen, Centum, Che, Como Karim, Dibo, Duguri, Etem, Fulfude, Fyaam, Fyer, Ganang, Goemai, Horom, Iguta, Irigwe, Izora, Janji, Jorto, Koenoem, Kotyar, Kulere, Lemoro, Kurama, Miship, Montol, Mundet, Mwaghavul, Ngas, Numan, Panawa, Pe, Pyapun, Ron, Sambe, Saya, Shakara, Shalkl-Zwall, Sheni, Sur, Tal, Tanjijili, Tarok, Toro, Tunzuii, Tyap, Vaghotya-Bijim-Legeri, Wapan, Wapha, Yangkam, Yiwom, Yukumben, Zumb."},{"STATES":"RIVERS","LANGUAGES":"Baan, Biseni, Defaka, Degema, Ekpeye, Eleme, Engenni, Gokana, Ibani, Ikwere, Izon, Kalabari, Khana, Kugbo, Obulom, Olchichi, Ogbah, Ogbogolo, Okochia, Ukwani-Aboh-Ndoni."},{"STATES":"SOKOTO","LANGUAGES":"Fulfude, Hausa"},{"STATES":"TARABA","LANGUAGES":"Abon, Akum, Ambo, Anca, Batu, Bête, Bitare, Bukwen, Buru, Como Karim, Dadiya, Dong, Dzodinka, Esimbi, Ettywan, Feli Of Baissa, Fam, Fulfude, Fum, Jiba, Jibu, Jiru, Jukun-Takkum, Kam, Kapya, Kholok, Kpan, Kpati, Kulung, Kutep, Kpak, Lamja-Dengsa-Tola, Lamnso, Leeelau, Limbum, Lufu, Maghadi, Mak, Mambilla, Marghi Central, Marghi South, Mbembe, Tijan, Mingang Doso, Moo, Mvanip Ned-Gbite, Ndoola, Ndunda, Nshi, Nyam, Rangishoo-Mindanye, Somyev, Viti, Waka, Wapan, Yamba."},{"STATES":"YOBE","LANGUAGES":"Fulfude, Kanuri, Bade, Hausa, Ngamo, Shuwa Kanuri, Manga, Karekare, Marghi Central, Marghi South."},{"STATES":"ZAMFARA","LANGUAGES":"Fulfude, Hausa"},{"STATES":"FCT","LANGUAGES":"Bassa, Gbagyi, Hausa, Gwandara, Gade"}]'
The following states have more than ten (10) major and minor spoken indigenous languages: ADAMAWA, PLATEAU, TARABA, BAUCHI, CROSS RIVER, KADUNA, NASARAWA, GOMBE, NIGER, BENUE, BORNO, RIVERS, EDO, AKWA IBOM, KOGI, KEBBI, ONDO, DELTA, and YOBE. The table below shows the total number languages for each state. 


To prepare the map, I made use of Inkscape vector graphics software since the map is not a GIS specific task without scientific cartography elements such as scale, north arrow, grid, projection etc.
"Scientific maps adhere strictly to the principles of cartography and geospatial information science (GIS). On the other hand, Non-scientific maps often sacrifice technical accuracy for ease of use, aesthetic appeal, or conceptual clarity".

The map is more of a conceptual communication map not a measured scientific map that requires the use of GIS tool.

Saturday, November 1, 2025

Inkscape for Geo-Scientific Research Publishing: Creating High-Quality Maps & Scientific Figures

 It is an observation worth making that the skill of graphics design remains significantly underrated among authors in academic research. This oversight, which can diminish the impact and clarity of scholarly work, is a mistake I initially made myself.

However, I swiftly recognized this deficit and took corrective action by dedicating time to learning an effective, open-source graphics design tool: Inkscape. This choice allowed me to substantially enhance the visual presentation of my research findings, from schematics and diagrams to conceptual figures. The message here is clear: proficiency in graphics design is not merely an optional extra but a critical component of effective academic communication. If this is a skill gap in your own repertoire, be assured that it is not too late to remedy it and immediately elevate the standard of your published work.

To help you accomplished this, I have created a YouTube video series tailored toward using inkscape for making research figures.

Inkscape is a powerful, free, and open-source vector graphics editor suitable for creating figures for geo-scientific research publications, such as journal articles, posters, and illustrations. InkScape is a good choice for authors preparing diagrams and other line art for their manuscript.

Basic steps for making each figure will generally be based on the following

Steps:

  1. Determine the Figure's target size - 2% of design time is expected to be spent here. 
  2. Design and Arrange the Figure Components - 95% of design time is expected to be spent here.
  3. Finalize and Export the Figure - 3% of design time is expected to be spent here.

Scientific figures just like the papers are fundamentally constructed by taking existing ideas adapting, applying, and improving them in novel contexts over time. Inkscape can be used for the following:-

  • Developing original schematic diagrams from conception.
  • Simplify complex figures from papers for presentation clarity.
  • Refine and adjust plots exported from programs (e.g., Excel, MATLAB, Python, R, ArcGIS, QGIS).
  • Annotate photos by adding details like labels, scale bars, arrows, and outlines.
  • Comprehensive design and production of scientific conference posters.

Some of what you will learn are adapting a research figure, fixing a portion of an existing research figure, preparing confrence posters, designing graphical abstract etc.



Video 1: Introduction to Inkscape for Geo-Scientific Research Publishing



Video 2: Adapting a research figure from a journal paper



Video 3: Fxing the key/legend of a remote sensing classification image



Video 4



Video 5



Video 6


Video 7


Video 8


Video 9


Video 10


Video 11



Video 12



Thank you for following.

Sunday, September 21, 2025

How to Open a drone PointCloud file in AutoCAD

 To open PointCloud file generated from a drone phogrammetry software in AutoCAD, the point cloud file must be in Autodesk ReCap (.rcp, .rcs) format as seen below.


What is Autodesk ReCap?

Autodesk ReCap is reality capture software used to transform real-world objects and environments into digital 3D models from photographs and laser scans. The software allows users to view, edit, and prepare high-quality digital assets, often as point clouds or meshes, for use in other Autodesk software, such as AutoCAD, Revit, and Navisworks. Its file extension is either .rcp or .rcs, hence any point cloud file that most be imported into AutoCAD must be converted into the ReCap file extension using the Autodesk ReCap software. To proceed with this tutorial, download and install the Autodesk ReCap software. You also need the Autodesk login credentials, so signup for one if you don't have it already.


Step-by-step

1) Launch the Autodesk ReCap and create a new project



2) Import all your point cloud files that are either in .laz, .las, .ply, .csv etc. If you work with webODM drone software you should be farmilier with these point cloud files.


In addition to the point cloud file types listed above, Autodesk ReCap also supports others as seen below;

Monday, August 18, 2025

Using custom Hausa font within QGIS

 QGIS just like most computer software uses the fonts that are installed on your computer. So, to use a Hausa font in QGIS you will need to install the font on your computer.

There are two commly used Hausa font in use, namely: Dr. Abdallah Uba Adamu (Abdalla.ttf) and Rabiat Muhammad (Rabiat.ttf) fonts. You can download and install both from this Google drive folder. After you download double-click on the file to and click on install button to install them on your computer as seen below.




Both fonts where developed by Prof. Abdalla Uba Adamu in his contribution to the development of Hausa language in modern era, he developed 'hooked' Hausa language character font sets (ɓ Ɓ ɗ Ɗ ƙ Ƙ), which were not present at the advent of the word processors in Nigeria in the 1990s. He named them 'rabi'at' (after his mother, Rabi'at Muhammad) and 'abdalla' (after himself, as he could not think of any name at the time).



After installation, the fonts will be available in QGIS as seen above.

To type the special Hausa characters (ɓ Ɓ ɗ Ɗ ƙ Ƙ), we will utilize "~, |, ], [, } and {" for Abdalla.ttf font and "v, V, x, X, q and Q" for Rabiat.ttf font. The table below summaries what you need to type to achieve keying or typing the special Hausa characters.








That is it!

Monday, June 30, 2025

Introduction to G.Projector 3 — A Map Projection Explorer by NASA

 National Aeronautics and Space Administration (NASA) has this great tool called G.Projector for exploring complex Map Projection not easily implemented in common cartographic or GIS tool. The software is based o Java and it is available on major operating system like Windows, macOS and Linux. G.Projector is an interactive tool for exploring map projections. It takes an input map image, typically in Equirectangular form (also called Cylindrical Equidistant), and transforms it to one of over 200 other projections.


Download and launch G.Projector from the official website, it is a simple standalone software (no installation is required), however you need to have Java 11 or higher installed on your machine.

To start using G.Projector, you need to have a basemap (source map) of the globe in one of the following projections namely: Aitoff, Cylindrical equal Area, Equirectangular, Hammer, Robinson, or Winkel Tripel. Your source map in any of the projections above can then be transformed to one of over 200 other projections. An important note is that your input map image, must not have a border or extra margins around the edges.

A KMZ file ca also be used as an input source map.

With this tool, you can take a globe map like the once below and convert them into many types of map projections.






The steps required are as follow;-

1) Launch the G.Projector software

2) Go to "File" >> "New with import…", select your base map and choose its corresponding map projection such as "Equiretangular" as "Input projection"


3) In the "Projection" tab, select the new map projection type you want to transform the map into. As an example, here I choose "Sinusoidal" as projection mode with Interrupted: 30° Gores

4) In the "Graticule" tab, set the "Stroke" as you want

5) In the "Overlays" tab, select <None> for "Overlay 1".

6) In the "Border" tab, set "Weight" to 0%.

7) Export the current view now under "File" >> "Save Map as…"


A note on Gore
In cartography, a gore is a wedge-shaped segment of a map, often resembling the area between two lines of longitude, that can be fitted to a globe with minimal distortion. It can also refer to a triangular piece of land resulting from conflicting surveys or a gap between boundaries. 

1. Globe Gores:
A gore is a section of a map designed to be wrapped around a globe. 
These sections are typically shaped like a wedge, with the wider end at the top (near the equator) and the narrower end at the bottom (near the pole). 
The term "gore" in this context comes from the shape of the segment, which is similar to the panels of a hot air balloon or parachute. 

2. Land Gores:
In surveying and land ownership, a gore refers to a small, usually triangular, piece of land that is not included in any adjacent property or land survey.
These gaps can arise from errors in surveying, where two or more surveys fail to align properly, or from discrepancies in boundaries.
For example, the "g<bos> land" between the Philipse Patent and the Rombout Patent in New York was a well-known gore. 

3. Distinguishing Gores from Gaps:
While both gores and gaps represent areas not included in adjacent properties, a gore is generally triangular in shape, while a gap can be any irregular shape.
Gores often arise from conflicting survey lines, whereas gaps may result from errors in descriptions of property boundaries. 

That is it!

Happy Map Projection

Monday, June 9, 2025

How to Manually Install WebODM on local server in Windows 11

 There are several ways to install the WebODM server software including purchasing the windows installer for easy installation. In this guide, I will demonstrate how it can be install on windows 11 local machine, for other detailed installation guide see the webODM github page.


Photogrammetry software require a computer with high processing power and the minimum recommend spec for webODM are 100GB free disk space and 16GB RAM.

Saturday, May 31, 2025

Convert any picture into svg vector graphics

 The vtracer module can be used to convert a raster image to vector SVG image. See the code below;-  

import vtracer # pip install vtracer

inp = "map.png"
out = '001'

# Minimal example: use all default values, generate a multicolor SVG
vtracer.convert_image_to_svg_py(inp, f'{out}_defaultcolor.svg')

# Single-color example. Good for line art, and much faster than full color:
vtracer.convert_image_to_svg_py(inp, f'{out}_blackandwhite.svg', colormode='binary')

print('Done...')

Original Raster Map Image




Resulting Vector SVG Map 



Thursday, April 24, 2025

Script to Create New Layers for Survey Plan Drawing in AutoCAD

 







LAYER NEW BorderLine,Beacons,BoundaryLine,Title,NorthArrow,ContourLine,Legend,Roads
COLOR 7 Beacons
COLOR 10 BoundaryLine
COLOR 7 Title
COLOR 5 NorthArrow
COLOR 12 ContourLine
COLOR 7 BorderLine


(alert "DONE CREATING THE LAYERS...")  



To list all the layers' names in the current drawing:-

(defun c:ListLayersSimple (/ tbl)
  (setq tbl (tblnext "LAYER" T)) ; Start of layer table
  (while tbl
    (princ (strcat "\n" (cdr (assoc 2 tbl)))) ; Layer name
    (setq tbl (tblnext "LAYER")) ; Next layer
  )
  (princ)
)


Thank you for reading.