Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
# SPDX-FileCopyrightText:
# SPDX-License-Identifier:
# Precommit configuration file for managing code quality checks and formatting tools.
# This file defines various hooks for linting, formatting, security checks, and more.
# For more information, see https://pre-commit.com
# You can run individual hooks to check them - some also accept a arguments
# to e.g. run in verify mode.
# To run all hooks, use `pre-commit run --all-files`
# To run a single hook, use `pre-commit run <hook_id> --all-files`
# To run a single hook verbosely, use `pre-commit run <hook_id> --all-files -v`
# Tim Sutton, 2025

repos:
- repo: https://github.com/psf/black
rev: 24.4.0
Expand Down Expand Up @@ -118,3 +130,110 @@ repos:
types: [yaml]
files: ^\.github/workflows/.*\.ya?ml$
stages: [pre-commit]
- repo: local
hooks:
- id: bandit-sql
name: "🔒 Bandit - Python security analysis"
entry: bandit -r sql
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: bandit-scripts
name: "🔒 Bandit - Python security analysis"
entry: bandit -r scripts
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: bearer-sql
name: "🛡️ Bearer - Security & privacy scanner"
entry: bearer scan --exit-code 1 sql
language: system
pass_filenames: false
stages: [pre-commit]
- repo: local
hooks:
- id: bearer-scripts
name: "🛡️ Bearer - Security & privacy scanner"
entry: bearer scan --exit-code 1 scripts
language: system
pass_filenames: false
stages: [pre-commit]
- repo: local
hooks:
- id: semgrep-sql
name: "🔍 Semgrep - Static analysis"
entry: semgrep --config=auto sql
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: semgrep-scripts
name: "🔍 Semgrep - Static analysis"
entry: semgrep --config=auto scripts
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: codeql
name: "🧬 CodeQL - Code analysis"
entry: codeql database analyze ./codeql-db codeql/python-queries
language: system
types: [python]
stages: [pre-commit]
# - repo: local # needs a github token to run
# hooks:
# - id: renovate
# name: "🔄 Renovate - Dependency updater"
# entry: renovate
# language: system
# types: [json, yaml]
# stages: [pre-commit]

# This must run before reuse license compliance check
- repo: local
hooks:
- id: add-spdx-headers
name: "📄 Add SPDX headers if missing"
entry: scripts/add_spdx_headers.sh
language: script
files: \.(py|sh|sql|md|yaml|yml|json|nix|txt|toml|conf|env)$
stages: [pre-commit]

- repo: local
hooks:
- id: reuse
name: "📄 REUSE - License compliance"
entry: reuse lint
language: system
always_run: true # Ensures it runs on all files, not just staged ones
stages: [pre-commit]
- repo: local
hooks:
- id: snyk
name: "🕵️ Snyk - Vulnerability scanner"
entry: snyk test
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: pylint
name: "🦉 Pylint - Python linter"
entry: pylint .
language: system
types: [python]
stages: [pre-commit]
- repo: local
hooks:
- id: codecov
name: "📊 Codecov - Coverage reporting"
entry: codecov-cli
language: system
types: [python]
stages: [pre-commit]
3 changes: 3 additions & 0 deletions .reuse/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[reuse]
fallback-comment-style = license

18 changes: 18 additions & 0 deletions LICENSES/MIT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
MIT License

Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
Binary file removed img/Pasted image.png
Binary file not shown.
Binary file added img/interns/lindie-strijdom.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified img/roads-collection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/roads-results-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/roads-results-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed img/roads-results.png
Binary file not shown.
Binary file added img/slide-background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
107 changes: 59 additions & 48 deletions presentations/2-roads.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,117 +7,128 @@ footer: 'Kartoza (Pty) Ltd. 2025'
---

<!-- Title Slide -->
<!-- _class: lead -->

# 🌍 *Infrastructure Mapper - Roads*
# *Infrastructure Mapper - Roads*

## *Lindie Strijdom*

📅 *04/07/2025*

---

## 👩‍💻 About Me
## About Me

