Created
July 28, 2012 07:56
-
-
Save andrewharvey/3192345 to your computer and use it in GitHub Desktop.
ASGS 2011 Mesh Block Statistics and Graphs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl -w | |
# Converts CSV data into JSON as required by NVD3.js | |
# This script is licensed CC0 by Andrew Harvey <andrew.harvey4@gmail.com> | |
# | |
# To the extent possible under law, the person who associated CC0 | |
# with this work has waived all copyright and related or neighboring | |
# rights to this work. | |
# http://creativecommons.org/publicdomain/zero/1.0/ | |
use strict; | |
use JSON; | |
# check usage | |
if (!defined $ARGV[0]) { | |
print STDERR "Usage: $0 <dataset_name>\n"; | |
exit 1; | |
} | |
# make a new JSON OO object using the pretty printer | |
my $json = JSON->new->pretty; | |
# make a new JSON OO object without using the pretty printer | |
#my $json = JSON->new; | |
# list of rows (where rows are hashrefs) | |
my @rows; | |
while (<STDIN>) { | |
chomp; | |
my ($label, $value) = split /,/; | |
my $row_ref = { "label" => $label, "value" => $value }; | |
push @rows, $row_ref; | |
} | |
my $hash_ref = { "key" => "$ARGV[0]", "values" => \@rows}; | |
# convert from perl data structures to JSON | |
print $json->encode($hash_ref); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# This script is licensed CC0 by Andrew Harvey <andrew.harvey4@gmail.com> | |
# | |
# To the extent possible under law, the person who associated CC0 | |
# with this work has waived all copyright and related or neighboring | |
# rights to this work. | |
# http://creativecommons.org/publicdomain/zero/1.0/ | |
# declare functions | |
csv () { | |
psql --output="csv/$1.csv" --no-align --field-separator=',' --tuples-only --command="$2" | |
} | |
mkdir -p csv | |
# create csv files | |
csv category_counts 'SELECT category, count(code) FROM asgs_2011.mb GROUP BY category ORDER BY count DESC;' | |
csv category_areas 'SELECT category, sum(ST_Area(geom)) FROM asgs_2011.mb GROUP BY category ORDER BY sum DESC;' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ## Before you Run | |
# You need to have a PostgreSQL database up and running with data | |
# populated by asgs2pgsql - https://github.com/andrewharvey/asgs2pgsql | |
# | |
# You also need to ensure you PG* environment variables are set up. | |
# See http://www.postgresql.org/docs/current/static/libpq-envars.html | |
# ## License | |
# This script is licensed CC0 by Andrew Harvey <andrew.harvey4@gmail.com> | |
# | |
# To the extent possible under law, the person who associated CC0 | |
# with this work has waived all copyright and related or neighboring | |
# rights to this work. | |
# http://creativecommons.org/publicdomain/zero/1.0/ | |
all : csv json | |
csv : | |
./make-csv.sh | |
json : | |
mkdir -p json | |
./csv2json.pl "Mesh Block Counts by Category" < csv/category_counts.csv > json/asgs_2011-mb-counts-by-category.json | |
./csv2json.pl "Mesh Block Areas by Category" < csv/category_areas.csv > json/asgs_2011-mb-areas-by-category.json | |
clean : | |
rm -rf csv json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
The data following is derived from the Australian Bureau of Statistics <a href="http://abs.gov.au/websitedbs/D3310114.nsf/home/Australian+Statistical+Geography+Standard+(ASGS)">Australian Statistical Geography Standard 2011</a>, Mesh Block Structure, which is © Commonwealth of Australia and used under the terms of the <a href="http://creativecommons.org/licenses/by/2.5/au/">Creative Commons Attribution 2.5 Australia license</a>. | |
*/ | |
// The JSON generated by https://gist.github.com/3192345 | |
var mbCountsByCategory = [ | |
{ | |
"values" : [ | |
{ | |
"value" : "218268", | |
"label" : "Residential" | |
}, | |
{ | |
"value" : "63504", | |
"label" : "Parkland" | |
}, | |
{ | |
"value" : "25348", | |
"label" : "Agricultural" | |
}, | |
{ | |
"value" : "17007", | |
"label" : "Commercial" | |
}, | |
{ | |
"value" : "8217", | |
"label" : "Education" | |
}, | |
{ | |
"value" : "7636", | |
"label" : "Industrial" | |
}, | |
{ | |
"value" : "4963", | |
"label" : "Water" | |
}, | |
{ | |
"value" : "1587", | |
"label" : "Transport" | |
}, | |
{ | |
"value" : "780", | |
"label" : "Hospital/Medical" | |
}, | |
{ | |
"value" : "209", | |
"label" : "Other" | |
}, | |
{ | |
"value" : "78", | |
"label" : "SHIPPING" | |
}, | |
{ | |
"value" : "11", | |
"label" : "MIGRATORY" | |
}, | |
{ | |
"value" : "9", | |
"label" : "NOUSUALRESIDENCE" | |
}, | |
{ | |
"value" : "9", | |
"label" : "OFFSHORE" | |
}, | |
{ | |
"value" : "1", | |
"label" : "ANTARCTICA" | |
} | |
], | |
"key" : "Mesh Block Counts by Category" | |
} | |
]; | |
var mbAreasByCategory = [ | |
{ | |
"values" : [ | |
{ | |
"value" : "", | |
"label" : "SHIPPING" | |
}, | |
{ | |
"value" : "", | |
"label" : "NOUSUALRESIDENCE" | |
}, | |
{ | |
"value" : "", | |
"label" : "MIGRATORY" | |
}, | |
{ | |
"value" : "", | |
"label" : "ANTARCTICA" | |
}, | |
{ | |
"value" : "", | |
"label" : "OFFSHORE" | |
}, | |
{ | |
"value" : "8735597731289.3", | |
"label" : "Agricultural" | |
}, | |
{ | |
"value" : "814972676479.451", | |
"label" : "Parkland" | |
}, | |
{ | |
"value" : "55298999431.0938", | |
"label" : "Water" | |
}, | |
{ | |
"value" : "37317863100.6699", | |
"label" : "Residential" | |
}, | |
{ | |
"value" : "3502212306.95312", | |
"label" : "Other" | |
}, | |
{ | |
"value" : "2821416542.81445", | |
"label" : "Industrial" | |
}, | |
{ | |
"value" : "1455170802.60547", | |
"label" : "Commercial" | |
}, | |
{ | |
"value" : "797830048.066406", | |
"label" : "Education" | |
}, | |
{ | |
"value" : "263896961.103516", | |
"label" : "Transport" | |
}, | |
{ | |
"value" : "74288617.5273438", | |
"label" : "Hospital/Medical" | |
} | |
], | |
"key" : "Mesh Block Areas by Category" | |
} | |
]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<!-- | |
This file is licenced CC0 http://creativecommons.org/publicdomain/zero/1.0/ | |
--> | |
<head> | |
<meta charset="utf-8"> | |
<title>ABS ASGS 2011 Mesh Block Statistics</title> | |
<link href="/javascript/nvd3/nv.d3.css" rel="stylesheet" type="text/css"> | |
<script src="/javascript/d3/d3.js"></script> | |
<script src="/javascript/nvd3/nv.d3.min.js"></script> | |
<script src="mesh-block-graphs-data.js"></script> | |
</head> | |
<body> | |
<h1>ABS ASGS 2011 Mesh Block Statistics</h1> | |
<h2 id="mbAreasByCategoryTitle">Mesh Blocks Total Area by Category</h2> | |
<svg id="mbAreasByCategory"></svg> | |
<h2 id="mbAreasByCategoryTitle">Mesh Block Counts by Category</h2> | |
<svg id="mbCountsByCategory"></svg> | |
<p><a href="/leaflet.html#lat=-28;lon=133;zoom=5;map=asgs-2011-mb">See here for a geographic representation of the mesh blocks.</a></p> | |
<footer>These graphs are derived from data obtained from the Australian Bureau of Statistics <a href="http://abs.gov.au/websitedbs/D3310114.nsf/home/Australian+Statistical+Geography+Standard+(ASGS)">Australian Statistical Geography Standard 2011</a>, Mesh Block Structure, which is © Commonwealth of Australia and used under the terms of the <a href="http://creativecommons.org/licenses/by/2.5/au/">Creative Commons Attribution 2.5 Australia license</a>.</footer> | |
<script> | |
nv.addGraph(function() { | |
var width = 500, | |
height = 500; | |
var chart = nv.models.pieChart() | |
.x(function(d) { return d.label }) | |
.y(function(d) { return d.value }) | |
.color(d3.scale.category10().range()) | |
.valueFormat(d3.format(',f')) | |
.width(width) | |
.height(height); | |
d3.select("#mbCountsByCategory") | |
.datum(mbCountsByCategory) | |
.transition().duration(1200) | |
.attr('width', width) | |
.attr('height', height) | |
.call(chart); | |
return chart; | |
}); | |
nv.addGraph(function() { | |
var width = 500, | |
height = 500; | |
var chart = nv.models.pieChart() | |
.x(function(d) { return d.label }) | |
.y(function(d) { return d.value / Math.pow(10,6) }) // x 10^6 for km^2 | |
.color(d3.scale.category10().range()) | |
.valueFormat(d3.format(',f')) | |
.width(width) | |
.height(height); | |
// FIXME help how do I override this? | |
//chart.tooltipContent = function (key, y, e, graph) { | |
// return '<h3>' + key + '</h3>' + | |
// '<p>' + y + ' km<sup>2</sup></p>' | |
// }; | |
d3.select("#mbAreasByCategory") | |
.datum(mbAreasByCategory) | |
.transition().duration(1200) | |
.attr('width', width) | |
.attr('height', height) | |
.call(chart); | |
return chart; | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment