SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Visualising
school
catchment
areas
Ross McDonald
@mixedbredie
& Roger Garbett
@reagarbett
Angus Council
Sec. catchment areas
Sec. catchment areas + Schools
Sec. catchment areas + Schools + Pupils
All catchment areas
All catchment areas + Schools
All catchment areas + Schools + Pupils
#cartofail
Jackson Pollock – Convergence (1952)
School Name In Catchment On roll
Arbroath Academy 723 640
Arbroath 790 858
Brechin 490 470
Carnoustie 720 732
Forfar Academy 1264 971
Monifieth 600 898
Montrose Academy 781 810
Webster’s 584 665
Convex hulls around points
How similar are the hulls v catchments?
School Hausdorff Distance
Arbroath Academy 10786.11436
Carnoustie High School 12089.85805
Forfar Academy 14875.58697
Brechin High School 16173.88699
Webster's High School 17435.49058
Arbroath High School 17897.3712
Monifieth High School 19965.69684
Montrose Academy 26048.84715
Monifieth High School 26559.60197
Monifieth High School 29441.0212
Monifieth High School 32072.78722
Forfar Academy 33494.96229
Forfar Academy 34145.29587
Webster's High School 41377.54145
ST_HausdorffDistance
School Hausdorff Distance
Timmergreens_Primary_School 1731.781666
Inverkeilor_Primary_School 2126.061069
Auchterhouse_Primary_School 2255.042931
Strathmartine_Primary_School 2692.634275
Arbirlot_Primary_School 3031.15279
Newbigging_Primary_School 3374.436552
Colliston_Primary_School 3382.872103
Inverarity_Primary_School 3671.3657
Eassie_Primary_School 4083.874877
Mattocks_Primary_School 4838.524264
Murroes_Primary_School 4944.509153
Carmyllie_Primary_School 5366.863652
Monikie_Primary_School 5605.587575
Edzell_Primary_School 5689.958939
Newtyle_Primary_School 6718.80455
Tealing_Primary_School 7054.552578
Rosemount_Primary_School 7104.241394
Stracathro_Primary_School 7737.626576
Maisondieu_Primary_School 7864.206572
Glamis_Primary_School 7897.602526
Friockheim_Primary_School 8188.045971
Muirfield_Primary_School 8248.403932
Warddykes_Primary_School 9139.01384
Borrowfield_Primary_School 9981.867569
Northmuir_Primary_School 10772.74056
Birkhill_Primary_School 11083.09715
Airlie_Primary_School 11322.43266
Tarfside_Primary_School 12599.0575
Liff_Primary_School 12607.8253
Strathmore_Primary_School 12656.01378
Aberlemno_Primary_School 12760.94431
Woodlands_Primary_School 13369.26143
Seaview_Primary_School 14594.95696
Isla_Primary_School 14998.10042
Whitehills_Primary_School 15976.5553
Cortachy_Primary_School 17253.12438
Andover_Primary_School 17681.72081
Inverbrothock_Primary_School 18383.85489
Burnside_Primary_School 18474.65586
Tannadice_Primary_School 19066.29543
Ferryden_Primary_School 19193.80757
Hayshead_Primary_School 19762.61945
Lochside_Primary_School 20013.20366
Grange_Primary_School 20923.14925
Southmuir_Primary_School 22114.15467
Carlogie_Primary_School 23437.45404
Langlands_Primary_School 25800.66565
Southesk_Primary_School 26626.14889
Ladyloan_Primary_School 53008.81887
Lochside Primary School 20013.20366
Grange Primary School 20923.14925
Southmuir Primary School 22114.15467
Carlogie Primary School 23437.45404
Langlands Primary School 25800.66565
Southesk Primary School 26626.14889
Ladyloan Primary School 53008.81887
QGIS geometry generators
Straight lines between points:
make_line(
make_point("p_easting", "p_northing"),
make_point("s_easting", "s_northing")
)
QGIS geometry generators
Kinked line between points:
make_line(
make_point("p_easting", "p_northing"),
make_point(abs("p_easting" - "s_easting")/2 +
"p_easting", abs("p_northing" - "s_northing")/2 +
"p_northing" ),
make_point("s_easting", "s_northing"))
QGIS geometry generators
Smoothed line between points:
smooth(
make_line(
make_point("p_easting","p_northing"),
make_point(abs("p_easting"-"s_easting")/2+
"p_easting", abs("p_northing"-"s_northing")/2 +
"p_northing"),
make_point("s_easting","s_northing")),
iterations:=4, offset:=0.25)
PostGIS circularstrings
CREATE OR REPLACE VIEW public.view_curvelinks AS
SELECT foo.p_id,
foo.s_uprn,
st_setsrid(st_curvetoline(st_geomfromtext(((((((((((('CIRCULARSTRING('::text || st_x(foo.start_point)) || '
'::text) || st_y(foo.start_point)) || ','::text) || (st_x(foo.middle_point) + foo.distance * cos(foo.azimuth)))
|| ' '::text) || (st_y(foo.middle_point) + foo.distance * sin(foo.azimuth))) || ','::text) ||
st_x(foo.end_point)) || ' '::text) || st_y(foo.end_point)) || ')'::text)), 27700) AS the_geom
FROM ( SELECT pupils_2018.p_id,
pupils_2018.s_uprn,
st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision) AS
start_point,
st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision) AS
end_point,
st_lineinterpolatepoint(st_makeline(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)), 0.5::double precision) AS middle_point,
pi() / 2::double precision + st_azimuth(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)) AS azimuth,
0.25::double precision * st_distance(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)) AS distance
FROM pupils_2018) foo;
st_setsrid(st_curvetoline(st_geo
mfromtext('CIRCULARSTRING(x0 y0,
x1 y1, x2 y2))),27700)
PostGIS 3D circularstrings
CREATE OR REPLACE VIEW public.view_curvelinks_3d AS
SELECT foo.p_id,
foo.s_uprn,
st_setsrid(st_curvetoline(st_geomfromtext(((((((((((((((((('CIRCULARSTRING('::text ||
st_x(foo.start_point)) || ' '::text) || st_y(foo.start_point)) || ' '::text) || 0) || ','::text) ||
st_x(foo.middle_point)) || ' '::text) || st_y(foo.middle_point)) || ' '::text) || (foo.distance / 2::double
precision)) || ','::text) || st_x(foo.end_point)) || ' '::text) || st_y(foo.end_point)) || ' '::text) || 0) ||
')'::text)), 27700) AS the_geom
FROM ( SELECT pupils_2018.p_id,
pupils_2018.s_uprn,
st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision) AS
start_point,
st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision) AS
end_point,
st_lineinterpolatepoint(st_makeline(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)), 0.5::double precision) AS middle_point,
pi() / 2::double precision + st_azimuth(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)) AS azimuth,
0.25::double precision * st_distance(st_makepoint(pupils_2018.p_easting::double precision,
pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision,
pupils_2018.s_northing::double precision)) AS distance
FROM pupils_2018) foo;
st_setsrid(st_curvetoline(st_geo
mfromtext('CIRCULARSTRING(x0 y0
z0, x1 y1 z1, x2 y2 z2))),27700)
Sec. catchment areas with arcs
Webster’s High School detail
3D arcs in QGIS2ThreeJS (sec. schools)
3D splines in Blender (sec. schools)
3D splines in Blender (pri. schools)
What
about
routes to
schools?
The situation
• 15,885 children traveling to and from
school every day
• Some travelling more than 30 minutes
each way
• Fragmented catchment areas
• Sub-optimal distribution of children (or
was it schools?)
OS MasterMap Highways Network layer
Highways Network
• Topological link and node network
• Classifications
• One ways and no entries
• Turn, height, weight, width restrictions
• Supplied as GML
• Geometry and attributes loaded into
PostGIS with FME
CREATE EXTENSION pgrouting;
Routable network in QGIS with plugin
Astar shortest path from home to school
Batch process the whole network
20 minute driving distance from school
ST_VoronoiPolygons (PostGIS 2.3.x +)
Use the database, Luke!
• 24k nodes = 24k Voronoi polygons
• QGIS ~ 4 hours
• PostGIS ~ 5 minutes
• 15,885 pupils, 57 schools
• Turn Restricted Shortest Path (with RRI)
• PostGIS ~ 2 hours
Identifying pupils with long journey times
Identifying pupils with long journey times
15 – 30 minute travel time
20 – 40 minute travel time
10 minutes from school
10 – 20 minute travel time
Fastest routes, shortest path
Fastest routes, shortest path
1 hour travel
1 hour to school
The tools
• PostgreSQL database with PostGIS and
pgRouting super powers for routing
• QGIS Time Manager for image sequences
• Avidemux for animation sequences
• FFmpeg for conversions
• QGIS2ThreeJS for interactive 3D models
• Blender for 3D visualisations
The results
15,885 daily journeys to school
43,700km travelled each day
1450 hours of daily travel time
200+ children with > 1hr daily travel
The results from the results
We’ll have to wait and see.
Grateful thanks
• QGIS PSC and devs for awesomeness
packaged
• Twitter #GISTribe and pgRouting mailing
lists
• Owen Powell and Craig Taylor for Blender
tips and inspiration
• Roger, for writing an address geocoder
Are we there yet?
mcdonaldr@angus.gov.uk
@mixedbredie
garbettrea@angus.gov.uk
@reagarbett
Next QGIS UK User Group (Scotland)
Oct/Nov 2018
http://qgis.uk/
All spider images CC BY-NC pngimg.com

