ant.burnett.com.au https://ant.burnett.com.au Mon, 27 Sep 2021 04:09:47 +0000 en-AU hourly 1 https://wordpress.org/?v=6.7.2 https://ant.burnett.com.au/wp-content/uploads/ant-outline-200.png ant.burnett.com.au https://ant.burnett.com.au 32 32 Rest Area Opportunities with OpenRouteService and QGIS https://ant.burnett.com.au/rest-area-opportunities/ Mon, 27 Sep 2021 03:13:17 +0000 https://ant.burnett.com.au/?p=452 If you’re planning a road trip across NSW, there are over 800 official rest areas. But are there enough?

This post identifies sections of highway more than 2 hours from a rest stop. We use a local version of OpenRouteService, an extract from OpenStreetMap maps, and rest area data from Transport for NSW to determine where there are gaps in the Rest Area network.

Rest Stop Points Data

Save a copy of the GEOJSON rest stops:

To add the rest stops to QGIS:

  • Go to Layer > Add Vector Layer
  • Change source type to Directory
  • Change type to OpenFileGDB
  • Select the folder expanded above
  • Click Add
  • Click OK on the Vector Layers dialog
  • Click Close

The Rest Stops dataset contains both permanent Rest Stops and also Driver Revivers that operate at peak periods. The number of Driver Revivers in the dataset possibly changes depending on when the data was extracted. In the extract used in this study, there were only 15 or so temporary Driver Revivers, which may have been out of date.

For the purpose of this demo, we will assume all stops are active.

Highways Data

Get major highways from NSW Data Portal. Instructions at https://opendata.transport.nsw.gov.au/dataset/road-segment-data-from-datansw

  • The file is about 57MB.
  • When the email arrives, save the data in the link to your local study area directory
  • Expand the .zip file and a new folder for RoadNameExtent_EPSG4283.gdb is created.

To add the road network to QGIS:

  • Go to Layer > Add Vector Layer
  • Change source type to Directory
  • Change type to OpenFileGDB
  • Select the folder expanded above
  • Click Add
  • Click Close

The RoadNameSegment database has many MultiLineStrings. Many tools struggle with multi-lines, so let’s separate them into single parts.

  • Open the Processing Toolbox, and search for Multipart
  • Double click on the result for Multipart to singleparts
  • Set Input Layers as RoadNameExtent_EPSG4283 RoadNameExtent
  • Click Run, then Close

A new layer called Single Parts is added. Rename this to NSW Roads. There are about 117,000 segments.

For this study, we’re only interested in the major roads. These have a “functionhierarchy of less than or equal to 3:

  • Freeways and Motorways are 1
  • Highways such as Princes Highway are 2
  • Major arterials such as Epping Road are 3

To filter only the roads we need:

  • Right-click the NSW Roads layer in the Layers panel and choose Filter…
  • Double-click on functionhierarchy, then click <= button, and type the number 3
  • Click OK

Isochrones with OpenRouteService

The assumption for this study is that rest stops need to be no more than 2 hours apart on major routes.

So we will create drive time isochrones for the rest stops data.

There is a plugin for QGIS that allows us to create drive times. The plugin is called ORS Tools.

To install this plugin:

  • Go to Plugins
  • Search for ORS Tools
  • Click Install Plugin
  • Click Close

The ORS Tools plugins connects to the OpenRoutingService which offers a free API to calculate drive times. However, there are restrictions on the service in order to keep it free. One of the main restrictions is that the maximum range is 60 minutes, and the maximum distance is 120km. If we want 2-hour isochrones, then we need to find an alternative!

Install ORS

ORS can be installed in a Docker container locally, and tweaked as required.

The instructions are at https://giscience.github.io/openrouteservice/installation/Installation-and-Usage.html

The details won’t be covered here – it is very technical and depends on many inputs – operating system, CORS, Docker installs, port settings, URL parameters, OpenStreetMap extracts and more. There will be a separate blog post covering the topic. Whilst it may be a stumbling block for many, perhaps getting the theory is a good start.

When the service is up and running, it can be added as a server in the ORS configuration.

  • Click the ORS Tools icon (a black hexagon with red nodes)
  • Click on the gear icon
  • Click the Add button
  • Leave the API key blank (unless you configured it in the local install)
  • In the Base URL, enter http://localhost:8080/ors

When the service was installed, a folder called conf was created. Inside that directory is a settings file called ord-config.json.

  • Locate the isochrones tree
  • For the maximum_range_time, change the default value of 3600 to 7200. These are seconds.
  • Restart the Docker container and we’re ready to go.

Create Isochrones

  • Open the ORS Tools by clicking on the ORS icon
  • Change to Batch Jobs
  • Choose Isochrones From Layer
  • Change the Provider to your newly added local ORS Service
  • Set Input Layer as rest-stops
  • Leave travel Mode as driving-car
  • Leave Dimension as time
  • Change the Comma-Separated ranges to 120 min (which is the same as 7200 seconds)
  • Click Run

Features with no ID may cause a GenericServerError. These may or may not be important? I suspect they are records that are too far from the road network to snap to it.

What is happening is the ORS tool is travelling 2 hours in every direction from every rest point and merging those polygons into one layer.

With over 800 rest stops, that is a lot of calculations! By running locally we don’t impact any other users, nor do we consume credits as we might with other network analysis tools.

For this study, the process took 12 minutes.

A new layer called Isochrones is added to the Layers panel.

  • Click Close, and Close the ORS Tools dialog.

There are a lot of overlapping isochrones. Your computer may be pleading for mercy at this point as it tries to redraw the map layers.

It makes sense to merge this all into one isochrone since we’re only interested in sections of highway not within 2 hours of any rest stop.

  • Open the Processing Toolbox
  • Search for Dissolve
  • Double click on Vector geometry > Dissolve
  • Leave/change the Input layer to be Isochrones
  • Click the Spanner icon of the Input Layer
  • Change Invalid feature filtering to Skip (ignore) Features with Invalid Geometries
  • Click the blue triangle to return to Parameters
  • Click Run

This process took about 2 minutes. A new layer called Dissolved was added to the Layers panel.

The Dissolved layer is very complex. We’re going to split it up into tiles to achieve performance improvements.

Create a grid of 100km by 100km squares:

  • Go to Vector > Research Tools > Create grid
  • Grid type is Polygons
  • Grid extent is Calculate From Layer > Dissolved
  • Set Horizontal Spacing and Vertical Spacing to 100000m (100 km)
  • Click Close

A new layer called Grid is dded to the Layers panel.

To intersect the Grid and the Dissolved layers:

  • Search for Intersect in the Processing Toolbox
  • Double-click on Vector overlay > Intersection
  • Set the Input layer as Dissolved
  • Set the Overlay layer as Grid
  • Click Run, and when complete click Close

A new layer called Intersection is added to the Layers panel.

  • Hide the Grid, Dissolved, and Isochrones layers, and watch performance go back up.

Finding Orphan Highways

We now have all the components we need to calculate sections of highway not within 2 hours of a rest stop.

The algorithm we need is called Difference. The Difference algorithm identifies all parts of the line layer that do not fall within the polygon layer. This is very different to the Split With Lines algorithm which outputs the opposite of what we’re trying to achieve.

  • Search for Difference in the processing Toolbox
  • Double-click on the Vector overlay > Difference
  • Set the Input layer to NSW Roads
  • Set the Overlay layer to Intersection
  • Click Run

A new layer called Difference is added to the Layers panel.

To see where the orphaned segments are:

  • Right-click on Difference and choose Zoom to Layer(s)
  • Hide the Intersection layer
  • Change the styling for Difference so it really stands out by changing the line thickness to 3 in the Layer Styling panel.

Results

There will be anomalies on the map, and these will usually be caused by either missing data in the OpenStreetMap data or artefacts in the polygon generated by ORS.

For example, there is a highway segment on Bells Line of Road at Bell that turns out to be overlap issue. It is only 150m long.

We’re really only interested in the longest sections of road. Before we can look at the longest sections, we need to split MultiLineStrings into Single LineStrings.

  • Search for Multipart in the Processing Toolbox
  • Double-click on Multipart to Singleparts
  • Choose Difference as the Input Layer

A new layer called Single parts is added to the Layers panel.

We’re going to add a new virtual field for the length of each object:

  • Select the Difference layer in the Layers panel
  • Open the Field Calculator from the toolbar (abacus)
  • Check the Create virtual field
  • Name the virtual field as “segment_length” without the quotes.
  • Set the Expression to $length
  • Click OK

Consider sections of highway that are more than 20 kilometres long:

  • Right-click on Single parts in the Layers panel
  • Choose Filter…
  • Double-click on segment_length at the bottom of the list of Fields
  • Add the greater than operator (>), and 20000 as the value:
    • "segment_length" > 20000

Zoom the map to show all filtered Single parts.

To use the same styling from the Difference layer, perform the following:

  • Right-click the Difference layer
  • Go to Styles… > Copy Style > All Style Categories
  • Right-click on the Single parts layer
  • Go to Styles… > Paste Style > All Style Categories
  • Hide the Difference layer

All highways more than 2 hours from a rest stop are located in the north-west of NSW. That said, many of these ‘highways’ are unsealed roads connecting rural centres but not necessarily on the busiest of routes.

The next stage of the study might be to analyse each of these 34 sections of highway to identify potential rest stops.

The process is not perfect – but a great starting point for discussion.

Final Map

Using QGIS2Web, I created a quick map of the final orphaned segments.

]]>
Adding spatial column to an existing MySQL table https://ant.burnett.com.au/adding-spatial-column-to-existing-mysql-table/ Fri, 06 Aug 2021 05:23:33 +0000 https://ant.burnett.com.au/?p=436 Continue Reading →]]> There are a few gotchas when trying to add a spatial column to an existing MySQL table. Especially if you want to have a spatial index, which is kind of the point.

This document goes through the process I had to endure to get spatial working the way I want in MySQL. Hint: do not execute scripts on the way through – scroll to the bottom to get the one that actually works. I’ve put it here so I have a record of what I had to do to get things working.

Why MySQL and not Postgres/PostGIS?

One word – legacy. The existing MySQL 8 database has too many applications accessing data from it, and too many business processes that rely on the existing structure. Yes, PostGIS has better spatial functionality, but we’ll save that for use on fresh projects.

Engine Types

The existing database has been running for many years. The first issue is that to use spatial features reference systems in MySQL, you can’t use MyISAM. You should use InnoDB.

[box title=”Gotcha #1″ style=”default” box_color=”orangered” title_color=”#FFFFFF” radius=”3″]MyISAM doesn’t support SRIDs. Use Innodb.[/box]

In case you’re on MyISAM, the upgrade is painless.

ALTER TABLE `mydatabase`.`locations` ENGINE=InnoDB;

I already have existing columns for latitude and longitude, in WGS84. I obviously want to use those in the new spatial column.

Create Spatial Column

The new spatial column is going to be called geom.

The simplest way to add the column with an SRID is like this:

ALTER TABLE `mydatabase`.`locations`
ADD COLUMN `geom` GEOMETRY SRID 4326;

All good. To check that the SRID has been added, we can query the INFORMATION_SCHEMA:

SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS WHERE SRS_ID=4326;

With any luck, there will be one row displayed.

+---------------+--------------+--------------+-------------+----------+--------+--------------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | SRS_NAME | SRS_ID | GEOMETRY_TYPE_NAME |
+---------------+--------------+--------------+-------------+----------+--------+--------------------+
| def | mydatabase | locations | geom | WGS 84 | 4326 | geometry |
+---------------+--------------+--------------+-------------+----------+--------+--------------------+
1 row in set (0.11 sec)

Spatial Index

To use a spatial index, there has to be an SRID and the column must be defined as NOT NULL.

But before we can addNOT NULL, we need to populate geom with a default value.

If using Workbench, add the Default value of ST_SRID(POINT(0,0),4326) and ticking NOT NULL leads to this script for review:

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL SRID 4326 DEFAULT ST_SRID(POINT(0,0),4326);

If you try to run that as-is, you’ll see the following error:

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ST_SRID(POINT(0,0),4326)’ at line 2

[box title=”Gotcha #2″ style=”default” box_color=”orangered” title_color=”#FFFFFF” radius=”3″]The default value that Workbench generates needs to be wrapped in brackets “(“,”)”.[/box]

Edit the script to be:

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL DEFAULT (ST_SRID(POINT(0,0),4326));

This also generates an error:

ERROR 1138: Invalid use of NULL value

That’s weird, you think. I’ll remove the NOT NULL and add it separately.

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY NULL DEFAULT (ST_SRID(POINT(0,0),4326));

Yay, you think. We now have a default value (of POINT(0,0)) and can apply the NOT NULL requirement.

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY NOT NULL DEFAULT (ST_SRID(POINT(0,0),4326));

But this too generates an error:

ERROR 1138: Invalid use of NULL value

What is going on? There are no NULLS in the database, and the script looks correct.

If you run the INFORMATION_SCHEMA query again, you will see that there are now no tables with an SRID attribute.

[box title=”Gotcha #3″ style=”default” box_color=”orangered” title_color=”#FFFFFF” radius=”3″]MySQL deletes the SRID attribute when changing a column definition.[/box]

Investigations found that you MUST restate the full column definition, otherwise undeclared attributes will go back to default settings. For example, not restating the DEFAULT clause will unset the default value. And not restating the SRID 4326 attribute will also delete it.

Fair enough. Let’s include that SRID attribute and run it again.

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY SRID 4326 NOT NULL DEFAULT (ST_SRID(POINT(0,0),4326));

But alas, this won’t even be able to be executed. Are we having fun yet?

The next trick is to look at the CREATE syntax for the table locations, which reveals the following:

...

`geom` geometry /*!80003 SRID 4326 */ DEFAULT (st_srid(point(0,0),4326)),

...

Whoah – what is all that extra syntax around the SRID?

[box title=”Gotcha #4″ style=”default” box_color=”orangered” title_color=”#FFFFFF” radius=”3″]To specify the SRID attribute, wrap it in /*!80003 and */.[/box]

Here are the final SQL scripts that we need to add a new spatial column to MySQL before we can add a spatial index:

ALTER TABLE `mydatabase`.`locations`
ADD COLUMN `geom` GEOMETRY SRID 4326 NOT NULL DEFAULT (st_srid(point(0,0),4326)) AFTER `latitude`;

and

ALTER TABLE `mydatabase`.`locations`
CHANGE COLUMN `geom` `geom` GEOMETRY /*!80003 SRID 4326 */ NOT NULL DEFAULT (ST_SRID(POINT(0,0),4326));

I wasn’t able to run it as one query and at this point, I’m too frustrated to try.

One more check of INFORMATION_SCHEMA should show one row. Finally getting somewhere.

Add Spatial Index

ALTER TABLE locations ADD SPATIAL INDEX(geom);

The script runs and a quick check of the database looks promising.

select id, name, longitude, latitude, ST_AsText(geom), geom from locations where geom is not null limit 10;

Result:

+----+----------------------------------+------------+------------+------------------------------+------------------------------------------------------+
| id | name | longitude | latitude | ST_AsText(geom) | geom |
+----+----------------------------------+------------+------------+------------------------------+------------------------------------------------------+
| 2 | Andrews Arcade | 149.140507 | -35.315635 | POINT(-35.315635 149.140507) | 0xE610000001010000007E3B89087FA462408A3C49BA66A841C0 |
| 4 | Aranda Shopping Centre | 149.078599 | -35.256382 | POINT(-35.256382 149.078599) | 0xE61000000101000000F2CF0CE283A262403CA41820D1A041C0 |
| 5 | Australian Defence Force Academy | 149.164327 | -35.291379 | POINT(-35.291379 149.164327) | 0xE61000000101000000315BB22A42A56240DFDE35E84BA541C0 |
| 6 | Australian Institute of Sport | 149.103103 | -35.245551 | POINT(-35.245551 149.103103) | 0xE61000000101000000D3A3A99E4CA36240034015376E9F41C0 |
| 7 | Australian National University | 149.120682 | -35.277761 | POINT(-35.277761 149.120682) | 0xE61000000101000000E8667FA0DCA36240588D25AC8DA341C0 |
| 9 | Bailey's Corner | 149.130848 | -35.279591 | POINT(-35.279591 149.130848) | 0xE61000000101000000E71725E82FA46240C3A04CA3C9A341C0 |
| 15 | Brassey Hotel | 149.135194 | -35.308597 | POINT(-35.308597 149.135194) | 0xE61000000101000000B2135E8253A462406552431B80A741C0 |
| 16 | Domayne - Auburn | 151.041257 | -33.843607 | POINT(-33.843607 151.041257) | 0xE61000000101000000653733FA51E162409DD66D50FBEB40C0 |
| 17 | Domayne - Campbelltown | 150.822678 | -34.054113 | POINT(-34.054113 150.822678) | 0xE610000001010000007024D06053DA6240ECA4BE2CED0641C0 |
| 18 | Domayne - Liverpool | 150.919307 | -33.906700 | POINT(-33.9067 150.919307) | 0xE610000001010000007C7F83F66ADD624040A4DFBE0EF440C0 |
+----+----------------------------------+------------+------------+------------------------------+------------------------------------------------------+
10 rows in set (0.07 sec)

Populating spatial column with existing latitude and longitude

You’ve got this far, and just want to know how to update with existing values. (I added the extra LOCK/UNLOCK to try to get around timeout issues):

LOCK TABLES locations WRITE;
UPDATE locations l SET geom = ST_SRID(POINT(l.longitude,l.latitude),4326) where l.id>0;
UNLOCK TABLES;

I hope this helps somebody out there.

]]>
NSW Government releases flood imagery https://ant.burnett.com.au/nsw-government-releases-flood-imagery/ Mon, 26 Apr 2021 07:42:54 +0000 https://ant.burnett.com.au/?p=412 The NSW Government Department of Customer Service’s Emergency Information Coordination Unit (EICU) recently released imagery from the recent NSW floods. I was keen to see some before and afters, so built a before and after slider.

[button url=”https://floods.burnett.com.au” target=”blank” style=”default” background=”#2D89EF” color=”#FFFFFF” size=”5″ wide=”no” center=”yes” radius=”auto” icon_color=”#FFFFFF” text_shadow=”none” ]https://floods.burnett.com.au[/button]

Tips: you can use the Bookmarks near the + and – controls to zoom to a number of locations.

The photo below shows the intersection of the Colo River and the Hawkesbury River. The terrain is steep and narrow at this point. With both rivers in flood, the Paradise Cafe at Lower Portland copped the brunt of the rising waters.

The view from the Greens Road bridge over the Colo River in quieter times.

The original post is https://www.linkedin.com/posts/spatial-services-nsw_spatialdata-lidar-aerialimagery-activity-6791226976578494464-EV9C

]]>
Certificate – ArcGIS Cartography https://ant.burnett.com.au/certificate-arcgis-cartography/ Mon, 22 Mar 2021 00:06:32 +0000 https://ant.burnett.com.au/?p=406 Continue Reading →]]> A 6-week MOOC finishing in March 2021. The course covered everything in cartography from theming, animating, 3D visualisations, temporal maps, and more.

  • Symbolising a map
  • Creating Layouts for Print
  • Projections – what to use when
  • Classifying data
  • Generalising data – not as dull as it sounds but so often omitted
  • Vector Tiles vs Raster Tiles
  • Thematic mapping
  • Labels and Composition
  • Label Classes and Advanced Label Settings
  • Labels as Symbols – use a value plus colour and transparency to create a thematic map with text
  • Mapping terrain in 3D
  • Small Multiples – snapshots of a map laid out in a grid
  • Fly-through animations
  • 2D Animation through time
  • Stop-Motion Animations

A fun video as part of the course:

[youtube url=”https://youtu.be/oo4GKc8S1Xw” width=”600″ height=”400″ responsive=”yes” autoplay=”yes” mute=”no” title=”Stop-motion with ArcGIS Pro”]

]]>
Certificate – FME Desktop https://ant.burnett.com.au/certificate-fme-desktop/ Mon, 15 Mar 2021 05:01:33 +0000 https://ant.burnett.com.au/?p=402 Continue Reading →]]> I’ve always been a bit of a data person – it comes with the territory of being a mapping person. However, as a small business owner, I’ve never had the need for a product like FME. Until now that is.

A contract opportunity recently presented itself that required FME skills, so I thought I better see what’s improved since I last used the product.

The answer is a lot. Performance is vastly improved from the old versions I used, and integrations are numerous. A weekend and many exercises later, I scored 100% and a certificate for my efforts. It feels good knowing that the systems I’ve developed from scratch for clients produce similar results as established enterprise players like Safe.com.

I might just integrate this product into some other workflows I use. It looks good next to the FME merchandise I earned at the FireWaterMapathon.

 

]]>
Orienteering Summer Series #8 – Lavender Bay https://ant.burnett.com.au/ss8-lavender-bay/ Wed, 25 Nov 2020 08:00:28 +0000 https://ant.burnett.com.au/?p=386 Orienteering at Balls Head brings back quite a range of emotions.

Balls Head and Berry Island used to be the stomping ground for my cross country training back in high school. I’m pretty sure I held the record for the run from school to Waverton Park for many years. Teachers later concluded that a mass of kids crossing Union Street without looking probably wasn’t covered by insurance, and curtailed that activity.

Balls Head is also the place where my father had his car accident following a sudden heart attack almost exactly two years ago. The course went within metres of the bend that he failed to negotiate. He’d just finished a lunch with his Probus mates at the Coal Loader. He never recovered from the heart attack and passed away 6 days later.

