Giter Club home page Giter Club logo

awapic / ic Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 2.0 20.14 MB

IC QGIS plugin, calculates interface catchment within urban morphologies

Home Page: https://thud.msd.unimelb.edu.au/tools-and-models/awap-ic-an-open-source-gis-tool-for-measuring-walkable-access

License: GNU General Public License v3.0

Makefile 9.81% Python 83.56% Batchfile 3.36% Shell 2.00% QML 1.28%
urban-analytics urban-design urban-planning morphological-analysis catchment walkability

ic's Introduction

IC

IC is part of AwaP-IC - a QGIS tool that calculates the Area-weighted average Perimeter (AwaP) and Interface Catchment (IC), two measures developed by Pafka & Dovey (2017), that combined, capture the capacities of urban morphologies to enable and attract pedestrian movement. While AwaP and IC should be considered together in the analysis of walkable access, in this 2.0.3 version of the AwaP-IC software the two measures are provided by distinct plugins.

IC calculates the total length of public/private interfaces reachable from a starting point and within a given walking distance. IC is relevant for walking as most urban attractions, such as dwellings, shops and workplaces, are accessed through the public/private interface, where buildings meet the street. High IC values indicate high capacity for accommodating urban attractions. Together, these two measures account for both street width and block size, measuring both walkable access and what one gets access to.

AwaP is a measure of urban permeability, that calculates the average perimeter of urban blocks within a study area, weighing the perimeter of each block by its area. This way the impact of a large block will be proportional with the share of the study area it occupies, and its effect as a major-barrier to movement is not lost in the average. The lower the AwaP, the easier is to walk through the urban fabric. An AwaP of 400m corresponds to a square block of 100x100m, often taken as the maximum block-length that still allows good permeability.

Base requirements

The base requirement for the calculation of these measures is a layer of urban blocks drawn as polygons, or closed polylines. Lines within the blocks, such as lot subdivisions, will be ignored. However other errors in the urban blocks layer may not be recognised by the software, and may lead to errors, or long processing times. As both AwaP and IC are calculated in metres, a projected coordinate system should be used in the QGIS project. Instead of the very common WGS84 - EPSG:4326 which uses degrees as a unit for distance, the projected WGS84/Pseudo-Mercator - EPSG:3857 which measures distances in metres may be used.

IC tool

Interface catchment (IC) is a measure of the total length of public-private interfaces within a given walking distance (Pafka and Dovey 2017). The difference between IC and other catchment metrics is that it also accounts for the street width. IC looks at which edges of urban blocks may be accessed from a given starting point within a maximum walking distance. The assumption here is that a person is able to walk through any open space that is not occupied by urban blocks.

The IC tool requires the following parameters to be set (Figure 1):

  • Blocks layer - A layer containing the urban blocks for which the IC will be calculated. This layer can have polygon geometries, or linear geometries where outlines of urban blocks are represented as closed polylines.

  • Dead-end removal - A parameter that specifies if the dead-end streets should be removed from blocks prior to calculating IC, and the maximum width of the dead-end streets to be removed. Per default this option is disabled, as IC is meant to measure all attractions within walking distance, including attractions located in dead-ends. For an explanation of the dead-end removal process see Section “dead-end removal” above.

  • Starting point - A starting point from which the IC calculation will commence is required. This starting point can be set in one of three ways:

    • By selecting the starting point layer - Take into consideration the fact that there must be only one starting point defined at a time. If the starting point layer has multiple point objects, a single point which is to be set as a starting point of IC calculation needs to be selected with a selection tool in QGIS.
    • By selecting a point on the map - When the ‘SELECT’ button is clicked, the IC tool interface will temporarily disappear from the screen and wait for the user to click on the map. The map coordinates of the point where the user has clicked will be set as the starting point.
    • By defining the point coordinates - Whenever the starting point is set via one of the previously mentioned options, its coordinates will be shown in the starting point coordinates X and Y fields. However, these coordinates can be also edited directly.

    Regardless of which option has been used for selecting the starting point, when the plugin is run, the current coordinates present in these fields will be used to define the starting point for IC calculation.

  • Maximum walking distance - The distance a pedestrian can walk in the IC calculation. The default value is 400 metres, frequently used in urban planning as average walking distance.

IC GUI

Figure 1: IC plugin interface

IC instructional video:

IC (QGIS tutorial)

Reference:

Majic I. & Pafka E. (2019) AwaP-IC - An Open-Source GIS Tool for Measuring Walkable Access. Urban Science 3(2): 48.

Pafka E & Dovey K. (2017) Permeability and Interface Catchment: Measuring and Mapping Walkable Access. Journal of Urbanism 10(2): 150-162.

Acknowledgement:

The development of this software has been supported by a seed grant provided by the Transport, Health and Urban Design (THUD) Research Hub of the Melbourne School of Design.

ic's People

Contributors

awapic avatar ivan-majic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ic's Issues

Various failures in QGIS 3.12

The data is in this GeoPackage:
IC plugin bug.zip

Albury dataset

Note: this dataset should be in MGA Zone 55. Reproject the data to EPSG:28355 before trying.