Más contenido relacionado

Más de Ross McDonald

QGIS plugin for parallel processing in terrain analysis
QGIS plugin for parallel processing in terrain analysisQGIS plugin for parallel processing in terrain analysis
QGIS plugin for parallel processing in terrain analysisRoss McDonald
 
Mapping narrative: QGIS in the humanities classrom
Mapping narrative: QGIS in the humanities classromMapping narrative: QGIS in the humanities classrom
Mapping narrative: QGIS in the humanities classromRoss McDonald
 
QGIS server: the good, the not-so-good and the ugly
QGIS server: the good, the not-so-good and the uglyQGIS server: the good, the not-so-good and the ugly
QGIS server: the good, the not-so-good and the uglyRoss McDonald
 
QGIS UK Thank you for coming
QGIS UK Thank you for comingQGIS UK Thank you for coming
QGIS UK Thank you for comingRoss McDonald
 
Decision support tools for forestry using open source software
Decision support tools for forestry using open source softwareDecision support tools for forestry using open source software
Decision support tools for forestry using open source softwareRoss McDonald
 
Installing QGIS on a network
Installing QGIS on a networkInstalling QGIS on a network
Installing QGIS on a networkRoss McDonald
 
Pgrouting_foss4guk_ross_mcdonald
Pgrouting_foss4guk_ross_mcdonaldPgrouting_foss4guk_ross_mcdonald
Pgrouting_foss4guk_ross_mcdonaldRoss McDonald
 