Today my oldest son had a run too after I picked him up from school. The circle of life continues.

Map Comments

Firstly – why is the map called Lavender Bay? The map includes Waverton, North Sydney and McMahons Point but not Lavender Bay. A little strange.

When I was georeferencing the map that ended up at https://omaps.burnett.com.au/lavender-bay/ I had great troubles getting things to align. When I overlaid the GPS route from Strava the issues were confirmed – the map is very distorted!

The area around the old gas tanks in particular, as well as Balls Head itself, are not aligned to the real world.

GPS overlaid on the aerial imagery is very accurate

Same GPS, but orienteering map is way off

I notice also the map has not included roundabouts, and one is even mapped as a T-intersection.

Just a regular T-intersection?

Same GPS, but a four-way intersection with a roundabout

I’d love to get in and remap the area using NSW map resources. My name was on the original map from the 1980s, so I feel have some sort of claim to assist.

Course Highlights

Without a doubt, the leg between #23 and #10 was amazing. Check the GPS track points – there aren’t any! It was a 183m long TUNNEL.

Orienteering underground at the Coal Loader

Results

I can’t seem to break into the top 20 – this week I was 24th from 239. Perhaps not having a crap Achilles would go some way to an improvement, but speed is probably a bigger factor. I can’t blame age – my teammate from the 80s and 90s Richard Morris was the fastest competitor again, cleaning up with 590 points and no penalties. Way to go, Richard!

Results are at https://sportident.itsdamp.com/results/sss8.php

Both Richard M’s had solid runs again, keeping the young guns on their toes.

