Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Grid speedup #844

Open
wants to merge 60 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
630dc27
Bump jinja2 from 3.1.4 to 3.1.5
dependabot[bot] Feb 3, 2025
c39afba
Bump virtualenv from 20.25.3 to 20.26.6
dependabot[bot] Feb 3, 2025
8f2cb9e
Update README.md
dragosgontariu Feb 6, 2025
e487ebc
Update README.md
dragosgontariu Feb 6, 2025
1436336
Update README.md
dragosgontariu Feb 6, 2025
3638509
Update accessibility.md
dragosgontariu Feb 6, 2025
dd8a802
Update accessibility.md
dragosgontariu Feb 6, 2025
339d956
Update accessibility.md
dragosgontariu Feb 6, 2025
023b444
Update accessibility.md
dragosgontariu Feb 6, 2025
053d613
Update accessibility.md
dragosgontariu Feb 6, 2025
9d33eb4
Update accessibility.md
dragosgontariu Feb 6, 2025
ef78471
Update accessibility.md
dragosgontariu Feb 6, 2025
c35f036
Update accessibility.md
dragosgontariu Feb 6, 2025
78ecd08
Update accessibility.md
dragosgontariu Feb 6, 2025
d255440
Update accessibility.md
dragosgontariu Feb 6, 2025
8c552e5
Update accessibility.md
dragosgontariu Feb 6, 2025
0e19e3f
Update accessibility.md
dragosgontariu Feb 6, 2025
7354ec3
Update placecharacterization.md
dragosgontariu Feb 6, 2025
e900696
Update placecharacterization.md
dragosgontariu Feb 6, 2025
d9fcd6d
Update placecharacterization.md
dragosgontariu Feb 6, 2025
d82d057
Update placecharacterization.md
dragosgontariu Feb 6, 2025
f92a7c0
Update placecharacterization.md
dragosgontariu Feb 6, 2025
701f1de
Update placecharacterization.md
dragosgontariu Feb 6, 2025
a7d0e4e
Update placecharacterization.md
dragosgontariu Feb 6, 2025
498a859
Update insights.md
dragosgontariu Feb 6, 2025
08619fe
Update placecharacterization.md
dragosgontariu Feb 6, 2025
f5e51d0
Update placecharacterization.md
dragosgontariu Feb 6, 2025
fc40362
Update placecharacterization.md
dragosgontariu Feb 6, 2025
195fb5a
Update placecharacterization.md
dragosgontariu Feb 6, 2025
a1d61bd
Update placecharacterization.md
dragosgontariu Feb 6, 2025
61d2e12
Update placecharacterization.md
dragosgontariu Feb 6, 2025
d806347
Publish in QGIS repo
timlinux Feb 6, 2025
eef561f
Merge pull request #15 from worldbank/dependabot/pip/virtualenv-20.26.6
timlinux Feb 6, 2025
4a57381
Update placecharacterization.md
dragosgontariu Feb 6, 2025
71b63a7
Merge pull request #13 from worldbank/dependabot/pip/jinja2-3.1.5
timlinux Feb 6, 2025
e5618c6
Update placecharacterization.md
dragosgontariu Feb 6, 2025
e0c8557
Merge pull request #19 from worldbank/timlinux/issue33
timlinux Feb 6, 2025
7e43666
Update datacollection.md
dragosgontariu Feb 6, 2025
3c0d9cf
WIP implementation for grid chunker in its own class
timlinux Feb 7, 2025
0e0643e
Update tests for chunker. Add geom checks
timlinux Feb 7, 2025
017a0a9
WIP Study Area prep performance improvements...
timlinux Feb 7, 2025
3c8a7bb
Use transactions for grid creations - massive speedup
timlinux Feb 8, 2025
72b9855
Count errors during processing
timlinux Feb 8, 2025
d1deb8a
Initialise gpkg path on grid chunker start
timlinux Feb 8, 2025
9388b23
Fix progress reporting and more grid creation optimisation
timlinux Feb 8, 2025
42adb1d
Adds study area summary report to geest
timlinux Feb 9, 2025
3c1b984
Iterate over study area layers for report
timlinux Feb 9, 2025
16ff958
Iterate over study area layers for report
timlinux Feb 9, 2025
f5c4de5
Study area report shows outputs on separate pages
timlinux Feb 9, 2025
69acd00
WIP templating for study area report
timlinux Feb 9, 2025
449f65c
Fix aspect ratio of maps in study area report
timlinux Feb 9, 2025
2813f50
Fix aspect ratio of maps in study area report
timlinux Feb 9, 2025
6e9fc2b
Added remove pycache script
timlinux Feb 10, 2025
6b72c18
Added some notes about ORS key
timlinux Feb 10, 2025
8e2ec75
More study area report descriptions and add grid to map in report
timlinux Feb 10, 2025
815b509
Fix merge conflicts
timlinux Feb 14, 2025
ec7060a
Merge remote-tracking branch 'upstream/grid-speedup' into grid-speedup
timlinux Feb 14, 2025
d741a78
Show version in start logs
timlinux Feb 14, 2025
754d01f
Fix transparency in windows
timlinux Feb 15, 2025
01e9068
Windows pdf open fix
timlinux Feb 15, 2025
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
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@