Liam Mason QGIS Geoserver SLD
Liam Mason QGIS Geoserver SLDLiam Mason QGIS Geoserver SLD
Liam Mason QGIS Geoserver SLDRoss McDonald
 
Phil Bartie QGIS PLPython
Phil Bartie QGIS PLPythonPhil Bartie QGIS PLPython
Phil Bartie QGIS PLPythonRoss McDonald
 
John Stevenson Volcanoes and FOSS4G Edinburgh
John Stevenson Volcanoes and FOSS4G EdinburghJohn Stevenson Volcanoes and FOSS4G Edinburgh
John Stevenson Volcanoes and FOSS4G EdinburghRoss McDonald
 
Roger Garbett - QGIS Print Composer
Roger Garbett - QGIS Print ComposerRoger Garbett - QGIS Print Composer
Roger Garbett - QGIS Print ComposerRoss McDonald
 
Matt Walsh thinkWhere_QGIS_usergroup_pyqt
Matt Walsh thinkWhere_QGIS_usergroup_pyqtMatt Walsh thinkWhere_QGIS_usergroup_pyqt
Matt Walsh thinkWhere_QGIS_usergroup_pyqtRoss McDonald
 
Ross mc donald_qgis_ug_intro
Ross mc donald_qgis_ug_introRoss mc donald_qgis_ug_intro
Ross mc donald_qgis_ug_introRoss McDonald
 