Strava

]]>
How to overlay a GPS route on an orienteering map https://ant.burnett.com.au/overlay-gps-on-orienteering-map/ Thu, 19 Nov 2020 02:10:35 +0000 https://ant.burnett.com.au/?p=342 Have you ever wanted to overlay your GPS route on top of an orienteering map? This article explains how it can be done.

A full-sized image is not a great way of interacting with an orienteering map. PDFs are OK – you can zoom and move about pretty well. But what if you want to overlay your GPS route on top of the orienteering map?

Demo

Here’s an orienteering event in Sydney from November 2020 that uses the techniques from this article.

Tools Required

This can all be done for free.

  • An orienteering map in either PDF or raster format. https://www.omaps.net/au is a great source to experiment.
  • QGIS
  • A static web server such as Netlify or any number of other solutions. There are free tiers available.

Prepare the Map

If you have a digital image of an orienteering map, chances are that it is not geographically enabled. It is just a series of pixels of different colours that went put together form a map. It is not connected to the real world, and we need it to be! This process is called georeferencing.

Import the GPX

TODO: importing GPX into QGIS

Set QGIS styles

TODO: setting some basic colurs in QGIS for the GPS track.

Export the tiles

TODO: THe processing toolbox is your friend.

Edit the HTML

TODO: Customise the default generated HTML and location of tiles.

Publish the HTML

TODO: Put the HTML and tiles where people can see them

 

]]>
Orienteering Summer Series #7 – Telopea https://ant.burnett.com.au/ss7-telopea/ Wed, 18 Nov 2020 07:01:44 +0000 https://ant.burnett.com.au/?p=341 This week saw the Sydney Summer Series orienteering venture to Western and Hills OrienteersVineyard Creek map in Telopea.

The prelude to the event suggested fun was in store:

THIS SUBLIME AND PEACEFUL POSER ALWAYS ATTRACTS.
From a scatter across the upper ‘home’ reaches, runners descend to the wonders of Vineyard Creek and beautiful creekside bush track running. As the controls draw you on and on, down and down, the clock ticks. One of Sydney’s hidden orienteering gems.

Race Review

This week I thought I’d play with a new way of presenting the final run using map tiles generated by QGIS. Here’s the final result – it took about 5 minutes to create the tiles and publish to my webserver.

Source: https://omaps.burnett.com.au/vineyard-creek/

I started off pretty fast in the footsteps of Bennelong runner Brian Brown. Brian was running fast, but making little mistakes in and around control circles allowing me to catch up. He said on Strava he had his best result yet, so I hope I helped him with that.

Sore Achilles and lack of fitness made the last two kilometres very difficult. They were mostly uphill and the time limit was coming up very quickly.

The segment from control number 2 to the finish was my fastest pace as I watched my watch tick closer to the minute 48. 47:40, 47:50 seconds, and still not there. I dabbed my SportIdent in and the record shows 48:01 – damn. 2 seconds over the minute earned me 10 penalty points on top of the other 20 points already deducted.

I finished with 500 points – two seconds faster and I would have moved from 28th to 24th. Top 20 by the end of the season?

Navigation Errors

Not too many this week!

It had been my intention to go from #9 to #16 if I was to make it back in time. Next thing I knew I’m standing next to a pipeline near #25 realising I was meant to go to #16.

Oh well, I’m at #25 now so better keep going. I lost 1 minute on the edge of the circle of #25 with a pipeline that also looked like a bridge. Decisions were made to go to #12 and grab those 20 points and hope the extra time was not wasted.

Result

According to https://sydneysummerseries.com.au/season/202021/event/7/results/order I earned a place of 28 out of 200. My best score (500) of the season so far, but still off the pace of Richard, Glenn and the young guns.

Strava

]]>
Orienteering Summer Series #6 – Forestville https://ant.burnett.com.au/ss6-forestville/ Wed, 11 Nov 2020 09:00:12 +0000 https://ant.burnett.com.au/?p=290 Round 6 of the Sydney Summer Series orienteering moved to Forestville near the Northern Beaches Hospital.