# Welcome to GEEST

<p align="justify">
Developed by the World Bank, <strong>GEEST (The Gender Enabling Environments Spatial Tool)</strong> is a powerful and user-friendly open-source spatial mapping tool that enables a comprehensive analysis of how various spatial factors influence women's employment and business opportunities in any geographic area of interest.

By using this tool, you can identify key areas for intervention, make data-driven decisions, and ultimately work toward creating more equitable job opportunities for women across different regions.

<p align="center">
<img src="https://github.com/worldbank/GEEST/blob/main/docs/images/new%20images/framework.png?raw=true" height=600 alt="GEEST Framework" style="border-radius:10px;">
</p>

22 changes: 16 additions & 6 deletions admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,22 @@ def install(context: typer.Context, build_src: bool = True):
build(context, clean=True) if build_src else LOCAL_ROOT_DIR / "build" / SRC_NAME
)

root_directory = (
Path.home() / f".local/share/QGIS/QGIS3/profiles/"
f"{context.obj['qgis_profile']}"
)
# For windows root dir in in AppData
if os.name == "nt":
print("User profile:")
print(os.environ["USERPROFILE"])
plugin_path = os.path.join(

"AppData", "Roaming", "QGIS", "QGIS3", "profiles", "default",
)
root_directory = os.environ["USERPROFILE"] + "\\" + plugin_path
else:
root_directory = (
Path.home() / f".local/share/QGIS/QGIS3/profiles/"
f"{context.obj['qgis_profile']}"
)