Ross McDonald - PgRouting in QGIS
Ross McDonald - PgRouting in QGISRoss McDonald - PgRouting in QGIS
Ross McDonald - PgRouting in QGISRoss McDonald
 
Ross McDonald's Mixing it up on the East Side
Ross McDonald's Mixing it up on the East SideRoss McDonald's Mixing it up on the East Side
Ross McDonald's Mixing it up on the East SideRoss McDonald
 
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)Ross McDonald
 
QGIS UK: QGIS and Cartography (OS)
QGIS UK: QGIS and Cartography (OS)QGIS UK: QGIS and Cartography (OS)
QGIS UK: QGIS and Cartography (OS)Ross McDonald
 
QGIS UK: QGIS Evangelism (thinkWhere)
QGIS UK: QGIS Evangelism (thinkWhere)QGIS UK: QGIS Evangelism (thinkWhere)
QGIS UK: QGIS Evangelism (thinkWhere)Ross McDonald
 
QGIS UK: Introduction and feedback
QGIS UK: Introduction and feedbackQGIS UK: Introduction and feedback
QGIS UK: Introduction and feedbackRoss McDonald
 
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)Ross McDonald
 

Más de Ross McDonald (20)

QGIS plugin for parallel processing in terrain analysis
QGIS plugin for parallel processing in terrain analysisQGIS plugin for parallel processing in terrain analysis
QGIS plugin for parallel processing in terrain analysis
 
Mapping narrative: QGIS in the humanities classrom
Mapping narrative: QGIS in the humanities classromMapping narrative: QGIS in the humanities classrom
Mapping narrative: QGIS in the humanities classrom
 
QGIS server: the good, the not-so-good and the ugly
QGIS server: the good, the not-so-good and the uglyQGIS server: the good, the not-so-good and the ugly
QGIS server: the good, the not-so-good and the ugly
 
QGIS UK Thank you for coming
QGIS UK Thank you for comingQGIS UK Thank you for coming
QGIS UK Thank you for coming
 
Decision support tools for forestry using open source software
Decision support tools for forestry using open source softwareDecision support tools for forestry using open source software
Decision support tools for forestry using open source software
 
Installing QGIS on a network
Installing QGIS on a networkInstalling QGIS on a network
Installing QGIS on a network
 
Pgrouting_foss4guk_ross_mcdonald
Pgrouting_foss4guk_ross_mcdonaldPgrouting_foss4guk_ross_mcdonald
Pgrouting_foss4guk_ross_mcdonald
 
Liam Mason QGIS Geoserver SLD
Liam Mason QGIS Geoserver SLDLiam Mason QGIS Geoserver SLD
Liam Mason QGIS Geoserver SLD
 
Phil Bartie QGIS PLPython
Phil Bartie QGIS PLPythonPhil Bartie QGIS PLPython
Phil Bartie QGIS PLPython
 
John Stevenson Volcanoes and FOSS4G Edinburgh
John Stevenson Volcanoes and FOSS4G EdinburghJohn Stevenson Volcanoes and FOSS4G Edinburgh
John Stevenson Volcanoes and FOSS4G Edinburgh
 
Roger Garbett - QGIS Print Composer
Roger Garbett - QGIS Print ComposerRoger Garbett - QGIS Print Composer
Roger Garbett - QGIS Print Composer
 
Matt Walsh thinkWhere_QGIS_usergroup_pyqt
Matt Walsh thinkWhere_QGIS_usergroup_pyqtMatt Walsh thinkWhere_QGIS_usergroup_pyqt
Matt Walsh thinkWhere_QGIS_usergroup_pyqt
 
Ross mc donald_qgis_ug_intro
Ross mc donald_qgis_ug_introRoss mc donald_qgis_ug_intro
Ross mc donald_qgis_ug_intro
 