Blocks layer: Albury blocks - reprojected temporary layer
Dead-end removal: NO
Starting point layer; Albury startingpoint - reprojected temporary layer
Max walking distance: 200 m
--> succeeds

Blocks layer: Albury blocks - reprojected temporary layer
Dead-end removal: YES, 40 m
Starting point layer: Albury startingpoint - reprojected temporary layer
Max walking distance: 200 m
--> fails with following error:

Traceback (most recent call last):
  File "C:/Users/.../AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\interfacecatchment\interface_catchment.py", line 904, in execute
    'FIELD_PRECISION' : 1,
  File "C:/PROGRA~1/QGIS3~1.12/apps/qgis/./python/plugins\processing\tools\general.py", line 106, in run
    return Processing.runAlgorithm(algOrName, parameters, onFinish, feedback, context)
  File "C:/PROGRA~1/QGIS3~1.12/apps/qgis/./python/plugins\processing\core\Processing.py", line 181, in runAlgorithm
    raise QgsProcessingException(msg)
_core.QgsProcessingException: There were errors executing the algorithm.

Blocks layer: Albury blocks - reprojected temporary layer
Dead-end removal: YES, 40 m
Starting point layer: Albury startingpoint - reprojected temporary layer
Max walking distance: 280 m
--> QGIS hangs

Carlton dataset

Blocks layer: Carlton blocks
Dead-end removal: NO
Starting point layer; Carlton startingpoint
Max walking distance: 200 m
--> succeeds

Blocks layer: Carlton blocks
Dead-end removal: YES, 40 m
Starting point layer; Carlton startingpoint
Max walking distance: 250 m
--> succeeds

Blocks layer: Carlton blocks
Dead-end removal: YES, 40 m
Starting point layer; Carlton startingpoint
Max walking distance: 200 m
--> fails with following error:

Traceback (most recent call last):
              File "C:/Users/.../AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\interfacecatchment\interface_catchment.py", line 908, in execute
              IC = round(next(walkable_lines_layer.getFeatures())['IC'])
             TypeError: type QVariant doesn't define __round__ method

Blocks layer: Carlton blocks
Dead-end removal: YES, 40 m
Starting point layer; Carlton startingpoint
Max walking distance: 400 m
--> QGIS hangs

Version info

Python version: 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] 
QGIS version: 3.12.3-București București, 8234261527 

plugins don't load on the latest stable version of QGIS (3.34 Prizren)

plugins don't load on the latest stable version of QGIS (3.34 Prizren)
"Python error: Couldn't load plugin 'interfacecatchment' due to an error when calling its classFactory() method See message log (Python Error) for more details."

2024-09-13T20:18:05     CRITICAL    Traceback (most recent call last):
              File "C:\PROGRA~1/QGIS33~1.10/apps/qgis-ltr/./python\qgis\utils.py", line 423, in _startPlugin
              plugins[packageName] = package.classFactory(iface)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users/elek_/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\interfacecatchment\__init__.py", line 36, in classFactory
              return InterfaceCatchment(iface)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users/elek_/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\interfacecatchment\interface_catchment.py", line 93, in __init__
              vector_layers_filter = QgsMapLayerProxyModel.Filter(8 | 16)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\PROGRA~1\QGIS33~1.10\apps\Python312\Lib\enum.py", line 757, in __call__
              return cls.__new__(cls, value)
              ^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\PROGRA~1\QGIS33~1.10\apps\Python312\Lib\enum.py", line 1171, in __new__
              raise ve_exc
             ValueError: 24 is not a valid Qgis.LayerFilter

Plugin not working in QGIS 3.22 and newer

There has been a report that the plugin is not working in QGIS 3.24.2 (Thanks Rachid for reporting!) and I have seen the same issue in other newer versions of QGIS. The plugin can be set up and started but it would not produce any results.
I have tested the plugin on my Ubuntu machine and QGIS 3.22.4 and found an exception in the following line:

IC/icworker.py

Line 433 in ccc989f

newlines.append(line.buffer(0.01, 5, 2, 2, 2))

The exception is raised due to too many arguments in the buffer function and due to the third argument being an unexcepted format (integer).
I have looked at the QGIS API documentation for this buffer function (link) and I have found that the specification of EndCapStyle argument as an integer is no longer supported since QGIS 3.22 (link).

Advice regarding block formatting.

Thanks for the plugin, it is very interesting to use, along with reading your book.

I do not have an Issue per se. As you do not have a Discussion section, I can only post here.

The advice you gave to use the simplify tool (Issue #1) was very helpful in terms of speed and in finishing the IC computation.

After some time (errors) and step-wise using distance increments, I was able to successfully complete an IC run for a walking distance of 400 m.

However I have only a vague grasp of whether I have a properly formatted the "blocks" upon which to operate the IC tool.
Like Issue 1, the blocks are not regular grids and were derived from a land use file, "dissolved" using AwaP, then simplified.
There are some large white spaces of public areas (e.g. parks, plaza etc).

Would you be able to comment on the attached files as to whether I have missed something or improve?
Attached is the original land use, the simplified blocks, the starting point and the result (400 m)

Thanks for any suggestions, or confirmation that all is OK.

Landuse.zip
Awap1394_simplified.zip
IC_starting_point.zip
IC_10729_400m.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.