- Intern at **Kartoza**
- Background in spatial analysis
- Passionate about data-driven decision making, sustainable development, and map design
- Tools used: QGIS, QFieldCloud, PostgreSQL, pgAdmin, VS Code, Marp, GitHub, etc.
![bg left](../img/interns/lindie-strijdom.webp)

---
* Intern at **Kartoza**
* Background in spatial analysis
* Passionate about data-driven decision making, sustainable development, and map design
* Tools used: QGIS, QFieldCloud, PostgreSQL, pgAdmin, VS Code, Marp, GitHub, etc.

## 🧱 The Model
---

The project uses a custom PostgreSQL/PostGIS schema
## The Model

![ERD](../img/roads-erd.png)
![bg contain ](../img/roads-erd.png)

---

## 📋 The Forms
## The Forms

QGIS smart forms created to collect and validate field data efficiently.
---

![Forms Collage](../img/roads-forms.png)
![bg contain ](../img/roads-forms.png)

---

## 🏞️ Field Collection
## Field Collection

Data collected in the field using mobile GIS apps and GPS-enabled devices.

![Field Photos](../img/roads-field.png)
![bg right](../img/roads-field.png)

---

## 🗺️ Collection Results
![bg left](../img/roads-collection.png)

- **Total features collected:**
- `Points`: 108
- `Lines`: 139
- **Area covered:** 1,9 km²
## Collection Results

![Map of Features](../img/roads-collection.png)
* **Total features collected:**
* Points: 108
* Lines: 139
* **Area covered:** 1,9 km²

---

## Analysis Problem
## Analysis Problem

![Analysis Problem](../img/roads-problem.png)
---
![bg center](../img/roads-problem.png)

---

## ⚙️ Methodology
## Methodology

The custom QGIS Model Designer diagram used for repeatable spatial processing.
---

![QGIS Model](../img/roads-model.png)
![bg contain center](../img/roads-model.png)

---

## 📊 Results
## Results - 1

- Shortest distance analysis output
- Map displaying road condition
Shortest distance analysis

![Results](../img/roads-results.png)
![bg right](../img/roads-results-1.png)

---

## 💡 Insights
## Results - 2

Road condition

- Found 30 road segments (~5km total) that are in need of repair
- Found 3 road segments (~639m total) in desperate need of repair
- The local municipality should consider redoing the entirety of Burg Street
![bg left](../img/roads-results-2.png)

---

## 🔬 Further Research
## Insights

* Found 30 road segments (~5km total) that are in need of repair
* Found 3 road segments (~639m total) in desperate need of repair
* The local municipality should consider redoing the entirety of Burg Street

---

## Further Research

If I had more time, I would:

- Use more advanced networking tools (pgRouting)
- Digitize bridge and speed bump features
- Increase the study area
* Use more advanced networking tools (pgRouting)
* Digitize bridge and speed bump features
* Increase the study area

---

## 🧳 My Internship Experience
## My Internship Experience

### Highlights

- ✅ Learned to use QGIS and multiple other software/tools
- 🤝 Collaborated on a real project and gained practical experience
- 🎯 Gained confidence in presenting and communication
- 💬 Learned effective time management
* ✅ Learned to use QGIS and multiple other software/tools
* 🤝 Collaborated on a real project and gained practical experience
* 🎯 Gained confidence in presenting and communication
* 💬 Learned effective time management

---

## 📧 Contact Me
## Contact Me

<!-- _class: contact-table -->

👤 Lindie Strijdom
📨 [lindiestrijdom@gmail.com](mailto:lindiestrijdom@gmail.com)
🔗 [instagram.com/sickly_hippie](https://www.instagram.com/sickly_hippie/)
💼 [github.com/linstrijdom](https://github.com/linstrijdom)
| | |
|-----------|-------|
| 👤 Lindie Strijdom | 📨 [lindiestrijdom@gmail.com](mailto:lindiestrijdom@gmail.com) |
| 🔗 [instagram.com/sickly_hippie](https://www.instagram.com/sickly_hippie/) | 💼 [github.com/linstrijdom](https://github.com/linstrijdom) |

---

Expand Down
Loading