Ross McDonald - PgRouting in QGIS
Ross McDonald - PgRouting in QGISRoss McDonald - PgRouting in QGIS
Ross McDonald - PgRouting in QGIS
 
Ross McDonald's Mixing it up on the East Side
Ross McDonald's Mixing it up on the East SideRoss McDonald's Mixing it up on the East Side
Ross McDonald's Mixing it up on the East Side
 
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
 
QGIS UK: QGIS and Cartography (OS)
QGIS UK: QGIS and Cartography (OS)QGIS UK: QGIS and Cartography (OS)
QGIS UK: QGIS and Cartography (OS)
 
QGIS UK: QGIS Evangelism (thinkWhere)
QGIS UK: QGIS Evangelism (thinkWhere)QGIS UK: QGIS Evangelism (thinkWhere)
QGIS UK: QGIS Evangelism (thinkWhere)
 
QGIS UK: Introduction and feedback
QGIS UK: Introduction and feedbackQGIS UK: Introduction and feedback
QGIS UK: Introduction and feedback
 
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
 

Último

VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Onlineanilsa9823
 
Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...shambhavirathore45
 
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779Best VIP Call Girls Noida Sector 22 Call Me: 8448380779
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779Delhi Call girls
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxJohnnyPlasten
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxolyaivanovalion
 
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779Best VIP Call Girls Noida Sector 39 Call Me: 8448380779
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779Delhi Call girls
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...shivangimorya083
 
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptx
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptxBPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptx
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptxMohammedJunaid861692
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz1
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfadriantubila
 
ALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptxALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptxolyaivanovalion
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxolyaivanovalion
 
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al BarshaAl Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al BarshaAroojKhan71
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxolyaivanovalion
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Delhi Call girls
 

Último (20)

VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service OnlineCALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
CALL ON ➥8923113531 🔝Call Girls Chinhat Lucknow best sexual service Online
 
Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...Determinants of health, dimensions of health, positive health and spectrum of...
Determinants of health, dimensions of health, positive health and spectrum of...
 
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779Best VIP Call Girls Noida Sector 22 Call Me: 8448380779
Best VIP Call Girls Noida Sector 22 Call Me: 8448380779
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptx
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptx
 
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779Best VIP Call Girls Noida Sector 39 Call Me: 8448380779
Best VIP Call Girls Noida Sector 39 Call Me: 8448380779
 
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
 
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptx
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptxBPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptx
BPAC WITH UFSBI GENERAL PRESENTATION 18_05_2017-1.pptx
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
ALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptxALSO dropshipping via API with DroFx.pptx
ALSO dropshipping via API with DroFx.pptx
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptx
 
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al BarshaAl Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptx
 
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in  KishangarhDelhi 99530 vip 56974 Genuine Escort Service Call Girls in  Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 

