GIS & Geospatial Data (QGIS, GeoPandas, PostGIS) Module 12 – Professional practice
GIS roles, portfolios and interview practice
The main GIS roles and their tasks, how QGIS, GeoPandas and PostGIS skills map to job-description terms, a portfolio that proves them, and interview practice.
What you will learn
- Describe common geospatial roles and the tasks each does day to day
- Map QGIS, GeoPandas and PostGIS skills to the vocabulary of job descriptions, ArcGIS terms included
- Assemble a portfolio project from this track's work, with reproducible code and an honest write-up
- Practise technical and scenario interview questions against a rubric
Before you start
What you’ll learn · Before you start
What you will learn
- Describe common geospatial roles and the tasks each does day to day
- Map QGIS, GeoPandas and PostGIS skills to the vocabulary of job descriptions, ArcGIS terms included
- Assemble a portfolio project from this track's work, with reproducible code and an honest write-up
- Practise technical and scenario interview questions against a rubric
Before you start
On this page
Two job posts both say “GIS analyst”: one asks for map layouts in a desktop GIS, the other for Python pipelines and spatial SQL. Titles in this field overlap, so the useful question is which tasks a job involves, and whether you can show you have done them.
Here you tell GIS roles apart by their daily work, translate this track’s skills into the words job descriptions use, assemble portfolios that prove the skills, and begin interview practice with questions scored by a rubric.
GIS roles are told apart by their daily work
Occupation profiles describe roles by tasks, not by titles. O*NET’s profile of GIS technologists and technicians starts with assessing new data for quality and completeness, producing layers, maps and reports by spatial analysis, maintaining databases and designing maps that present information clearly (O*NET); its remote-sensing profile starts with managing and analysing the data of remote-sensing systems (O*NET). Five GIS roles cover most posts, and this program links each one’s tasks to the lessons of this track that practise them:
"""A skills matrix: the daily tasks of five geospatial roles, shortened from O*NET's occupation profiles where one
exists (the developer's and the data scientist's are the track's own summary), and the lessons that practise each."""
ROLES = {
"GIS analyst or technician": {
"check new data for quality and completeness": ["quality-metadata-reproducibility", "geometry-wkt-wkb-validity"],
"make layers, maps and reports by spatial analysis": ["spatial-predicates-and-joins", "overlay-dissolve-clip"],
"choose map elements that present information clearly": ["qgis-symbology-and-labels", "qgis-print-layouts-and-atlas"],
"enter and convert data: digitising, scanning, other formats": ["qgis-digitising-and-georeferencing", "gdal-ogr-command-line"],
},
"geospatial developer": {
"design and code GIS applications and workflows": ["pyqgis-automation", "qgis-processing-and-models"],
"keep spatial databases fast and correct": ["postgis-indexes-knn-plans", "spatial-indexes-performance"],
"publish maps and data on the web": ["maplibre-vector-tiles-pmtiles", "web-map-performance-privacy"],
},
"remote-sensing analyst": {
"process and interpret remotely sensed data": ["map-algebra-indices", "satellite-imagery-indian-missions"],
"merge other geospatial sources into the analysis": ["zonal-stats-raster-vector", "resampling-reprojection"],
},
"surveyor or field-data specialist": {
"collect and correct positions in the field": ["gnss-field-data-gps-tracks", "ellipsoids-geoids-datums"],
"handle point clouds and terrain": ["lidar-point-clouds", "dems-and-terrain"],
},
"data scientist using space": {
"test spatial patterns and model with spatial data": ["spatial-autocorrelation-hotspots", "spatial-machine-learning"],
},
}
lessons = {lesson for tasks in ROLES.values() for task_lessons in tasks.values() for lesson in task_lessons}
print(f"{len(ROLES)} roles, {sum(len(t) for t in ROLES.values())} tasks, {len(lessons)} lessons of the track\n")
for role, tasks in ROLES.items():
print(role)
for task, task_lessons in tasks.items():
print(f" - {task}")
print(f" {', '.join(task_lessons)}") Output
5 roles, 12 tasks, 24 lessons of the track
GIS analyst or technician
- check new data for quality and completeness
quality-metadata-reproducibility, geometry-wkt-wkb-validity
- make layers, maps and reports by spatial analysis
spatial-predicates-and-joins, overlay-dissolve-clip
- choose map elements that present information clearly
qgis-symbology-and-labels, qgis-print-layouts-and-atlas
- enter and convert data: digitising, scanning, other formats
qgis-digitising-and-georeferencing, gdal-ogr-command-line
geospatial developer
- design and code GIS applications and workflows
pyqgis-automation, qgis-processing-and-models
- keep spatial databases fast and correct
postgis-indexes-knn-plans, spatial-indexes-performance
- publish maps and data on the web
maplibre-vector-tiles-pmtiles, web-map-performance-privacy
remote-sensing analyst
- process and interpret remotely sensed data
map-algebra-indices, satellite-imagery-indian-missions
- merge other geospatial sources into the analysis
zonal-stats-raster-vector, resampling-reprojection
surveyor or field-data specialist
- collect and correct positions in the field
gnss-field-data-gps-tracks, ellipsoids-geoids-datums
- handle point clouds and terrain
lidar-point-clouds, dems-and-terrain
data scientist using space
- test spatial patterns and model with spatial data
spatial-autocorrelation-hotspots, spatial-machine-learning
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 skills.py
Runs on this device, in your browser. The first run downloads Python (about 13.5 MB), which is kept for the next runs.
Your run, in this browser
Twelve tasks lead to 24 lessons, and every role touches more than one module. Read a job post the same way: list its tasks, find the roles they belong to, and you know which lessons and projects to put forward.
Checkpoint
Check: GIS roles by their tasks
Job descriptions use other tools’ words for the same ideas
Many job posts are written in ArcGIS’s words, and the ideas behind them are the ones this track teaches:
| Job description says | In this track | What it is |
|---|---|---|
| feature class: In ArcGIS, a set of features of one geometry type with the same attributes, kept in a geodatabase. In open tools a GeoPackage layer or a PostGIS table plays the same part. | A layer in a GeoPackage, or a PostGIS table | Features of one geometry type with their attributes |
| Geodatabase | A GeoPackage, or a PostGIS schema | A collection of datasets in one store |
| ModelBuilder | QGIS’s model designer, saved as .model3 | A visual way to chain processing steps |
| Geoprocessing tool | A Processing algorithm, run with qgis_process | One operation with parameters |
| ArcPy scripting | PyQGIS, GeoPandas and Shapely | Automation in Python |
Esri calls a geodatabase: ArcGIS's native store for geographic datasets, held in a file system folder or in a database. A GeoPackage or a PostGIS schema plays the same part in open tools. “a collection of geographic datasets of various types”, and ModelBuilder “a visual programming language for building geoprocessing workflows” (geodatabase, ModelBuilder). Learn the concepts and the vocabulary follows; name both in an application.
Checkpoint
Check: ArcGIS terms and this track's tools
Credentials exist, and none is needed to learn the work
Credentials are offered by the tools’ makers and by examining bodies (QGIS, Esri):
| Credential | Issued by | How |
|---|---|---|
| QGIS certificate | Training organisations that QGIS accepts | To their course participants; each certificate contributes €20 to QGIS |
| Esri technical certification | Esri | Exams at foundation, associate and professional levels, through Pearson VUE |
In India
The GATE Geomatics Engineering paper (GE) covers surveying, photogrammetry, remote sensing, GNSS and GIS, map sheet numbering included; 3,582 registered for it in 2026, 2,592 sat it and 446 qualified. The National Geospatial Policy plans a Geospatial Skill Council and the registration of surveyors and GIS professionals.
This track teaches the skills, and its exercises test them as you go; it is not a credential, and it promises no particular outcome.
Checkpoint
Check: Credentials in the field
Portfolios show the work behind the skills
Portfolios answer the question a CV cannot: can you finish a piece of geospatial work? A good portfolio project states one question, its data with their licences, the method, how the result was checked, what it cannot tell, how to rerun it, and a public map that loads fast. Three projects that do this beat ten screenshots, so build portfolios from the track’s own work, where every input, licence and check is already written down. Step through the parts in the order a reader meets them:
The drawing shows the whole scene; its 7 steps are listed below.
Every step as text
- A question. A project starts from one question that someone would ask, such as which households live more than 1 km from a clinic.
- Its data. It names every source with its licence, which shows that you know where the data may go.
- Its method. The method follows in a few sentences, with the reason it was chosen.
- Its check. Then how the result was checked, with a number, so a reader can trust it.
- Its limits. Then what it cannot tell. Limits stated plainly show judgement, not weakness.
- How to rerun it. Then how to rerun it, with a pinned environment and one command, so anyone can repeat the result.
- A public map. Last, a public map that loads fast, with the credits of its data. Three projects like this beat ten screenshots.
Interview practice then rests on the same projects: most questions in a GIS interview ask what you did, why, and how you checked it.
Checkpoint
Check: What a portfolio project contains
Three interview answers, worked and scored with a rubric Pro: opens with a Pro, Premium or Ultimate pass
Interviews for GIS posts mix technical questions, scenarios and a walk through your own project. This part answers one of each in full and scores the answers with a rubric that shows what each level adds.
In this part:
- A technical question, worked: areas for every district of a state
- A scenario: a layer with no metadata, two days before a deadline
- A project walkthrough: clinic coverage in the town
- Follow-ups that test whether the answer was understood
- The weak answers, and what each one misses
- A scenario answer in four steps
about 5 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
A portfolio project built to the checklist, and checked Pro: opens with a Pro, Premium or Ultimate pass
A portfolio project is judged by its write-up as much as by its map. This part checks a draft README against seven things a hiring manager looks for, then rewrites the two weak sections.
In this part:
- Seven checks a hiring manager makes
- The two weak sections, rewritten
- What makes a project worth showing
- Publishing a project without breaking a licence
1 runnable example (Python) · about 4 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
Practise: read a job post as tasks
Write the matching as a function; the sample tests read four job posts:
Exercise · Easy · Python
Read a job post as tasks and rank the roles it fits
Write rank_roles(post, matrix) in roles.py. post is the list of tasks a job post names, and matrix maps each role to the list of its tasks, like the skills matrix of the lesson.
Return a list of (role, shared) pairs, one for every role that shares at least one task with the post, where shared is how many of the post's tasks are in that role's list. Sort the pairs by shared, largest first, and by the role's name when two are equal. A post that shares no task with any role gives [].
The sample tests read four job posts against a small matrix of three roles.
Starter code · roles.py
def rank_roles(post, matrix):
"""(role, shared tasks) for every role that shares a task with the post, most shared first."""
# Replace this line: count the shared tasks of each role, keep the roles above 0, then sort.
return [] The sample tests · test_roles.py
from roles import rank_roles
MATRIX = {
"GIS analyst": ["check new data", "spatial analysis", "design maps"],
"geospatial developer": ["code GIS applications", "keep spatial databases fast", "publish web maps"],
"remote-sensing analyst": ["process imagery", "merge other sources"],
}
def test_one_role():
"""a post whose tasks belong to one role"""
assert rank_roles(["process imagery", "merge other sources"], MATRIX) == [("remote-sensing analyst", 2)]
def test_most_shared_first():
"""a post that mixes two roles ranks the one that shares more tasks first"""
post = ["keep spatial databases fast", "publish web maps", "spatial analysis"]
assert rank_roles(post, MATRIX) == [("geospatial developer", 2), ("GIS analyst", 1)]
def test_ties_and_no_match():
"""equal counts are sorted by name, and a post with no known task matches nothing"""
assert rank_roles(["design maps", "process imagery"], MATRIX) == [("GIS analyst", 1), ("remote-sensing analyst", 1)]
assert rank_roles(["fly drones"], MATRIX) == [] A hint
For each role, count the post's tasks that are in its list, for example with sum(task in tasks for task in post), keep the roles whose count is above 0, and sort with key=lambda pair: (-pair[1], pair[0]).
Results of the sample tests
| Test | Result | Details |
|---|
What your code printed
The sample tests run on this device, in your browser (Pyodide): nothing is sent to mysmartcopilot.com. The first run downloads Python (about 13.5 MB), which is kept for the next runs. A check in your browser is feedback for you, not proof that the code is right for every input.
Then test yourself:
Practice that adapts to you
Practise this lesson
8 questions about 6 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Interview questions
Warm-up (fresher): What does a GIS analyst do that a geospatial developer usually does not, and the reverse?
An analyst answers questions with spatial data: checks new data, analyses it, and designs the maps and reports that present the answer. A developer builds the systems that do this repeatedly: pipelines, spatial databases, web maps and tools. The tasks overlap, so read a post’s task list rather than its title.
Interview practice goes further with three questions: an ArcGIS team, a project walkthrough and totals that disagree; the bank holds their first steps:
-
Fresher to mid
You have built your skills in QGIS, GeoPandas and PostGIS, and the team you are interviewing with works in ArcGIS. The interviewer asks how quickly you could be useful. What do you say, and what do you show?
-
Fresher to mid
"Walk me through one project in your portfolio." Answer it for a clinic coverage analysis of a town, in about two minutes, the way an interviewer would want to hear it.
-
Mid to senior
In a scenario round you are told: "Our dashboard's district totals of households differ from the state's report by up to 6 % in some districts. Work out why." How do you approach it, step by step, and what do you report back?
Flashcards · 6 cards
Recall it, then check
Say the answer to yourself before you look: recalling it is what makes it stick.
-
How are GIS roles best told apart?
By their daily tasks rather than their titles: O*NET's profile of GIS technologists starts with assessing new data, producing layers, maps and reports by spatial analysis, maintaining databases and designing clear maps. List a job post's tasks, then find the roles and the work that match them.
-
What does a GIS analyst do that a geospatial developer usually does not, and the reverse?
An analyst answers questions with spatial data: checks it, analyses it, and designs the maps and reports that present the answer. A developer builds the systems that do this again and again: pipelines, spatial databases, web maps and tools.
-
How do ArcGIS terms in job posts map onto this track's tools?
A feature class is a GeoPackage layer or a PostGIS table; a geodatabase a GeoPackage or a PostGIS schema; ModelBuilder is QGIS's model designer, saved as .model3; a geoprocessing tool a Processing algorithm run with qgis_process; ArcPy scripting is PyQGIS, GeoPandas and Shapely.
-
Which GIS credentials exist, and does learning the work need one?
QGIS certificates come from training organisations that QGIS accepts, for their course participants, and Esri runs exams at foundation, associate and professional levels. None is needed to learn the work: the skills come from doing it.
-
What should a GIS portfolio project state?
One question, its data with their licences, the method, how the result was checked, what it cannot tell, how to rerun it, and a public map that loads fast. Three projects like that beat ten screenshots.
-
What do most questions in a GIS interview ask about?
What you did, why you did it and how you checked it, which is why interview practice rests on your own portfolio projects.
Key takeaways
- GIS roles share titles but differ in tasks: read a job post’s tasks, not its title.
- ArcGIS terms such as feature class, geodatabase and ModelBuilder map onto GeoPackage, PostGIS and QGIS models.
- Credentials exist from QGIS, Esri and examining bodies; the skills come from doing the work.
- Portfolios prove the skills when each project states its question, data and licences, checks and limits.
Terms in this lesson
- feature class
- In ArcGIS, a set of features of one geometry type with the same attributes, kept in a geodatabase. In open tools a GeoPackage layer or a PostGIS table plays the same part.
- geodatabase
- ArcGIS's native store for geographic datasets, held in a file system folder or in a database. A GeoPackage or a PostGIS schema plays the same part in open tools.
References
- Geographic Information Systems Technologists and Technicians (15-1299.02) (O*NET OnLine, U.S. Department of Labor)
- Remote Sensing Scientists and Technologists (19-2099.01) (O*NET OnLine, U.S. Department of Labor)
- Cartographers and Photogrammetrists (17-1021.00) (O*NET OnLine, U.S. Department of Labor)
- Surveyors (17-1022.00) (O*NET OnLine, U.S. Department of Labor)
- What is a geodatabase? (ArcGIS documentation) (Esri)
- What is ModelBuilder? (ArcGIS documentation) (Esri)
- QGIS user manual: the model designer (QGIS Project)
- QGIS certification programme (QGIS Project)
- Esri technical certification (Esri)
- GATE 2027 syllabus: Geomatics Engineering (GE) (IIT Madras, organising institute of GATE 2027)
- GATE 2026 statistical and performance report (IIT Guwahati, organising institute of GATE 2026)
- National Geospatial Policy, 2022 (Gazette of India, S.O. 6095(E)), section 6 (Department of Science and Technology, published on Survey of India's site)
Report a problem with this lesson
Kept only in this browser. Your Learn progress