The venue may be familiar to competitors of the Great NOSH Footrace that passes through the area each year. It’s been years since I did that race, but I do remember the hard slog up the rock faces to get to Bantry Bay Road.

3D Animation

[youtube_advanced url=”https://youtu.be/XzJVel4pRV0″ width=”600″ height=”400″ responsive=”yes” controls=”yes” autohide=”no” autoplay=”yes” mute=”no” loop=”yes” rel=”no” fs=”yes” modestbranding=”yes” theme=”dark” playsinline=”no” title=”Orienteering Sydney Summer Series Event #6, Forestville”]

A humid afternoon greeted competitors in this Forestville event, starting at the home of Ferretville Rugby League Club. Great name for a sporting club!

The drive into the venue rang alarm bells – the road was very steep and there were many runners struggling to get up the hill to control #24. Time to check the contour interval – 5m on a 1:7500 map. All the planning was out the door as potential routes had to be checked for elevation!

Navigation Errors

Control 10

Coming out of the bush I missed the narrow pathway that went to control 8. A quick u-turn ensued and 46 seconds lost.

Control 13

I had promised myself before starting that I would only attempt the cluster of 24/13/3 at the end of the course if time permitted.

Temptation got the better of me and I thought I’d drop down to get #13 on the way to #20 from #8. Here’s the cartography at that area, with the route I took.

There is a lot going on in the circle for #13. There is a track that goes into the circle, then out, and around before re-entering the circle. There’s a large rockface, and a powerline too. Plus a boulder. In amongst the jungle was a water course but without the control descriptions on board I didn’t realise the clue was the track bend.

The result: a lot of fussing around trying to interpret the cartography before giving up and going back to plan A. A loss of exactly 2 minutes with no points earned. In review, I had to bash through the green to get the 20 points.

Control 30

Getting back onto Bantry Bay Road after a slog through dense vegetation meant decision time. Did I have time with 35:00 on the clock to get #30 as planned? I wasn’t feeling fresh so I elected to dump the 30 points on offer. Unfortunately, after finishing it worked out I had a minute or two to spare and could have got the 30 points on offer.

Results

According to the results at Eventor, I managed 27th out of a field of 204. A little annoying when #13 and #30 would have promoted the place to 10th.

There’s always next week – Orienteering Summer Series #7 at Telopea

Full Map

Map is copyright Bennelong Northside Orienteers

Ferretville Orienteering Map

Strava

]]>
2600 Mapping Edits in the Fire Water Mapathon https://ant.burnett.com.au/firewatermapathon/ Sat, 31 Oct 2020 23:47:11 +0000 https://ant.burnett.com.au/?p=239 I’m guilty of sometimes getting stuck in an OpenStreetMaps session telling myself ‘just one more edit’. To put this trait to good use, this weekend I participated in the FireWaterMapathon.

The weekend was organised by the Surveying and Spatial Sciences Institute. The aim was to prepare for the upcoming 2020/2021 bush fire season, and focussed on the areas that dodged the disaster that was the 2019/2020 fire season.

The event was hosted on https://www.hotosm.org/, a platform I had heard of but never used. Humanitarian OpenStreetMapping Team (HOT) is an international team dedicated to humanitarian action and community development through open mapping. Volunteers work together to provide map data which revolutionises disaster management, reduces risks, and contributes to the achievement of the Sustainable Development Goals.

The data being mapped was all dams, swimming pools and water tanks in several areas of Victoria and South Australia. I chose Central Victoria, as there are some of the best gold mining terrain orienteering maps in the world that I could revisit. Being able to see this terrain from the air with high-resolution aerial imagery put a whole new perspective on running there.

Although it was a 24 hour event, sponsors Nearmap kept their API open for an extended period allowing me to rack up over 29 hours of mapping! Some 2700 features later, I was kinda glad to not have to see any more backyard trampolines.

Thanks SSSI, NGIS, Nearmap and others.

]]>