Visualising school catchment areas - FOSS4GUK 2018

  • 4. Sec. catchment areas + Schools + Pupils
  • 7. All catchment areas + Schools + Pupils
  • 9. Jackson Pollock – Convergence (1952)
  • 10. School Name In Catchment On roll Arbroath Academy 723 640 Arbroath 790 858 Brechin 490 470 Carnoustie 720 732 Forfar Academy 1264 971 Monifieth 600 898 Montrose Academy 781 810 Webster’s 584 665
  • 12. How similar are the hulls v catchments? School Hausdorff Distance Arbroath Academy 10786.11436 Carnoustie High School 12089.85805 Forfar Academy 14875.58697 Brechin High School 16173.88699 Webster's High School 17435.49058 Arbroath High School 17897.3712 Monifieth High School 19965.69684 Montrose Academy 26048.84715 Monifieth High School 26559.60197 Monifieth High School 29441.0212 Monifieth High School 32072.78722 Forfar Academy 33494.96229 Forfar Academy 34145.29587 Webster's High School 41377.54145 ST_HausdorffDistance
  • 13. School Hausdorff Distance Timmergreens_Primary_School 1731.781666 Inverkeilor_Primary_School 2126.061069 Auchterhouse_Primary_School 2255.042931 Strathmartine_Primary_School 2692.634275 Arbirlot_Primary_School 3031.15279 Newbigging_Primary_School 3374.436552 Colliston_Primary_School 3382.872103 Inverarity_Primary_School 3671.3657 Eassie_Primary_School 4083.874877 Mattocks_Primary_School 4838.524264 Murroes_Primary_School 4944.509153 Carmyllie_Primary_School 5366.863652 Monikie_Primary_School 5605.587575 Edzell_Primary_School 5689.958939 Newtyle_Primary_School 6718.80455 Tealing_Primary_School 7054.552578 Rosemount_Primary_School 7104.241394 Stracathro_Primary_School 7737.626576 Maisondieu_Primary_School 7864.206572 Glamis_Primary_School 7897.602526 Friockheim_Primary_School 8188.045971 Muirfield_Primary_School 8248.403932 Warddykes_Primary_School 9139.01384 Borrowfield_Primary_School 9981.867569 Northmuir_Primary_School 10772.74056 Birkhill_Primary_School 11083.09715 Airlie_Primary_School 11322.43266 Tarfside_Primary_School 12599.0575 Liff_Primary_School 12607.8253 Strathmore_Primary_School 12656.01378 Aberlemno_Primary_School 12760.94431 Woodlands_Primary_School 13369.26143 Seaview_Primary_School 14594.95696 Isla_Primary_School 14998.10042 Whitehills_Primary_School 15976.5553 Cortachy_Primary_School 17253.12438 Andover_Primary_School 17681.72081 Inverbrothock_Primary_School 18383.85489 Burnside_Primary_School 18474.65586 Tannadice_Primary_School 19066.29543 Ferryden_Primary_School 19193.80757 Hayshead_Primary_School 19762.61945 Lochside_Primary_School 20013.20366 Grange_Primary_School 20923.14925 Southmuir_Primary_School 22114.15467 Carlogie_Primary_School 23437.45404 Langlands_Primary_School 25800.66565 Southesk_Primary_School 26626.14889 Ladyloan_Primary_School 53008.81887 Lochside Primary School 20013.20366 Grange Primary School 20923.14925 Southmuir Primary School 22114.15467 Carlogie Primary School 23437.45404 Langlands Primary School 25800.66565 Southesk Primary School 26626.14889 Ladyloan Primary School 53008.81887
  • 14.
  • 15. QGIS geometry generators Straight lines between points: make_line( make_point("p_easting", "p_northing"), make_point("s_easting", "s_northing") )
  • 16. QGIS geometry generators Kinked line between points: make_line( make_point("p_easting", "p_northing"), make_point(abs("p_easting" - "s_easting")/2 + "p_easting", abs("p_northing" - "s_northing")/2 + "p_northing" ), make_point("s_easting", "s_northing"))
  • 17. QGIS geometry generators Smoothed line between points: smooth( make_line( make_point("p_easting","p_northing"), make_point(abs("p_easting"-"s_easting")/2+ "p_easting", abs("p_northing"-"s_northing")/2 + "p_northing"), make_point("s_easting","s_northing")), iterations:=4, offset:=0.25)
  • 18. PostGIS circularstrings CREATE OR REPLACE VIEW public.view_curvelinks AS SELECT foo.p_id, foo.s_uprn, st_setsrid(st_curvetoline(st_geomfromtext(((((((((((('CIRCULARSTRING('::text || st_x(foo.start_point)) || ' '::text) || st_y(foo.start_point)) || ','::text) || (st_x(foo.middle_point) + foo.distance * cos(foo.azimuth))) || ' '::text) || (st_y(foo.middle_point) + foo.distance * sin(foo.azimuth))) || ','::text) || st_x(foo.end_point)) || ' '::text) || st_y(foo.end_point)) || ')'::text)), 27700) AS the_geom FROM ( SELECT pupils_2018.p_id, pupils_2018.s_uprn, st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision) AS start_point, st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision) AS end_point, st_lineinterpolatepoint(st_makeline(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)), 0.5::double precision) AS middle_point, pi() / 2::double precision + st_azimuth(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)) AS azimuth, 0.25::double precision * st_distance(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)) AS distance FROM pupils_2018) foo; st_setsrid(st_curvetoline(st_geo mfromtext('CIRCULARSTRING(x0 y0, x1 y1, x2 y2))),27700)
  • 19. PostGIS 3D circularstrings CREATE OR REPLACE VIEW public.view_curvelinks_3d AS SELECT foo.p_id, foo.s_uprn, st_setsrid(st_curvetoline(st_geomfromtext(((((((((((((((((('CIRCULARSTRING('::text || st_x(foo.start_point)) || ' '::text) || st_y(foo.start_point)) || ' '::text) || 0) || ','::text) || st_x(foo.middle_point)) || ' '::text) || st_y(foo.middle_point)) || ' '::text) || (foo.distance / 2::double precision)) || ','::text) || st_x(foo.end_point)) || ' '::text) || st_y(foo.end_point)) || ' '::text) || 0) || ')'::text)), 27700) AS the_geom FROM ( SELECT pupils_2018.p_id, pupils_2018.s_uprn, st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision) AS start_point, st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision) AS end_point, st_lineinterpolatepoint(st_makeline(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)), 0.5::double precision) AS middle_point, pi() / 2::double precision + st_azimuth(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)) AS azimuth, 0.25::double precision * st_distance(st_makepoint(pupils_2018.p_easting::double precision, pupils_2018.p_northing::double precision), st_makepoint(pupils_2018.s_easting::double precision, pupils_2018.s_northing::double precision)) AS distance FROM pupils_2018) foo; st_setsrid(st_curvetoline(st_geo mfromtext('CIRCULARSTRING(x0 y0 z0, x1 y1 z1, x2 y2 z2))),27700)
  • 20. Sec. catchment areas with arcs
  • 22. 3D arcs in QGIS2ThreeJS (sec. schools)
  • 23. 3D splines in Blender (sec. schools)
  • 24. 3D splines in Blender (pri. schools)
  • 25.
  • 26.
  • 27.
  • 29. The situation • 15,885 children traveling to and from school every day • Some travelling more than 30 minutes each way • Fragmented catchment areas • Sub-optimal distribution of children (or was it schools?)
  • 30. OS MasterMap Highways Network layer
  • 31. Highways Network • Topological link and node network • Classifications • One ways and no entries • Turn, height, weight, width restrictions • Supplied as GML • Geometry and attributes loaded into PostGIS with FME
  • 33. Routable network in QGIS with plugin
  • 34. Astar shortest path from home to school
  • 35. Batch process the whole network
  • 36. 20 minute driving distance from school
  • 38. Use the database, Luke! • 24k nodes = 24k Voronoi polygons • QGIS ~ 4 hours • PostGIS ~ 5 minutes • 15,885 pupils, 57 schools • Turn Restricted Shortest Path (with RRI) • PostGIS ~ 2 hours
  • 39. Identifying pupils with long journey times
  • 40. Identifying pupils with long journey times
  • 41. 15 – 30 minute travel time
  • 42. 20 – 40 minute travel time
  • 43. 10 minutes from school
  • 44. 10 – 20 minute travel time
  • 45.
  • 47.
  • 50. 1 hour to school
  • 51. The tools • PostgreSQL database with PostGIS and pgRouting super powers for routing • QGIS Time Manager for image sequences • Avidemux for animation sequences • FFmpeg for conversions • QGIS2ThreeJS for interactive 3D models • Blender for 3D visualisations
  • 52. The results 15,885 daily journeys to school 43,700km travelled each day 1450 hours of daily travel time 200+ children with > 1hr daily travel The results from the results We’ll have to wait and see.
  • 53.
  • 54. Grateful thanks • QGIS PSC and devs for awesomeness packaged • Twitter #GISTribe and pgRouting mailing lists • Owen Powell and Craig Taylor for Blender tips and inspiration • Roger, for writing an address geocoder
  • 55. Are we there yet? mcdonaldr@angus.gov.uk @mixedbredie garbettrea@angus.gov.uk @reagarbett Next QGIS UK User Group (Scotland) Oct/Nov 2018 http://qgis.uk/ All spider images CC BY-NC pngimg.com