base_target_directory = root_directory / "python/plugins" / SRC_NAME
base_target_directory = os.path.join(root_directory, "python/plugins", SRC_NAME)
_log(f"Copying built plugin to {base_target_directory}...", context=context)
shutil.copytree(built_directory, base_target_directory)
_log(
Expand Down Expand Up @@ -197,7 +207,7 @@ def build(
icon_path = copy_icon(output_directory)
if icon_path is None:
_log("Could not copy icon", context=context)
compile_resources(context, output_directory)
# compile_resources(context, output_directory)
add_requirements_file(context, output_directory)
generate_metadata(context, output_directory)
return output_directory
Expand Down
6 changes: 3 additions & 3 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
"icon": "icon.png",
"experimental": true,
"deprecated": false,
"homepage": "",
"homepage": "https://github.com/worldbank/GEEST",
"tracker": "https://github.com/worldbank/GEEST/issues",
"repository": "https://github.com/worldbank/GEEST",
"tags": [],
"category": ["plugins"],
"hasProcessingProvider": "no",
"about": "GEEST was built for the practical implementation of the Geospatial Women’s Employment Analytical Framework (GeoWEAF), developed by the World Bank, which identifies the location-specific factors affecting women's access to jobs. This framework categorizes regions based on their level of support for enabling women’s access to employment. It identifies 15 critical, spatially varying factors that influence women’s job prospects, divided into three main dimensions: Contextual, Accessibility, and Place Characterization.",
"author": "Kartoza for/and The World Bank",
"author": "Kartoza for and with The World Bank",
"email": "[email protected], [email protected]",
"description": "Gender Enabling Environments Spatial Tool",
"version": "0.5.5",
"version": "0.5.9",
"changelog": "",
"server": false
}
Expand Down
198 changes: 175 additions & 23 deletions docs/userguide/accessibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This tool evaluates how easily women can access essential services and amenities

**Travel mode**: The user can select walking or driving as a travel mode, and it is recommended that the same travel mode should be selected for all accessibility factors. The default travel mode is walking due to its inclusive nature.

**Measurement**: The default measurement for travel is distance in meters, which is most appropriate for walking. These <a href="#footnote1" id="ref1">thresholds<sup>1</sup></a> are based on evidence from the literature at the factor level and are designed to provide consistency across analyses. If driving is selected as a travel mode, time in minutes is a more appropriate measurement.
**Measurement**: The default measurement for travel is distance in meters, which is most appropriate for walking. These thresholds are based on evidence from the literature at the factor level and are designed to provide consistency across analyses. If driving is selected as a travel mode, time in minutes is a more appropriate measurement.

---

Expand Down Expand Up @@ -51,6 +51,40 @@ This tool evaluates how easily women can access essential services and amenities
onclick="window.open(this.src, '_blank')">
</p>

<strong>Default</strong> Women's Travel Patterns thresholds:

<table style="width:auto; border:1px solid black; border-collapse:collapse; margin-left:0; font-size:12px;">
<tr style="border:1px solid black;">
<th style="border:1px solid black; width:250px;">Distance to Facilities (meters)</th>
<th style="border:1px solid black; width:80px; text-align:center;">Score</th>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">0 - 400</td>
<td style="border:1px solid black; text-align:center;">5</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">401 - 800</td>
<td style="border:1px solid black; text-align:center;">4</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">801 - 1,200</td>
<td style="border:1px solid black; text-align:center;">3</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">1,201 - 1,500</td>
<td style="border:1px solid black; text-align:center;">2</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">1,501 - 2,000</td>
<td style="border:1px solid black; text-align:center;">1</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">Over 2,000</td>
<td style="border:1px solid black; text-align:center;">0</td>
</tr>
</table>

<br>

**Process Women's Travel Patterns factors**

Expand Down Expand Up @@ -104,6 +138,41 @@ The successful completion of the process is indicated by the green checkmark wid
onclick="window.open(this.src, '_blank')">
</p>

<strong>Default</strong> Access to Public Transport thresholds:

<table style="width:auto; border:1px solid black; border-collapse:collapse; margin-left:0; font-size:12px;">
<tr style="border:1px solid black;">
<th style="border:1px solid black; width:250px;">Distance to Public Transport stops (meters)</th>
<th style="border:1px solid black; width:80px; text-align:center;">Score</th>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">0 - 250</td>
<td style="border:1px solid black; text-align:center;">5</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">251 - 500</td>
<td style="border:1px solid black; text-align:center;">4</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">501 - 750</td>
<td style="border:1px solid black; text-align:center;">3</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">751 - 1,000</td>
<td style="border:1px solid black; text-align:center;">2</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">1,001 - 1,250</td>
<td style="border:1px solid black; text-align:center;">1</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">Over 1,250</td>
<td style="border:1px solid black; text-align:center;">0</td>
</tr>
</table>

<br>

**Process Access to Public Transport factor**

Back in the Data Processing Interface:
Expand Down Expand Up @@ -148,6 +217,41 @@ The process should be successfully completed and indicated by a green checkmark
onclick="window.open(this.src, '_blank')">
</p>

<strong>Default</strong> Access to Health Facilities thresholds:

<table style="width:auto; border:1px solid black; border-collapse:collapse; margin-left:0; font-size:12px;">
<tr style="border:1px solid black;">
<th style="border:1px solid black; width:250px;">Distance to Health Facilities (meters)</th>
<th style="border:1px solid black; width:80px; text-align:center;">Score</th>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">0 - 2,000</td>
<td style="border:1px solid black; text-align:center;">5</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">2,001 - 4,000</td>
<td style="border:1px solid black; text-align:center;">4</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">4,001 - 6,000</td>
<td style="border:1px solid black; text-align:center;">3</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">6,001 - 8,000</td>
<td style="border:1px solid black; text-align:center;">2</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">8,001 - 10,000</td>
<td style="border:1px solid black; text-align:center;">1</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">Over 10,000</td>
<td style="border:1px solid black; text-align:center;">0</td>
</tr>
</table>

<br>

**Process Access to Health Facilities factor**

Back in the Data Processing Interface:
Expand Down Expand Up @@ -181,6 +285,41 @@ The process should be successfully completed and indicated by a green checkmark
onclick="window.open(this.src, '_blank')">
</p>

<strong>Default</strong> Access to Education and Training Facilities thresholds:

<table style="width:auto; border:1px solid black; border-collapse:collapse; margin-left:0; font-size:12px;">
<tr style="border:1px solid black;">
<th style="border:1px solid black; width:250px;">Distance to Facilities (meters)</th>
<th style="border:1px solid black; width:80px; text-align:center;">Score</th>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">0 - 2,000</td>
<td style="border:1px solid black; text-align:center;">5</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">2,001 - 4,000</td>
<td style="border:1px solid black; text-align:center;">4</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">4,001 - 6,000</td>
<td style="border:1px solid black; text-align:center;">3</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">6,001 - 8,000</td>
<td style="border:1px solid black; text-align:center;">2</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">8,001 - 10,000</td>
<td style="border:1px solid black; text-align:center;">1</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">Over 10,000</td>
<td style="border:1px solid black; text-align:center;">0</td>
</tr>
</table>

<br>

**Process Access to Education and Training Facilities factor**

Back in the Data Processing Interface:
Expand Down Expand Up @@ -214,6 +353,41 @@ The process should be successfully completed and indicated by a green checkmark
onclick="window.open(this.src, '_blank')">
</p>

<strong>Default</strong> Access to Financial Facilities thresholds:

<table style="width:auto; border:1px solid black; border-collapse:collapse; margin-left:0; font-size:12px;">
<tr style="border:1px solid black;">
<th style="border:1px solid black; width:250px;">Distance to Financial Facilities (meters)</th>
<th style="border:1px solid black; width:80px; text-align:center;">Score</th>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">0 - 400</td>
<td style="border:1px solid black; text-align:center;">5</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">401 - 800</td>
<td style="border:1px solid black; text-align:center;">4</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">801 - 1,200</td>
<td style="border:1px solid black; text-align:center;">3</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">1,201 - 2,000</td>
<td style="border:1px solid black; text-align:center;">2</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">2,001 - 3,000</td>
<td style="border:1px solid black; text-align:center;">1</td>
</tr>
<tr style="border:1px solid black;">
<td style="border:1px solid black;">Over 3,000</td>
<td style="border:1px solid black; text-align:center;">0</td>
</tr>
</table>

<br>

**Process Access to Financial Facilities factor**

Back in the Data Processing Interface:
Expand Down Expand Up @@ -265,8 +439,6 @@ After completing the process, the outputs are automatically added to the Layer P

The outputs consist of all factors and subfactors, as well as the aggregation of these into the final Accessibility output. All scores are assessed on a scale from 0 to 5, categorized as follows: ≤ 0.5 (Not Enabling) | 0.5–1.5 (Very Low Enablement) | 1.5–2.5 (Low Enablement) | 2.5–3.5 (Moderately Enabling) | 3.5–4.5 (Enabling) | 4.5–5.0 (Highly Enabling).

<span style="color: red;">[Not working - Need to be amended]</span>

The outputs are stored under the Accessibility folder within the project folder created during the setup phase as raster files. These files can be shared and further utilized for various purposes, such as visualization in QGIS or other GIS software, integration into reports, overlaying with other spatial datasets, or performing advanced geospatial analyses, such as identifying priority areas or conducting trend analysis based on the scores.

If the results do not immediately appear in the Layer Panel after processing the Accessibility Dimension, you can resolve this by either adding them manually from the folder path or by right-clicking on the Accessibility Dimension and selecting **Add to map** from the context menu:
Expand Down Expand Up @@ -300,23 +472,3 @@ If the results do not immediately appear in the Layer Panel after processing the
- **Input Accuracy**: Ensure all input datasets are carefully entered/selected and correspond to the correct factors and/or subfactors. Incorrect data will impact the outputs and subsequent analysis.

- **Weight Adjustment**: Assign weights thoughtfully to reflect the importance of each factor in the overall analysis. After making changes, always balance the weights to ensure they sum up correctly.


<small><a href="#ref1" id="footnote1"><sup>1</sup> Thresholds
<p align="left">
<small>
<span style="color: #505050;">
<strong>Women's Travel Patterns</strong> factor is scored based on the distance to facilities: 0 to 400 meters: <em>score 5</em> | 401 to 800 meters: <em>score 4</em> | 801 to 1,200 meters: <em>score 3</em> | 1,201 to 1,500 meters: <em>score 2</em> | 1,501 to 2,000 meters: <em>score 1</em> | Over 2,000 meters: <em>score 0</em>
<br>
<strong>Access to Public Transport</strong> factor is scored based on proximity: 0 to 250 meters: <em>score 5</em> | 251 to 500 meters: <em>score 4</em> | 501 to 750 meters: <em>score 3</em> | 751 to 1,000 meters: <em>score 2</em> | 1,001 to 1,250 meters: <em>score 1</em> | Over 1,250 meters: <em>score 0</em>
<br>
<strong>Access to Health Facilities</strong> factor is scored as follows: 0 to 2,000 meters: <em>score 5</em> | 2,001 to 4,000 meters: <em>score 4</em> | 4,001 to 6,000 meters: <em>score 3</em> | 6,001 to 8,000 meters: <em>score 2</em> | 8,001 to 10,000 meters: <em>score 1</em> | Over 10,000 meters: <em>score 0</em>
<br>
<strong>Access to Education and Training Facilities</strong> factor scoring: 0 to 2,000 meters: <em>score 5</em> | 2,001 to 4,000 meters: <em>score 4</em> | 4,001 to 6,000 meters: <em>score 3</em> | 6,001 to 8,000 meters: <em>score 2</em> | 8,001 to 10,000 meters: <em>score 1</em> | Over 10,000 meters: <em>score 0</em>
<br>
<strong>Access to Financial Facilities</strong> factor scoring: 0 to 400 meters: <em>score 5</em> | 401 to 800 meters: <em>score 4</em> | 801 to 1,200 meters: <em>score 3</em> | 1,201 to 2,000 meters: <em>score 2</em> | 2,001 to 3,000 meters: <em>score 1</em> | Over 3,000 meters: <em>score 0</em>
</span>
</small>


</a></small>
Loading
Loading