diff --git a/DESCRIPTION b/DESCRIPTION index 2422866..e1256ca 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: yyjsonr Type: Package Title: Fast JSON Parser and Generator -Version: 0.1.18.9004 +Version: 0.1.18.9005 Authors@R: c( person("Mike", "Cheng", role = c("aut", "cre", 'cph'), email = "mikefc@coolbutuseless.com"), diff --git a/NAMESPACE b/NAMESPACE index ef2ea92..5ea6ab4 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,7 +1,11 @@ # Generated by roxygen2: do not edit by hand +export(opts_read_geojson) export(opts_read_json) +export(opts_write_geojson) export(opts_write_json) +export(read_geojson_file) +export(read_geojson_str) export(read_json_conn) export(read_json_file) export(read_json_raw) @@ -10,6 +14,8 @@ export(read_ndjson_file) export(read_ndjson_str) export(validate_json_file) export(validate_json_str) +export(write_geojson_file) +export(write_geojson_str) export(write_json_file) export(write_json_str) export(write_ndjson_file) diff --git a/NEWS.md b/NEWS.md index b36a90c..ff004dc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,7 @@ +# yyjsonr 0.1.18.9005 2024-03-16 + +* Re-introduce GeoJSON support # yyjsonr 0.1.18.9004 2024-03-15 diff --git a/R/geojson.R b/R/geojson.R new file mode 100644 index 0000000..cda0647 --- /dev/null +++ b/R/geojson.R @@ -0,0 +1,131 @@ + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Options for reading in GeoJSON +#' +#' @param property_promotion What is the most general container type to use when +#' properties differ across a FEATURECOLLECTION? E.g. if the property +#' exists both as a numeric and a string, should all values be promoted +#' to a 'string', or contained as different types in a 'list'. +#' Default: 'string' will behave like 'geojsonsf' +#' @param type 'sf' or 'sfc' +#' @param property_promotion_lgl_as_int when promoting properties into a string, +#' should logical values become strings e.g. "TRUE" or integers +#' e.g. "1". Default: "integer" in order to match `geojsonsf` packages +#' +#' @return named list +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +opts_read_geojson <- function(type = c('sf', 'sfc'), + property_promotion = c('string', 'list'), + property_promotion_lgl_as_int = c('integer', 'string')) { + structure( + list( + type = match.arg(type), + property_promotion = match.arg(property_promotion) + ), + class = "opts_read_geojson" + ) +} + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Options for writing from \code{sf} object to \code{GeoJSON} +#' +#' Currently no options available. +#' +#' @return named list of options +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +opts_write_geojson <- function() { + structure( + list( + + ), + class = "opts_write_geojson" + ) +} + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Load GeoJSON as \code{sf} object +#' +#' @param filename filename +#' @param str single character string containing GeoJSON +#' @param opts named list of options. Usually created with \code{opts_read_geojson()}. +#' Default: empty \code{list()} to use the default options. +#' @param ... any extra named options override those in \code{opts} +#' +#' @return \code{sf} object +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +read_geojson_str <- function(str, opts = list(), ...) { + opts <- modify_list(opts, list(...)) + + .Call( + parse_geojson_str_, + str, + opts, # geojson parse opts + list(yyjson_read_flag = 0L) # general parse opts + ) +} + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' @rdname read_geojson_str +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +read_geojson_file <- function(filename, opts = list(), ...) { + opts <- modify_list(opts, list(...)) + + .Call( + parse_geojson_file_, + filename, + opts, # geojson parse opts + list(yyjson_read_flag = 0L) # general parse opts + ) +} + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Write SF to GeoJSON string +#' +#' @param x \code{sf} object. Supports \code{sf} or \code{sfc} +#' @param filename filename +#' @param opts named list of options. Usually created with \code{opts_write_geojson()}. +#' Default: empty \code{list()} to use the default options. +#' @param ... any extra named options override those in \code{opts} +#' @param digits decimal places to keep for floating point numbers. Default: -1. +#' Positive values specify number of decimal places. Using zero will +#' write the numeric value as an integer. Values less than zero mean that +#' the floating point value should be written as-is (the default). +#' +#' @return character string containing json +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +write_geojson_str <- function(x, opts = list(), ..., digits = -1) { + opts <- modify_list(opts, list(...)) + + .Call( + serialize_sf_to_str_, + x, + opts, # geojson serialize opts + list(yyjson_write_flag = 0L, digits = digits) # general serialize opts + ) +} + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' @rdname write_geojson_str +#' @export +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +write_geojson_file <- function(x, filename, opts = list(), ..., digits = -1) { + opts <- modify_list(opts, list(...)) + + .Call( + serialize_sf_to_file_, + x, + filename, + opts, # geojson serialize opts + list(yyjson_write_flag = 0L, digits = digits) # general serialize opts + ) + + invisible() +} diff --git a/man/opts_read_geojson.Rd b/man/opts_read_geojson.Rd new file mode 100644 index 0000000..6fc476b --- /dev/null +++ b/man/opts_read_geojson.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geojson.R +\name{opts_read_geojson} +\alias{opts_read_geojson} +\title{Options for reading in GeoJSON} +\usage{ +opts_read_geojson( + type = c("sf", "sfc"), + property_promotion = c("string", "list"), + property_promotion_lgl_as_int = c("integer", "string") +) +} +\arguments{ +\item{type}{'sf' or 'sfc'} + +\item{property_promotion}{What is the most general container type to use when +properties differ across a FEATURECOLLECTION? E.g. if the property +exists both as a numeric and a string, should all values be promoted +to a 'string', or contained as different types in a 'list'. +Default: 'string' will behave like 'geojsonsf'} + +\item{property_promotion_lgl_as_int}{when promoting properties into a string, +should logical values become strings e.g. "TRUE" or integers +e.g. "1". Default: "integer" in order to match \code{geojsonsf} packages} +} +\value{ +named list +} +\description{ +Options for reading in GeoJSON +} diff --git a/man/opts_write_geojson.Rd b/man/opts_write_geojson.Rd new file mode 100644 index 0000000..4185595 --- /dev/null +++ b/man/opts_write_geojson.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geojson.R +\name{opts_write_geojson} +\alias{opts_write_geojson} +\title{Options for writing from \code{sf} object to \code{GeoJSON}} +\usage{ +opts_write_geojson() +} +\value{ +named list of options +} +\description{ +Currently no options available. +} diff --git a/man/read_geojson_str.Rd b/man/read_geojson_str.Rd new file mode 100644 index 0000000..748110b --- /dev/null +++ b/man/read_geojson_str.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geojson.R +\name{read_geojson_str} +\alias{read_geojson_str} +\alias{read_geojson_file} +\title{Load GeoJSON as \code{sf} object} +\usage{ +read_geojson_str(str, opts = list(), ...) + +read_geojson_file(filename, opts = list(), ...) +} +\arguments{ +\item{str}{single character string containing GeoJSON} + +\item{opts}{named list of options. Usually created with \code{opts_read_geojson()}. +Default: empty \code{list()} to use the default options.} + +\item{...}{any extra named options override those in \code{opts}} + +\item{filename}{filename} +} +\value{ +\code{sf} object +} +\description{ +Load GeoJSON as \code{sf} object +} diff --git a/man/write_geojson_str.Rd b/man/write_geojson_str.Rd new file mode 100644 index 0000000..4475c07 --- /dev/null +++ b/man/write_geojson_str.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geojson.R +\name{write_geojson_str} +\alias{write_geojson_str} +\alias{write_geojson_file} +\title{Write SF to GeoJSON string} +\usage{ +write_geojson_str(x, opts = list(), ..., digits = -1) + +write_geojson_file(x, filename, opts = list(), ..., digits = -1) +} +\arguments{ +\item{x}{\code{sf} object. Supports \code{sf} or \code{sfc}} + +\item{opts}{named list of options. Usually created with \code{opts_write_geojson()}. +Default: empty \code{list()} to use the default options.} + +\item{...}{any extra named options override those in \code{opts}} + +\item{digits}{decimal places to keep for floating point numbers. Default: -1. +Positive values specify number of decimal places. Using zero will +write the numeric value as an integer. Values less than zero mean that +the floating point value should be written as-is (the default).} + +\item{filename}{filename} +} +\value{ +character string containing json +} +\description{ +Write SF to GeoJSON string +} diff --git a/src/geojson-parse.c b/src/geojson-parse.c new file mode 100644 index 0000000..37413b1 --- /dev/null +++ b/src/geojson-parse.c @@ -0,0 +1,1631 @@ + + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "yyjson.h" +#include "R-yyjson-parse.h" + +#define SF_POINT 1 << 1 +#define SF_MULTIPOINT 1 << 2 +#define SF_LINESTRING 1 << 3 +#define SF_MULTILINESTRING 1 << 4 +#define SF_POLYGON 1 << 5 +#define SF_MULTIPOLYGON 1 << 6 +#define SF_FEATURE_COLLECTION 1 << 7 +#define SF_GEOMETRY_COLLECTION 1 << 8 + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Make a CRS string to match what is done by: geojsonsf::geojson_sf() +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP make_crs(void) { + SEXP crs_ = PROTECT(allocVector(VECSXP, 2)); + SEXP nms_ = PROTECT(allocVector(STRSXP, 2)); + SET_STRING_ELT(nms_, 0, mkChar("input")); + SET_STRING_ELT(nms_, 1, mkChar("wkt")); + setAttrib(crs_, R_NamesSymbol, nms_); + setAttrib(crs_, R_ClassSymbol, mkString("crs")); + SET_VECTOR_ELT(crs_, 0, mkString("4326")); + SET_VECTOR_ELT(crs_, 1, mkString("GEOGCS[\"WGS 84\",\n DATUM[\"WGS_1984\",\n SPHEROID[\"WGS 84\",6378137,298.257223563,\n AUTHORITY[\"EPSG\",\"7030\"]],\n AUTHORITY[\"EPSG\",\"6326\"]],\n PRIMEM[\"Greenwich\",0,\n AUTHORITY[\"EPSG\",\"8901\"]],\n UNIT[\"degree\",0.0174532925199433,\n AUTHORITY[\"EPSG\",\"9122\"]],\n AXIS[\"Latitude\",NORTH],\n AXIS[\"Longitude\",EAST],\n AUTHORITY[\"EPSG\",\"4326\"]]")); + + UNPROTECT(2); + return crs_; +} + +#define SF_TYPE 1 // data.frame +#define SFC_TYPE 2 // list + +#define PROP_TYPE_LIST 0 +#define PROP_TYPE_STRING 1 + +#define PROP_LGL_AS_STR 0 +#define PROP_LGL_AS_INT 1 + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// GeoJSON Parse options +// - this also contains state information i.e. +// - current bounding box accumulations +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +typedef struct { + bool property_promotion; + bool property_promotion_lgl_as_int; // When promoting properties to string, should lgl be '1' or 'TRUE"? + unsigned int type; + unsigned int yyjson_read_flag; + parse_options *parse_opt; + double xmin; + double ymin; + double xmax; + double ymax; + double zmin; + double zmax; + double mmin; + double mmax; +} geo_parse_options; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Initialise geo_parse_opts from an R named list from the user +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +geo_parse_options create_geo_parse_options(SEXP geo_opts_) { + geo_parse_options opt = { + .property_promotion = PROP_TYPE_STRING, // emulate 'geojsonsf' behaviour + .property_promotion_lgl_as_int = PROP_LGL_AS_INT, // emulate 'geojsonsf' behaviour + .type = SF_TYPE, + .yyjson_read_flag = 0, + .xmin = INFINITY, + .ymin = INFINITY, + .xmax = -INFINITY, + .ymax = -INFINITY, + .zmin = INFINITY, + .zmax = -INFINITY, + .mmin = INFINITY, + .mmax = -INFINITY + }; + + if (isNull(geo_opts_) || length(geo_opts_) == 0) { + return opt; + } + + if (!isNewList(geo_opts_)) { + error("'geo_opts_' must be a list"); + } + + SEXP nms_ = getAttrib(geo_opts_, R_NamesSymbol); + if (isNull(nms_)) { + error("'geo_opts_' must be a named list"); + } + + for (int i = 0; i < length(geo_opts_); i++) { + const char *opt_name = CHAR(STRING_ELT(nms_, i)); + SEXP val_ = VECTOR_ELT(geo_opts_, i); + + if (strcmp(opt_name, "property_promotion") == 0) { + const char *val = CHAR(STRING_ELT(val_, 0)); + opt.property_promotion = strcmp(val, "string") == 0 ? PROP_TYPE_STRING : PROP_TYPE_LIST; + } else if (strcmp(opt_name, "property_promotion_lgl_as_int") == 0) { + const char *val = CHAR(STRING_ELT(val_, 0)); + opt.property_promotion_lgl_as_int = strcmp(val, "string") == 0 ? PROP_LGL_AS_STR : PROP_LGL_AS_INT; + } else if (strcmp(opt_name, "type") == 0) { + const char *val = CHAR(STRING_ELT(val_, 0)); + opt.type = strcmp(val, "sf") == 0 ? SF_TYPE : SFC_TYPE; + } else { + warning("geo_opt: Unknown option ignored: '%s'\n", opt_name); + } + } + + + return opt; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// reset the bounding box in 'opt' +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +void reset_bbox(geo_parse_options *opt) { + opt->xmin = INFINITY; + opt->ymin = INFINITY; + opt->xmax = -INFINITY; + opt->ymax = -INFINITY; + opt->zmin = INFINITY; + opt->zmax = -INFINITY; + opt->mmin = INFINITY; + opt->mmax = -INFINITY; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Make an R bbox object based upon the current bbox in 'opt' +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP make_bbox(geo_parse_options *opt) { + + int nprotect = 0; + + SEXP bbox_ = PROTECT(allocVector(REALSXP, 4)); nprotect++; + REAL(bbox_)[0] = R_FINITE(opt->xmin) ? opt->xmin : NA_REAL; + REAL(bbox_)[1] = R_FINITE(opt->ymin) ? opt->ymin : NA_REAL; + REAL(bbox_)[2] = R_FINITE(opt->xmax) ? opt->xmax : NA_REAL; + REAL(bbox_)[3] = R_FINITE(opt->ymax) ? opt->ymax : NA_REAL; + SEXP bbox_nms_ = PROTECT(allocVector(STRSXP, 4)); nprotect++; + SET_STRING_ELT(bbox_nms_, 0, mkChar("xmin")); + SET_STRING_ELT(bbox_nms_, 1, mkChar("ymin")); + SET_STRING_ELT(bbox_nms_, 2, mkChar("xmax")); + SET_STRING_ELT(bbox_nms_, 3, mkChar("ymax")); + setAttrib(bbox_, R_NamesSymbol, bbox_nms_); + setAttrib(bbox_, R_ClassSymbol, mkString("bbox")); + + UNPROTECT(nprotect); + return bbox_; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Make a z-range object +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP make_z_range(geo_parse_options *opt) { + + int nprotect = 0; + + SEXP z_range_ = PROTECT(allocVector(REALSXP, 2)); nprotect++; + REAL(z_range_)[0] = R_FINITE(opt->zmin) ? opt->zmin : NA_REAL; + REAL(z_range_)[1] = R_FINITE(opt->zmax) ? opt->zmax : NA_REAL; + SEXP z_range_nms_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + SET_STRING_ELT(z_range_nms_, 0, mkChar("zmin")); + SET_STRING_ELT(z_range_nms_, 1, mkChar("zmax")); + setAttrib(z_range_, R_NamesSymbol, z_range_nms_); + setAttrib(z_range_, R_ClassSymbol, mkString("z_range")); + + UNPROTECT(nprotect); + return z_range_; +} + + +bool needs_z_range(geo_parse_options *opt) { + return R_FINITE(opt->zmin) && + R_FINITE(opt->zmax) && + opt->zmin != NA_REAL && + opt->zmax != NA_REAL + ; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Make a z-range object +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP make_m_range(geo_parse_options *opt) { + + int nprotect = 0; + + SEXP m_range_ = PROTECT(allocVector(REALSXP, 2)); nprotect++; + REAL(m_range_)[0] = R_FINITE(opt->mmin) ? opt->mmin : NA_REAL; + REAL(m_range_)[1] = R_FINITE(opt->mmax) ? opt->mmax : NA_REAL; + SEXP m_range_nms_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + SET_STRING_ELT(m_range_nms_, 0, mkChar("mmin")); + SET_STRING_ELT(m_range_nms_, 1, mkChar("mmax")); + setAttrib(m_range_, R_NamesSymbol, m_range_nms_); + setAttrib(m_range_, R_ClassSymbol, mkString("m_range")); + + UNPROTECT(nprotect); + return m_range_; +} + + +bool needs_m_range(geo_parse_options *opt) { + return R_FINITE(opt->mmin); +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Forward Declarations +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP geojson_as_sf(yyjson_val *val, geo_parse_options *opt, unsigned int depth); + +#define COORD_XY 2 +#define COORD_XYZ 3 +#define COORD_XYZM 4 + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Determine if the coords in this array of coordinate arrays is +// XY, XYZ or XYZM +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +unsigned int calc_matrix_coord_type(yyjson_val *arr, geo_parse_options *opt) { + unsigned int coord_bitset = 0; + unsigned int coord_type; + yyjson_arr_iter row_iter = yyjson_arr_iter_with(arr); + yyjson_val *row; + while ((row = yyjson_arr_iter_next(&row_iter))) { + size_t ncoords = yyjson_get_len(row); + coord_bitset |= (1 << ncoords); + } + + if (coord_bitset & (1 << 4)) { + coord_type = COORD_XYZM; + } else if (coord_bitset & (1 << 3)) { + coord_type = COORD_XYZ; + } else { + coord_type = COORD_XY; + } + + return coord_type; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ### # +// # # # +// # ### ### # ## ## # ### +// # # # # # ## # # ## # +// # # # # # # # # ### +// # # # # # # # # ## # +// ### ### ### # ## # #### +// +// Parse a JSON []-array of coordinates to a matrix. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_coords_as_matrix(yyjson_val *arr, unsigned int coord_type, geo_parse_options *opt) { + + size_t nrows = yyjson_get_len(arr); + size_t ncols = coord_type; + size_t N = nrows * ncols; + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Allocate memory for the R-matrix + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP mat_ = PROTECT(allocVector(REALSXP, (R_xlen_t)N)); + double *ptr = REAL(mat_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over nested JSON []-arrays to populate the R-matrix + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_arr_iter row_iter = yyjson_arr_iter_with(arr); + yyjson_val *row; + unsigned int row_idx = 0; + while ((row = yyjson_arr_iter_next(&row_iter))) { + + yyjson_arr_iter col_iter = yyjson_arr_iter_with(row); + yyjson_val *val; + unsigned int col_idx = 0; + while((val = yyjson_arr_iter_next(&col_iter))) { + double tmp = yyjson_get_num(val); + ptr[row_idx + col_idx * nrows] = tmp; + + if (col_idx == 0) { + if (tmp > opt->xmax) opt->xmax = tmp; + if (tmp < opt->xmin) opt->xmin = tmp; + } else if (col_idx == 1) { + if (tmp > opt->ymax) opt->ymax = tmp; + if (tmp < opt->ymin) opt->ymin = tmp; + } else if (col_idx == 2) { + if (tmp > opt->zmax) opt->zmax = tmp; + if (tmp < opt->zmin) opt->zmin = tmp; + if (tmp == NA_REAL) { + opt->zmax = NA_REAL; + opt->zmin = NA_REAL; + } + } else if (col_idx == 3) { + if (tmp > opt->mmax) opt->mmax = tmp; + if (tmp < opt->mmin) opt->mmin = tmp; + } + + col_idx++; + } + + for (; col_idx < coord_type; col_idx++) { + ptr[row_idx + col_idx * nrows] = NA_REAL; + } + + row_idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Dims + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP dims_ = PROTECT(allocVector(INTSXP, 2)); + INTEGER(dims_)[0] = (int)nrows; + INTEGER(dims_)[1] = (int)ncols; + setAttrib(mat_, R_DimSymbol, dims_); + + UNPROTECT(2); + return mat_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse multiple matrices into a list +// Used for polygon and multipolygon +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_coords_as_matrix_list(yyjson_val *arr, + unsigned int *accumulated_coord_type, + geo_parse_options *opt) { + size_t nrings = yyjson_get_len(arr); + + SEXP ll_ = PROTECT(allocVector(VECSXP, (R_xlen_t)nrings)); + + yyjson_arr_iter ring_iter = yyjson_arr_iter_with(arr); + yyjson_val *coords; + unsigned int ring_idx = 0; + unsigned int coord_type = COORD_XY; + while ((coords = yyjson_arr_iter_next(&ring_iter))) { + + coord_type = calc_matrix_coord_type(coords, opt); + SEXP mat_ = PROTECT(parse_coords_as_matrix(coords, coord_type, opt)); + SET_VECTOR_ELT(ll_, ring_idx, mat_); + + UNPROTECT(1); + ring_idx++; + } + + *accumulated_coord_type = coord_type; + + UNPROTECT(1); + return ll_; +} + +static char *COORD_SYSTEM[5] = {"NA", "NA", "XY", "XYZ", "XYZM"}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ### # +// # # # +// # ### ### ## # ### #### # ## # # +// # # # # # # # # # # # ## # # # +// # ## ##### # # # # # ##### # # # ## +// # # # # # # # # # # # # ## # +// ### ### ### # # ### ## # # +// # # +// ### +// +// Point +// MultiPoint +// LineString +// MultiLineString +// Polygon +// MultiPolygon +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_point(yyjson_val *obj, geo_parse_options *opt) { + // Rprintf(">> Point\n"); + + yyjson_val *coords = yyjson_obj_get(obj, "coordinates"); + size_t N = yyjson_get_len(coords); + + SEXP vec_ = PROTECT(allocVector(REALSXP, (R_xlen_t)N)); + double *ptr = REAL(vec_); + + yyjson_arr_iter iter = yyjson_arr_iter_with(coords); + yyjson_val *val; + unsigned int idx = 0; + while ((val = yyjson_arr_iter_next(&iter))) { + ptr[idx] = yyjson_get_num(val); + + // XY bounding box + if (idx == 0) { + if (ptr[idx] > opt->xmax) opt->xmax = ptr[idx]; + if (ptr[idx] < opt->xmin) opt->xmin = ptr[idx]; + } else if (idx == 1) { + if (ptr[idx] > opt->ymax) opt->ymax = ptr[idx]; + if (ptr[idx] < opt->ymin) opt->ymin = ptr[idx]; + } else if (idx == 2) { + if (ptr[idx] > opt->zmax) opt->zmax = ptr[idx]; + if (ptr[idx] < opt->zmin) opt->zmin = ptr[idx]; + if (ptr[idx] == NA_REAL) { + opt->zmax = NA_REAL; + opt->zmin = NA_REAL; + } + } else if (idx == 3) { + if (ptr[idx] > opt->mmax) opt->mmax = ptr[idx]; + if (ptr[idx] < opt->mmin) opt->mmin = ptr[idx]; + } + + idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[N])); + SET_STRING_ELT(nms_, 1, mkChar("POINT")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(vec_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return vec_; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Multipoint +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_multipoint(yyjson_val *obj, geo_parse_options *opt) { + // Rprintf(">> Point\n"); + + yyjson_val *coords = yyjson_obj_get(obj, "coordinates"); + + unsigned int coord_type = calc_matrix_coord_type(coords, opt); + // Rprintf("Multipoint %i\n", coord_type); + SEXP mat_ = PROTECT(parse_coords_as_matrix(coords, coord_type, opt)); + + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[coord_type])); + SET_STRING_ELT(nms_, 1, mkChar("MULTIPOINT")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(mat_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return mat_; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// LINESTRING +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_linestring(yyjson_val *obj, geo_parse_options *opt) { + + yyjson_val *coords = yyjson_obj_get(obj, "coordinates"); + + unsigned int coord_type = calc_matrix_coord_type(coords, opt); + SEXP mat_ = PROTECT(parse_coords_as_matrix(coords, coord_type, opt)); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[coord_type])); + SET_STRING_ELT(nms_, 1, mkChar("LINESTRING")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(mat_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return mat_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// MULTILINESTRING +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_multilinestring(yyjson_val *obj, geo_parse_options *opt) { + + yyjson_val *linestrings = yyjson_obj_get(obj, "coordinates"); + + size_t nlinestrings = yyjson_get_len(linestrings); + + SEXP ll_ = PROTECT(allocVector(VECSXP, (R_xlen_t)nlinestrings)); + + yyjson_arr_iter ring_iter = yyjson_arr_iter_with(linestrings); + yyjson_val *coords; + unsigned int ring_idx = 0; + unsigned int coord_type; + while ((coords = yyjson_arr_iter_next(&ring_iter))) { + + coord_type = calc_matrix_coord_type(coords, opt); + SEXP mat_ = PROTECT(parse_coords_as_matrix(coords, coord_type, opt)); + SET_VECTOR_ELT(ll_, ring_idx, mat_); + + UNPROTECT(1); + ring_idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[coord_type])); + SET_STRING_ELT(nms_, 1, mkChar("MULTILINESTRING")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(ll_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return ll_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Polygon +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_polygon(yyjson_val *obj, geo_parse_options *opt) { + + yyjson_val *coords = yyjson_obj_get(obj, "coordinates"); + + unsigned int coord_type = COORD_XY; + SEXP ll_ = PROTECT(parse_coords_as_matrix_list(coords, &coord_type, + opt)); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[coord_type])); + SET_STRING_ELT(nms_, 1, mkChar("POLYGON")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(ll_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return ll_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// MultiPolygon +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_multipolygon(yyjson_val *obj, geo_parse_options *opt) { + + yyjson_val *polygons = yyjson_obj_get(obj, "coordinates"); + + size_t npolygons = yyjson_get_len(polygons); + + SEXP ll_ = PROTECT(allocVector(VECSXP, (R_xlen_t)npolygons)); + + yyjson_arr_iter ring_iter = yyjson_arr_iter_with(polygons); + yyjson_val *coords; + unsigned int polygon_idx = 0; + unsigned int coord_type = COORD_XY; + while ((coords = yyjson_arr_iter_next(&ring_iter))) { + + SEXP inner_ = PROTECT(parse_coords_as_matrix_list(coords, &coord_type, + opt)); + SET_VECTOR_ELT(ll_, polygon_idx, inner_); + + UNPROTECT(1); + polygon_idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, 3)); + SET_STRING_ELT(nms_, 0, mkChar(COORD_SYSTEM[coord_type])); + SET_STRING_ELT(nms_, 1, mkChar("MULTIPOLYGON")); + SET_STRING_ELT(nms_, 2, mkChar("sfg")); + setAttrib(ll_, R_ClassSymbol, nms_); + + UNPROTECT(2); + return ll_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// #### # # +// # # # +// # # # ## ### # ## ### # ## #### ## ### ### +// #### ## # # # ## # # # ## # # # # # # +// # # # # ## # ##### # # # ##### ### +// # # # # # ## # # # # # # # +// # # ### # ### # ## ### ### #### +// # +// # +// +// Parse a scalar feature that is not part of a collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_rchar(yyjson_val *prop_val, geo_parse_options *opt) { + if (prop_val == NULL) { + return NA_STRING; + } + + char buf[128] = ""; + static char *bool_str[2] = {"FALSE", "TRUE"}; + static char *bool_int[2] = {"0", "1"}; + + switch (yyjson_get_type(prop_val)) { + case YYJSON_TYPE_NULL: + return NA_STRING; + break; + case YYJSON_TYPE_STR: + return mkChar(yyjson_get_str(prop_val)); + break; + case YYJSON_TYPE_BOOL: + { + if (opt->property_promotion_lgl_as_int == PROP_LGL_AS_INT) { + int tmp = yyjson_get_bool(prop_val); + return mkChar(bool_int[tmp]); + } else { + int tmp = yyjson_get_bool(prop_val); + return mkChar(bool_str[tmp]); + } + } + break; + case YYJSON_TYPE_ARR: + case YYJSON_TYPE_OBJ: + { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + yyjson_mut_val *val = yyjson_val_mut_copy(doc, prop_val); + yyjson_mut_doc_set_root(doc, val); + char *json = yyjson_mut_write(doc, 0, NULL); + if (json == NULL) { + error("Error converting json to string in prop_to_strsxp"); + } + SEXP res_ = PROTECT(mkChar(json)); + free(json); + yyjson_mut_doc_free(doc); + UNPROTECT(1); + return res_; + } + break; + case YYJSON_TYPE_NUM: + switch(yyjson_get_subtype(prop_val)) { + case YYJSON_SUBTYPE_UINT: +#if defined(__APPLE__) || defined(_WIN32) + snprintf(buf, 128, "%llu", yyjson_get_uint(prop_val)); +#else + snprintf(buf, 128, "%lu", yyjson_get_uint(prop_val)); +#endif + return mkChar(buf); + break; + case YYJSON_SUBTYPE_SINT: +#if defined(__APPLE__) || defined(_WIN32) + snprintf(buf, 128, "%lld", yyjson_get_sint(prop_val)); +#else + snprintf(buf, 128, "%ld", yyjson_get_sint(prop_val)); +#endif + return mkChar(buf); + break; + case YYJSON_SUBTYPE_REAL: + snprintf(buf, 128, "%f", yyjson_get_real(prop_val)); + return mkChar(buf); + break; + default: + warning("prop_to_strsxp unhandled numeric type %s\n", yyjson_get_type_desc(prop_val)); + } + break; + default: + warning("prop_to_strsxp unhandled type: %s\n", yyjson_get_type_desc(prop_val)); + return NA_STRING; + } + + + Rprintf("Ugh\n"); + return NA_STRING; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a property as a character string from a feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_strsxp(yyjson_val *features, char *prop_name, geo_parse_options *opt) { + + size_t N = yyjson_get_len(features); + SEXP vec_ = PROTECT(allocVector(STRSXP, (R_xlen_t)N)); + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature_obj; + unsigned int idx = 0; + while ((feature_obj = yyjson_arr_iter_next(&feature_iter))) { + yyjson_val *props_obj = yyjson_obj_get(feature_obj, "properties"); + yyjson_val *prop_val = yyjson_obj_get(props_obj, prop_name); + + SET_STRING_ELT(vec_, idx, prop_to_rchar(prop_val, opt)); + idx++; + } + + UNPROTECT(1); + return vec_; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a property as a character string from a feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_vecsxp(yyjson_val *features, char *prop_name, geo_parse_options *opt) { + size_t N = yyjson_get_len(features); + SEXP vec_ = PROTECT(allocVector(VECSXP, (R_xlen_t)N)); + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature_obj; + unsigned int idx = 0; + while ((feature_obj = yyjson_arr_iter_next(&feature_iter))) { + yyjson_val *props_obj = yyjson_obj_get(feature_obj, "properties"); + yyjson_val *prop_val = yyjson_obj_get(props_obj, prop_name); + if (prop_val == NULL) { + SET_VECTOR_ELT(vec_, idx, ScalarLogical(NA_LOGICAL)); + } else { + SET_VECTOR_ELT(vec_, idx, json_as_robj(prop_val, opt->parse_opt)); + } + idx++; + } + + UNPROTECT(1); + return vec_; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a property as a INTSXP from a feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_lglsxp(yyjson_val *features, char *prop_name, geo_parse_options *opt) { + size_t N = yyjson_get_len(features); + SEXP vec_ = PROTECT(allocVector(LGLSXP, (R_xlen_t)N)); + int *ptr = INTEGER(vec_); + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature_obj; + while ((feature_obj = yyjson_arr_iter_next(&feature_iter))) { + yyjson_val *props_obj = yyjson_obj_get(feature_obj, "properties"); + yyjson_val *prop_val = yyjson_obj_get(props_obj, prop_name); + if (prop_val == NULL) { + *ptr++ = NA_INTEGER; + } else { + *ptr++ = yyjson_get_bool(prop_val); + } + } + + UNPROTECT(1); + return vec_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a property as a INTSXP from a feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_intsxp(yyjson_val *features, char *prop_name, geo_parse_options *opt) { + size_t N = yyjson_get_len(features); + SEXP vec_ = PROTECT(allocVector(INTSXP, (R_xlen_t)N)); + int *ptr = INTEGER(vec_); + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature_obj; + while ((feature_obj = yyjson_arr_iter_next(&feature_iter))) { + yyjson_val *props_obj = yyjson_obj_get(feature_obj, "properties"); + yyjson_val *prop_val = yyjson_obj_get(props_obj, prop_name); + if (prop_val == NULL) { + *ptr++ = NA_INTEGER; + } else { + *ptr++ = yyjson_get_int(prop_val); + } + } + + UNPROTECT(1); + return vec_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a property as a REALSXP from a feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP prop_to_realsxp(yyjson_val *features, char *prop_name, geo_parse_options *opt) { + size_t N = yyjson_get_len(features); + SEXP vec_ = PROTECT(allocVector(REALSXP, (R_xlen_t)N)); + double *ptr = REAL(vec_); + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature_obj; + while ((feature_obj = yyjson_arr_iter_next(&feature_iter))) { + yyjson_val *props_obj = yyjson_obj_get(feature_obj, "properties"); + yyjson_val *prop_val = yyjson_obj_get(props_obj, prop_name); + if (prop_val == NULL) { + *ptr++ = NA_REAL; + } else { + *ptr++ = yyjson_get_num(prop_val); + } + } + + UNPROTECT(1); + return vec_; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Forward declaration +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_geometry_type(yyjson_val *val, geo_parse_options *opt); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse a feature +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_feature(yyjson_val *obj, geo_parse_options *opt) { + // Rprintf(">>> Feature\n"); + + reset_bbox(opt); + int nprotect = 0; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Parse GEOMETRY + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_val *geom = yyjson_obj_get(obj, "geometry"); + SEXP geom_col_ = PROTECT(allocVector(VECSXP, 1)); nprotect++; + SEXP geom_ = PROTECT(parse_geometry_type(geom, opt)); nprotect++; + SET_VECTOR_ELT(geom_col_, 0, geom_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set attributes on geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + setAttrib(geom_col_, mkString("n_empty") , ScalarInteger(0)); + setAttrib(geom_col_, mkString("crs") , make_crs()); + + SEXP geom_class_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + + + yyjson_val *geom_type = yyjson_obj_get(geom, "type"); + // Rprintf("parse_geometry_type(): %s\n", yyjson_get_str(geom_type)); + + if (yyjson_equals_str(geom_type, "Point")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_POINT")); + } else if (yyjson_equals_str(geom_type, "MultiPoint")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTIPOINT")); + } else if (yyjson_equals_str(geom_type, "LineString")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_LINESTRING")); + } else if (yyjson_equals_str(geom_type, "MultiLineString")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTILINESTRING")); + } else if (yyjson_equals_str(geom_type, "Polygon")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_POLYGON")); + } else if (yyjson_equals_str(geom_type, "MultiPolygon")) { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTIPOLYGON")); + } else { + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_UNKNOWN")); + } + + SET_STRING_ELT(geom_class_, 1, mkChar("sfc")); + setAttrib(geom_col_, R_ClassSymbol, geom_class_); + + setAttrib(geom_col_, mkString("precision"), ScalarReal(0)); + setAttrib(geom_col_, mkString("bbox"), make_bbox(opt)); + + if (opt->type == SFC_TYPE) { + // only care about geom, not properties. + UNPROTECT(nprotect); + return(geom_col_); + } + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Properties + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_val *props = yyjson_obj_get(obj, "properties"); + size_t ncols = yyjson_get_len(props) + 1; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Allocate space for data.frame columns and column names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP res_ = PROTECT(allocVector(VECSXP, (R_xlen_t)ncols)); nprotect++; + SEXP nms_ = PROTECT(allocVector(STRSXP, (R_xlen_t)ncols)); nprotect++; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over the keys/values "properties" + // keys become column names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_obj_iter iter = yyjson_obj_iter_with(props); + yyjson_val *val, *key; + unsigned int idx = 0; + while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + SEXP robj_ = PROTECT(json_as_robj(val, opt->parse_opt)); + + if (isNull(robj_)) { + // compatibilty with geojson: promotes NULL values to NA_character_ + UNPROTECT(1); + robj_ = PROTECT(allocVector(STRSXP, 1)); + SET_STRING_ELT(robj_, 0, NA_STRING); + } else if (isNewList(robj_) && length(robj_) == 0) { + // compatibilty with geojson. promote empty list to "{}" + UNPROTECT(1); + robj_ = PROTECT(allocVector(STRSXP, 1)); + SET_STRING_ELT(robj_, 0, mkChar("{}")); + } else if (isNewList(robj_) && opt->property_promotion == PROP_TYPE_STRING) { + // this is either a list or a multi-element {}-objet or []-array + // so turn it back into a string + UNPROTECT(1); + robj_ = PROTECT(allocVector(STRSXP, 1)); + SET_STRING_ELT(robj_, 0, prop_to_rchar(val, opt)); + } else if (length(robj_) > 1 && opt->property_promotion == PROP_TYPE_STRING) { + // this is either a list or a multi-element {}-objet or []-array + // so turn it back into a string + UNPROTECT(1); + robj_ = PROTECT(allocVector(STRSXP, 1)); + SET_STRING_ELT(robj_, 0, prop_to_rchar(val, opt)); + } + + SET_VECTOR_ELT(res_, idx, robj_); + UNPROTECT(1); + SET_STRING_ELT(nms_, idx, mkChar(yyjson_get_str(key))); + idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // The geometry column should be a list (i.e. VECSXP) + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SET_VECTOR_ELT(res_, (R_xlen_t)ncols - 1, geom_col_); + SET_STRING_ELT(nms_, (R_xlen_t)ncols - 1, mkChar("geometry")); + + + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set column names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + setAttrib(res_, R_NamesSymbol, nms_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Row.names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP rownames = PROTECT(allocVector(INTSXP, 2)); nprotect++; + SET_INTEGER_ELT(rownames, 0, NA_INTEGER); + SET_INTEGER_ELT(rownames, 1, -1); // only a single rows + setAttrib(res_, R_RowNamesSymbol, rownames); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Nominate the geometry column name. + // Store this as the 'sf_geometry' attribute + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP sf_name_ = PROTECT(mkString("geometry")); nprotect++; + setAttrib(res_, mkString("sf_column"), sf_name_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set 'data.frame' class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP df_names_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + SET_STRING_ELT(df_names_, 0, mkChar("sf")); + SET_STRING_ELT(df_names_, 1, mkChar("data.frame")); + setAttrib(res_, R_ClassSymbol, df_names_); + + + + UNPROTECT(nprotect); + return res_; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Accumulating types and names for properies should really be dynamic, +// but for first draft, just set a static upper limit on number of properiies. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#define MAX_PROPS 256 + +//=========================================================================== +// ##### # ### ## ## +// # # # # # # +// # ### ### #### # # # ## ### # ### # # +// #### # # # # # # ## # # # # # # # # +// # ##### #### # # # # ##### # # # # # +// # # # # # # # ## # # # # # # # # +// # ### #### ## ## # # ### ### ### ### ### +//=========================================================================== + +SEXP parse_feature_collection_geometry(yyjson_val *features, geo_parse_options *opt) { + + int nprotect = 0; + reset_bbox(opt); + + if (!yyjson_is_arr(features)) { + error("Expecting FeatureCollection::features to be an array"); + } + size_t nrows = yyjson_get_len(features); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // List-column will be used for geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geom_col_ = PROTECT(allocVector(VECSXP, (R_xlen_t)nrows)); nprotect++; + SEXP geom_classes_ = PROTECT(allocVector(STRSXP, (R_xlen_t)nrows)); nprotect++; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over array to gather geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature; + unsigned int feature_idx = 0; + unsigned int sf_type_bitset = 0; + while ((feature = yyjson_arr_iter_next(&feature_iter))) { + + yyjson_val *geom = yyjson_obj_get(feature, "geometry"); + SET_VECTOR_ELT(geom_col_, feature_idx, geojson_as_sf(geom, opt, 1)); + + yyjson_val *geom_type = yyjson_obj_get(geom, "type"); + + if (yyjson_equals_str(geom_type, "Point")) { + sf_type_bitset |= SF_POINT; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("POINT")); + } else if (yyjson_equals_str(geom_type, "MultiPoint")) { + sf_type_bitset |= SF_MULTIPOINT; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("MULTIPOINT")); + } else if (yyjson_equals_str(geom_type, "LineString")) { + sf_type_bitset |= SF_LINESTRING; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("LINESTRING")); + } else if (yyjson_equals_str(geom_type, "MultiLineString")) { + sf_type_bitset |= SF_MULTILINESTRING; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("MULTILINESTRING")); + } else if (yyjson_equals_str(geom_type, "Polygon")) { + sf_type_bitset |= SF_POLYGON; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("POLYGON")); + } else if (yyjson_equals_str(geom_type, "MultiPolygon")) { + sf_type_bitset |= SF_MULTIPOLYGON; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("MULTIPOLYGON")); + } else if (yyjson_equals_str(geom_type, "GeometryCollection")) { + sf_type_bitset |= SF_GEOMETRY_COLLECTION; + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("GEOMETRYCOLLECTION")); + } else { + SET_STRING_ELT(geom_classes_, feature_idx, mkChar("UNKNOWN")); + } + + feature_idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set attributes on geometry + // + // According to: https://r-spatial.github.io/sf/reference/sfc.html + // if all classes are the same, then: + // 1. Omit the 'classes' attribute + // 2. set the class to sfc_TYPE + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geom_class_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + + switch(sf_type_bitset) { + case SF_POINT: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_POINT")); + break; + case SF_MULTIPOINT: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTIPOINT")); + break; + case SF_LINESTRING: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_LINESTRING")); + break; + case SF_MULTILINESTRING: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTILINESTRING")); + break; + case SF_POLYGON: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_POLYGON")); + break; + case SF_MULTIPOLYGON: + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_MULTIPOLYGON")); + break; + default: + if (nrows > 0) { + setAttrib(geom_col_, mkString("classes") , geom_classes_); + } + SET_STRING_ELT(geom_class_, 0, mkChar("sfc_GEOMETRY")); + } + + + setAttrib(geom_col_, mkString("n_empty") , ScalarInteger(0)); + setAttrib(geom_col_, mkString("crs") , make_crs()); + + SET_STRING_ELT(geom_class_, 1, mkChar("sfc")); + setAttrib(geom_col_, R_ClassSymbol, geom_class_); + + setAttrib(geom_col_, mkString("precision"), ScalarReal(0)); + setAttrib(geom_col_, mkString("bbox"), make_bbox(opt)); + + if (needs_z_range(opt)) { + setAttrib(geom_col_, mkString("z_range"), make_z_range(opt)); + } + + if (needs_m_range(opt)) { + setAttrib(geom_col_, mkString("m_range"), make_m_range(opt)); + } + + UNPROTECT(nprotect); + return geom_col_; +} + + + + + +//=========================================================================== +// +//=========================================================================== +SEXP parse_feature_collection(yyjson_val *obj, geo_parse_options *opt) { + + int nprotect = 0; + + yyjson_val *features = NULL; + + if (yyjson_is_obj(obj)) { + // This is an official geojson FeatureCollection object + features = yyjson_obj_get(obj, "features"); + } else if (yyjson_is_arr(obj)) { + // This is just a JSON []-array with multiple features in it. + features = obj; + } else { + error("parse_feature_collection() obj not array or object, but %s", yyjson_get_type_desc(obj)); + } + + if (!yyjson_is_arr(features)) { + error("Expecting FeatureCollection::features to be an array. Got %s", yyjson_get_type_desc(features)); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Parse the geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geom_col_ = PROTECT(parse_feature_collection_geometry(features, opt)); nprotect++; + if (opt->type == SFC_TYPE) { + // we onlyl care about geometry! Don't worry about parsing properties + UNPROTECT(nprotect); + return geom_col_; + } + + size_t nrows = yyjson_get_len(features); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over all features to determine full set of properties + // and their types + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + char *prop_names[MAX_PROPS]; + unsigned int type_bitset[MAX_PROPS] = {0}; + int nprops = 0; + + yyjson_arr_iter feature_iter = yyjson_arr_iter_with(features); + yyjson_val *feature; + while ((feature = yyjson_arr_iter_next(&feature_iter))) { + + yyjson_val *props = yyjson_obj_get(feature, "properties"); + + yyjson_obj_iter prop_iter = yyjson_obj_iter_with(props); + yyjson_val *prop_name, *prop_val; + while ((prop_name = yyjson_obj_iter_next(&prop_iter))) { + prop_val = yyjson_obj_iter_get_val(prop_name); + + int name_idx = -1; + for (int i = 0; i < nprops; i++) { + if (yyjson_equals_str(prop_name, prop_names[i])) { + name_idx = i; + break; + } + } + if (name_idx < 0) { + // Name has not been seen yet. so add it. + name_idx = nprops; + prop_names[nprops] = (char *)yyjson_get_str(prop_name); + // Rprintf("Key: %s\n", yyjson_get_str(prop_name)); + nprops++; + if (nprops == MAX_PROPS) { + error("Maximum properies exceeded parsing feature collection: %i", MAX_PROPS); + } + } + + type_bitset[name_idx] = update_type_bitset(type_bitset[name_idx], prop_val, opt->parse_opt); + } + } + + // for (unsigned int i=0; iparse_opt); + // dump_type_bitset(type_bitset[i]); + // Rprintf("[prop %i] %s - sexp_type: %i -> %s\n", + // i, prop_names[i], + // sexp_type, type2char(sexp_type)); + // } + + + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create a data.frame with: + // prop1, prop2, prop3.... propN, geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP df_ = PROTECT(allocVector(VECSXP, nprops + 1)); nprotect++; + SET_VECTOR_ELT(df_, nprops, geom_col_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // For each property + // - determine the best SEXP to represent the 'type_bitset' + // - Call a parse function which will + // - loop through the entire FeatureCollection[]-array, + // plucking the property value from each {}-object + // - return an atomic vector or a list + // - place this vector as a column in the data.frame + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + for (unsigned int idx = 0; idx < nprops; idx++) { + + unsigned int sexp_type = get_best_sexp_to_represent_type_bitset(type_bitset[idx], opt->parse_opt); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Check if user requested the "maximum" container type for properties + // to be a string, rather than a list() + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if (sexp_type == VECSXP && opt->property_promotion == PROP_TYPE_STRING) { + sexp_type = STRSXP; + } + + switch (sexp_type) { + case LGLSXP: + SET_VECTOR_ELT(df_, idx, prop_to_lglsxp(features, prop_names[idx], opt)); + break; + case INTSXP: + SET_VECTOR_ELT(df_, idx, prop_to_intsxp(features, prop_names[idx], opt)); + break; + case REALSXP: + SET_VECTOR_ELT(df_, idx, prop_to_realsxp(features, prop_names[idx], opt)); + break; + case STRSXP: + SET_VECTOR_ELT(df_, idx, prop_to_strsxp(features, prop_names[idx], opt)); + break; + case VECSXP: + SET_VECTOR_ELT(df_, idx, prop_to_vecsxp(features, prop_names[idx], opt)); + break; + default: + warning("Unhandled 'prop' coltype: %i -> %s\n", sexp_type, type2char(sexp_type)); + SET_VECTOR_ELT(df_, idx, allocVector(LGLSXP, (R_xlen_t)nrows)); + } + } + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Nominate the geometry column name. + // Store this as the 'sf_geometry' attribute + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP sf_name_ = PROTECT(mkString("geometry")); nprotect++; + setAttrib(df_, mkString("sf_column"), sf_name_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set colnames on data.frame + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP nms_ = PROTECT(allocVector(STRSXP, nprops + 1)); nprotect++; + for (unsigned int i = 0; i < nprops; i++) { + SET_STRING_ELT(nms_, i, mkChar(prop_names[i])); + } + SET_STRING_ELT(nms_, nprops, mkChar("geometry")); + Rf_setAttrib(df_, R_NamesSymbol, nms_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set rownames on data.frame + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP rownames = PROTECT(allocVector(INTSXP, 2)); nprotect++; + SET_INTEGER_ELT(rownames, 0, NA_INTEGER); + SET_INTEGER_ELT(rownames, 1, -(int)nrows); + setAttrib(df_, R_RowNamesSymbol, rownames); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set 'data.frame' class + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP df_class_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + SET_STRING_ELT(df_class_, 0, mkChar("sf")); + SET_STRING_ELT(df_class_, 1, mkChar("data.frame")); + setAttrib(df_, R_ClassSymbol, df_class_); + + UNPROTECT(nprotect); + return df_; +} + + +//=========================================================================== +// +//=========================================================================== +SEXP promote_bare_geometry_to_list(SEXP geom_, yyjson_val *val, geo_parse_options *opt) { + int nprotect = 0; + + SEXP geom_col_ = PROTECT(allocVector(VECSXP, 1)); nprotect++; + SET_VECTOR_ELT(geom_col_, 0, geom_); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Figure out type of geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geom_col_class_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + + if (!yyjson_is_obj(val)) { + error("promote_bare_geometry_to_list(): Expecting object. Got %s", yyjson_get_type_desc(val)); + } + + yyjson_val *type = yyjson_obj_get(val, "type"); + if (type == NULL) { + error("parse_geometry(): type == NULL"); + } + + if (yyjson_equals_str(type, "Point")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_POINT")); + } else if (yyjson_equals_str(type, "MultiPoint")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_MULTIPOINT")); + } else if (yyjson_equals_str(type, "LineString")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_LINESTRING")); + } else if (yyjson_equals_str(type, "MultiLineString")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_MULTILINESTRING")); + } else if (yyjson_equals_str(type, "Polygon")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_POLYGON")); + } else if (yyjson_equals_str(type, "MultiPolygon")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_MULTIPOLYGON")); + } else if (yyjson_equals_str(type, "GeometryCollection")) { + SET_STRING_ELT(geom_col_class_, 0, mkChar("sfc_GEOMETRY")); + setAttrib(geom_col_, mkString("classes") , mkString("GEOMETRYCOLLECTION")); + } else { + error("promote_bare_geometry_to_list(): Unknown geojson type: %s", yyjson_get_str(type)); + } + + SET_STRING_ELT(geom_col_class_, 1, mkChar("sfc")); + setAttrib(geom_col_, R_ClassSymbol, geom_col_class_); + + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set attributes on geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + setAttrib(geom_col_, mkString("n_empty") , ScalarInteger(0)); + setAttrib(geom_col_, mkString("crs") , make_crs()); + + setAttrib(geom_col_, mkString("precision"), ScalarReal(0)); + setAttrib(geom_col_, mkString("bbox"), make_bbox(opt)); + + if (needs_z_range(opt)) { + setAttrib(geom_col_, mkString("z_range"), make_z_range(opt)); + } + + if (needs_m_range(opt)) { + setAttrib(geom_col_, mkString("m_range"), make_m_range(opt)); + }\ + + UNPROTECT(nprotect); + return geom_col_; +} + + +//=========================================================================== +// +//=========================================================================== +SEXP promote_bare_geometry_to_df(SEXP geom_, yyjson_val *val, geo_parse_options *opt) { + + int nprotect = 0; + + // Setup data.frame with single column called 'geometry' + // 'geometry' is a list column + SEXP df_ = PROTECT(allocVector(VECSXP, 1)); nprotect++; + SET_VECTOR_ELT(df_, 0, promote_bare_geometry_to_list(geom_, val, opt)); + setAttrib(df_, R_NamesSymbol, mkString("geometry")); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set NULL rownames on data.frame + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP rownames = PROTECT(allocVector(INTSXP, 2)); nprotect++; + SET_INTEGER_ELT(rownames, 0, NA_INTEGER); + SET_INTEGER_ELT(rownames, 1, -1); + setAttrib(df_, R_RowNamesSymbol, rownames); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set class: 'sf' + 'data.frame' + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP df_class_ = PROTECT(allocVector(STRSXP, 2)); nprotect++; + SET_STRING_ELT(df_class_, 0, mkChar("sf")); + SET_STRING_ELT(df_class_, 1, mkChar("data.frame")); + setAttrib(df_, R_ClassSymbol, df_class_); + + // Attributes for {sf} + setAttrib(df_, mkString("sf_column"), mkString("geometry")); + + UNPROTECT(nprotect); + return df_; +} + + + +//=========================================================================== +// ### ### ## ## +// # # # # # # +// # ### ### ## # # ### # # +// # # # # # # # # # # # # # +// # ## ##### # # # # # # # # # # +// # # # # # # # # # # # # # # +// ### ### ### # # ### ### ### ### +// +// Geometry Collection +//=========================================================================== +SEXP parse_geometry_collection(yyjson_val *obj, geo_parse_options *opt) { + + int nprotect = 0; + reset_bbox(opt); + + yyjson_val *geoms = yyjson_obj_get(obj, "geometries"); + if (!yyjson_is_arr(geoms)) { + error("Expecting GeomCollection::geometries to be an array. not %s", + yyjson_get_type_desc(geoms)); + } + size_t ngeoms = yyjson_get_len(geoms); + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // List-column will be used for geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geoms_ = PROTECT(allocVector(VECSXP, (R_xlen_t)ngeoms)); nprotect++; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over array to gather geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_arr_iter geom_iter = yyjson_arr_iter_with(geoms); + yyjson_val *geom; + unsigned int geom_idx = 0; + while ((geom = yyjson_arr_iter_next(&geom_iter))) { + + SEXP geom_ = PROTECT(geojson_as_sf(geom, opt, 1)); + SET_VECTOR_ELT(geoms_, geom_idx, geom_); + + UNPROTECT(1); + geom_idx++; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set attributes on geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geom_class_ = PROTECT(allocVector(STRSXP, 3)); nprotect++; + SET_STRING_ELT(geom_class_, 0, mkChar("XY")); + SET_STRING_ELT(geom_class_, 1, mkChar("GEOMETRYCOLLECTION")); + SET_STRING_ELT(geom_class_, 2, mkChar("sfg")); + setAttrib(geoms_, R_ClassSymbol, geom_class_); + + UNPROTECT(nprotect); + return geoms_; +} + +//=========================================================================== +// Parse geometry +//=========================================================================== +SEXP parse_geometry_type(yyjson_val *val, geo_parse_options *opt) { + + if (!yyjson_is_obj(val)) { + error("parse_geometry(): Expecting object. Got %s", yyjson_get_type_desc(val)); + } + + yyjson_val *type = yyjson_obj_get(val, "type"); + if (type == NULL) { + error("parse_geometry(): type == NULL"); + } + + if (yyjson_equals_str(type, "Point")) { + return parse_point(val, opt); + } else if (yyjson_equals_str(type, "MultiPoint")) { + return parse_multipoint(val, opt); + } else if (yyjson_equals_str(type, "LineString")) { + return parse_linestring(val, opt); + } else if (yyjson_equals_str(type, "MultiLineString")) { + return parse_multilinestring(val, opt); + } else if (yyjson_equals_str(type, "Polygon")) { + return parse_polygon(val, opt); + } else if (yyjson_equals_str(type, "MultiPolygon")) { + return parse_multipolygon(val, opt); + } else if (yyjson_equals_str(type, "GeometryCollection")) { + return parse_geometry_collection(val, opt); + } else { + error("parse_geometry(): Unknown geojson type: %s", yyjson_get_str(type)); + } +} + + +//=========================================================================== +// +//=========================================================================== +SEXP geojson_as_sf(yyjson_val *val, geo_parse_options *opt, unsigned int depth) { + + if (yyjson_is_arr(val)) { + // Assume this is a JSON []-array of features + return parse_feature_collection(val, opt); + } + + if (!yyjson_is_obj(val)) { + error("geojson_as_sf(): Expecting object. Got %s", yyjson_get_type_desc(val)); + } + + yyjson_val *type = yyjson_obj_get(val, "type"); + if (type == NULL) { + error("geojson_as_sf(): type == NULL"); + } + + if (yyjson_equals_str(type, "Feature")) { + return parse_feature(val, opt); + } else if (yyjson_equals_str(type, "FeatureCollection")) { + return parse_feature_collection(val, opt); + } else { + int nprotect = 0; + SEXP res_= PROTECT(parse_geometry_type(val, opt)); nprotect++; + + // If this is not a top-level object, then just return it. + // the calling function will wrap it in a data.frame or whatever + if (depth > 0) { + UNPROTECT(nprotect); + return res_; + } + + // This is top-level bare geometry! + // This must be a single POINT/MULTIPOINT/LINESTRING/MULTILINSTRING + // POLYGON/MULTIPOLYGON/GEOMETRYCOLLECTION + if (opt->type == SF_TYPE) { + // Return as a df + res_ = PROTECT(promote_bare_geometry_to_df(res_, val, opt)); nprotect++; + } else { + // opt->type == SFC_TYPE + // return as a list + res_ = PROTECT(promote_bare_geometry_to_list(res_, val, opt)); nprotect++; + } + + UNPROTECT(nprotect); + return res_; + } + + return R_NilValue; +} + + + + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse GeoJSON from a string +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_geojson_str_(SEXP str_, SEXP geo_opts_, SEXP parse_opts_) { + + geo_parse_options opt = create_geo_parse_options(geo_opts_); + + parse_options parse_opt = create_parse_options(parse_opts_); + opt.parse_opt = &parse_opt; + + const char *str = CHAR(STRING_ELT(str_, 0)); + yyjson_read_err err; + yyjson_doc *doc = yyjson_read_opts((char *)str, strlen(str), opt.yyjson_read_flag, NULL, &err); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // If doc is NULL, then an error occurred during parsing. + // Try and print something sensible like {jsonlite} does. + // I.e. + // - print some context around where the error occurred + // - print the index in the character string where the error occurred + // - add a visual pointer to the output so the user knows where this was + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if (doc == NULL) { + output_verbose_error(str, err); + error("Error parsing JSON: %s code: %u at position: %ld\n", err.msg, err.code, err.pos); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Parse the document from the root node + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP res_ = PROTECT(geojson_as_sf(yyjson_doc_get_root(doc), &opt, 0)); + + yyjson_doc_free(doc); + + UNPROTECT(1); + return res_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Parse GeoJSON from a string +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP parse_geojson_file_(SEXP filename_, SEXP geo_opts_, SEXP parse_opts_) { + + geo_parse_options opt = create_geo_parse_options(geo_opts_); + + parse_options parse_opt = create_parse_options(parse_opts_); + opt.parse_opt = &parse_opt; + + const char *filename = (const char *)CHAR( STRING_ELT(filename_, 0) ); + filename = R_ExpandFileName(filename); + yyjson_read_err err; + yyjson_doc *doc = yyjson_read_file((char *)filename, opt.yyjson_read_flag, NULL, &err); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // If doc is NULL, then an error occurred during parsing. + // Try and print something sensible like {jsonlite} does. + // I.e. + // - print some context around where the error occurred + // - print the index in the character string where the error occurred + // - add a visual pointer to the output so the user knows where this was + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if (doc == NULL) { + error("Error parsing JSON file '%s': %s code: %u at position: %ld\n", + filename, err.msg, err.code, err.pos); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Parse the document from the root node + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP res_ = PROTECT(geojson_as_sf(yyjson_doc_get_root(doc), &opt, 0)); + + yyjson_doc_free(doc); + + UNPROTECT(1); + return res_; +} + + + + + + + + + + + + + + + diff --git a/src/geojson-serialize.c b/src/geojson-serialize.c new file mode 100644 index 0000000..4d76448 --- /dev/null +++ b/src/geojson-serialize.c @@ -0,0 +1,352 @@ + + + +#include +#include +#include + +#include +#include +#include +#include + +#include "yyjson.h" +#include "R-yyjson-serialize.h" + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// GeoJSON Serialize options +// - this also contains state information i.e. +// - current bounding box accumulations +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +typedef struct { + unsigned int yyjson_write_flag; + serialize_options *serialize_opt; +} geo_serialize_options; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Initialise geo_parse_opts from an R named list from the user +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +geo_serialize_options create_geo_serialize_options(SEXP to_geo_opts_) { + geo_serialize_options opt = { + .yyjson_write_flag = YYJSON_WRITE_NOFLAG, + .serialize_opt = NULL + }; + + if (isNull(to_geo_opts_) || length(to_geo_opts_) == 0) { + return opt; + } + + if (!isNewList(to_geo_opts_)) { + error("'to_geo_opts_' must be a list"); + } + + SEXP nms_ = getAttrib(to_geo_opts_, R_NamesSymbol); + if (isNull(nms_)) { + error("'to_geo_opts_' must be a named list"); + } + + for (unsigned int i = 0; i < length(to_geo_opts_); i++) { + const char *opt_name = CHAR(STRING_ELT(nms_, i)); + SEXP val_ = VECTOR_ELT(to_geo_opts_, i); + + // if (strcmp(opt_name, "property_promotion") == 0) { + // const char *val = CHAR(STRING_ELT(val_, 0)); + // opt.property_promotion = strcmp(val, "string") == 0 ? PROP_TYPE_STRING : PROP_TYPE_LIST; + // } else if (strcmp(opt_name, "property_promotion_lgl_as_int") == 0) { + // const char *val = CHAR(STRING_ELT(val_, 0)); + // opt.property_promotion_lgl_as_int = strcmp(val, "string") == 0 ? PROP_LGL_AS_STR : PROP_LGL_AS_INT; + // } else if (strcmp(opt_name, "type") == 0) { + // const char *val = CHAR(STRING_ELT(val_, 0)); + // opt.type = strcmp(val, "sf") == 0 ? SF_TYPE : SFC_TYPE; + if (strcmp(opt_name, "pretty") == 0) { + if (asLogical(val_)) { + opt.yyjson_write_flag |= YYJSON_WRITE_PRETTY_TWO_SPACES; + } + } else { + warning("geo_opt: Unknown option ignored: '%s'\n", opt_name); + } + } + return opt; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Serialize geometry +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +yyjson_mut_val *serialize_geom(SEXP sf_, yyjson_mut_doc *doc, geo_serialize_options *opt) { + + yyjson_mut_val *obj = yyjson_mut_obj(doc); + + bool geom_collection = false; + + if (inherits(sf_, "POINT")) { + yyjson_mut_obj_add_str(doc, obj, "type", "Point"); + } else if (inherits(sf_, "MULTIPOINT")) { + yyjson_mut_obj_add_str(doc, obj, "type", "MultiPoint"); + } else if (inherits(sf_, "LINESTRING")) { + yyjson_mut_obj_add_str(doc, obj, "type", "LineString"); + } else if (inherits(sf_, "MULTILINESTRING")) { + yyjson_mut_obj_add_str(doc, obj, "type", "MultiLineString"); + } else if (inherits(sf_, "POLYGON")) { + yyjson_mut_obj_add_str(doc, obj, "type", "Polygon"); + } else if (inherits(sf_, "MULTIPOLYGON")) { + yyjson_mut_obj_add_str(doc, obj, "type", "MultiPolygon"); + } else if (inherits(sf_, "GEOMETRYCOLLECTION")) { + geom_collection = true; + yyjson_mut_obj_add_str(doc, obj, "type", "GeometryCollection"); + } else { + error("@@@@@@@ serialize_geom Issue. Unhandled geometry type\n"); + } + + + if (!geom_collection) { + yyjson_mut_val *key = yyjson_mut_str(doc, "coordinates"); + yyjson_mut_obj_add(obj, key, serialize_core(sf_, doc, opt->serialize_opt)); + } else{ + + if (!isNewList(sf_)) { + error("Expecting geomcollection to be a VECSXP not: %s", type2char((SEXPTYPE)TYPEOF(sf_))); + } + + // An array of geoms + yyjson_mut_val *geoms = yyjson_mut_arr(doc); + + // Unpack each element of the 'sf_' list as a geom and add to the array + for (unsigned int i = 0; i < length(sf_); i++) { + yyjson_mut_val *geom = serialize_geom(VECTOR_ELT(sf_, i), doc, opt); + yyjson_mut_arr_add_val(geoms, geom); + } + + yyjson_mut_val *key = yyjson_mut_str(doc, "geometries"); + yyjson_mut_obj_add(obj, key, geoms); + } + + + return obj; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP sfc_to_str(SEXP sfc_, geo_serialize_options *opt) { + + int nprotect = 0; + if (!isNewList(sfc_)) { + error("serialize_sfc(): Expeting list\n"); + } + + + R_xlen_t N = xlength(sfc_); + SEXP geojson_ = PROTECT(allocVector(STRSXP, N)); nprotect++; + + for (unsigned int idx = 0; idx < N; idx++) { + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + SEXP elem_ = VECTOR_ELT(sfc_, idx); + yyjson_mut_val *val = serialize_geom(elem_, doc, opt); + yyjson_mut_doc_set_root(doc, val); + + yyjson_write_err err; + char *json = yyjson_mut_write_opts(doc, opt->yyjson_write_flag, NULL, NULL, &err); + if (json == NULL) { + yyjson_mut_doc_free(doc); + error("Write to string error: %s code: %u\n", err.msg, err.code); + } + + SET_STRING_ELT(geojson_, idx, mkChar(json)); + yyjson_mut_doc_free(doc); + } + + + UNPROTECT(nprotect++); + return geojson_; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// sf data.frame to feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +yyjson_mut_doc *sf_to_json(SEXP sf_, geo_serialize_options *opt) { + + // int nprotect = 0; + if (!isNewList(sf_) || !inherits(sf_, "data.frame")) { + error("serialize_sf(): Expecting data.frame\n"); + } + + yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); + // int ncol = length(sf_); + int nrow = length(VECTOR_ELT(sf_, 0)); + // Rprintf("[%i, %i] data.frame\n", nrow, ncol); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Determine index of geometry collection + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + int geom_col_idx = -1; + SEXP geom_col_name_ = getAttrib(sf_, mkString("sf_column")); + if (isNull(geom_col_name_)) { + error("sf_to_str(): Couldn't determine 'sf_column' name"); + } + const char *geom_col_name = CHAR(STRING_ELT(geom_col_name_, 0)); + SEXP colnames_ = getAttrib(sf_, R_NamesSymbol); + for (int i = 0; i < length(colnames_); i++) { + if (strcmp(CHAR(STRING_ELT(colnames_, i)), geom_col_name) == 0) { + geom_col_idx = i; + break; + } + } + if (geom_col_idx == -1) { + error("sf_to_str(): Couldn't 'sf_column' name '%s' in column names of sf object", geom_col_name); + } + + SEXP geom_col_ = VECTOR_ELT(sf_, geom_col_idx); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate over each row to + // - create a 'Feature' object + // - add it to the features JSON []-array + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_mut_val *features = yyjson_mut_arr(doc); + unsigned int *col_type = detect_data_frame_types(sf_, opt->serialize_opt); + + for (unsigned int row = 0; row < nrow; row++) { + yyjson_mut_val *properties = data_frame_row_to_json_object(sf_, col_type, row, geom_col_idx, doc, opt->serialize_opt); + yyjson_mut_val *geometry = serialize_geom(VECTOR_ELT(geom_col_, row), doc, opt); + yyjson_mut_val *feature = yyjson_mut_obj(doc); + yyjson_mut_obj_add_str(doc, feature, "type", "Feature"); + yyjson_mut_obj_add(feature, yyjson_mut_str(doc, "properties"), properties); + yyjson_mut_obj_add(feature, yyjson_mut_str(doc, "geometry" ), geometry); + + // Add the feature to the array of features + yyjson_mut_arr_add_val(features, feature); + } + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Feature collection + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_mut_val *fc = yyjson_mut_obj(doc); + yyjson_mut_obj_add_str(doc, fc, "type", "FeatureCollection"); + yyjson_mut_obj_add(fc, yyjson_mut_str(doc, "features"), features); + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Add the feature collection as the root element of the JSON 'doc' + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_mut_doc_set_root(doc, fc); + + return doc; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// sf data.frame to feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP sf_to_str(SEXP sf_, geo_serialize_options *opt) { + + int nprotect = 0; + yyjson_mut_doc *doc = sf_to_json(sf_, opt); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write the doc to a string + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + yyjson_write_err err; + char *json = yyjson_mut_write_opts(doc, opt->yyjson_write_flag, NULL, NULL, &err); + if (json == NULL) { + yyjson_mut_doc_free(doc); + error("serialize_sf() Write to string error: %s code: %u\n", err.msg, err.code); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Convert string to R character, tidy and return + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SEXP geojson_ = PROTECT(mkString(json)); nprotect++; + yyjson_mut_doc_free(doc); + UNPROTECT(nprotect++); + return geojson_; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// sf data.frame to feature collection +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SEXP sf_to_file(SEXP sf_, SEXP filename_, geo_serialize_options *opt) { + + yyjson_mut_doc *doc = sf_to_json(sf_, opt); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write to JSON file + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + const char *filename = CHAR(STRING_ELT(filename_, 0)); + yyjson_write_err err; + bool success = yyjson_mut_write_file(filename, doc, opt->yyjson_write_flag, NULL, &err); + if (!success) { + yyjson_mut_doc_free(doc); + error("Write to file error '%s': %s code: %u\n", filename, err.msg, err.code); + } + yyjson_mut_doc_free(doc); + return R_NilValue; +} + + + + +//=========================================================================== +// # ### ### ### # # +// # # # # # # # # +// #### ### # # # # ## # +// # # # # ### # # # # # +// # # # # # # # # ## +// # # # # # # # # # # # # +// ## ### ### ### ### # # +// +// Serialize R object to JSON string. Callable from R +//=========================================================================== +SEXP serialize_sf_to_str_(SEXP sf_, SEXP to_geo_opts_, SEXP serialize_opts_) { + + int nprotect = 0; + if (!inherits(sf_, "sf") && !inherits(sf_, "sfc")) { + error("Not an sf object"); + } + geo_serialize_options opt = create_geo_serialize_options(to_geo_opts_); + + serialize_options serialize_opt = parse_serialize_options(serialize_opts_); + opt.serialize_opt = &serialize_opt; + + SEXP res_ = R_NilValue; + if (inherits(sf_, "sfc")) { + res_ = PROTECT(sfc_to_str(sf_, &opt)); nprotect++; + } else if (inherits(sf_, "sf")) { + res_ = PROTECT(sf_to_str(sf_, &opt)); nprotect++; + } else { + error("serialize_sf_to_str_: class not handled yet"); + } + + UNPROTECT(nprotect); + return res_; +} + +SEXP serialize_sf_to_file_(SEXP sf_, SEXP filename_, SEXP to_geo_opts_, SEXP serialize_opts_) { + + int nprotect = 0; + if (!inherits(sf_, "sf") && !inherits(sf_, "sfc")) { + error("Not an sf object"); + } + geo_serialize_options opt = create_geo_serialize_options(to_geo_opts_); + + serialize_options serialize_opt = parse_serialize_options(serialize_opts_); + opt.serialize_opt = &serialize_opt; + + // SEXP res_ = R_NilValue; + if (inherits(sf_, "sfc")) { + // res_ = PROTECT(sfc_to_str(sf_, &opt)); nprotect++; + error("Serializing 'sfc' objects to file not done yet"); + } else if (inherits(sf_, "sf")) { + PROTECT(sf_to_file(sf_, filename_, &opt)); nprotect++; + } else { + error("serialize_sf_to_file_: class not handled yet"); + } + + UNPROTECT(nprotect); + return R_NilValue; +} + diff --git a/src/init.c b/src/init.c index fa05a26..0d5e4a9 100644 --- a/src/init.c +++ b/src/init.c @@ -35,7 +35,14 @@ extern SEXP serialize_df_to_ndjson_file_(SEXP robj_, SEXP filename_, SEXP serial extern SEXP serialize_list_to_ndjson_str_ (SEXP robj_, SEXP serialize_opts_); extern SEXP serialize_list_to_ndjson_file_(SEXP robj_, SEXP filename_, SEXP serialize_opts_); +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// GeoJSON +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +extern SEXP parse_geojson_str_ (SEXP str_ , SEXP geo_opts_, SEXP parse_opts_); +extern SEXP parse_geojson_file_(SEXP filename_, SEXP geo_opts_, SEXP parse_opts_); +extern SEXP serialize_sf_to_str_ (SEXP sf_ , SEXP geo_opts_, SEXP serialize_opts_); +extern SEXP serialize_sf_to_file_(SEXP sf_, SEXP filename_, SEXP geo_opts_, SEXP serialize_opts_); static const R_CallMethodDef CEntries[] = { @@ -70,6 +77,15 @@ static const R_CallMethodDef CEntries[] = { {"serialize_list_to_ndjson_str_" , (DL_FUNC) &serialize_list_to_ndjson_str_ , 2}, {"serialize_list_to_ndjson_file_", (DL_FUNC) &serialize_list_to_ndjson_file_, 3}, + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // GeoJSON + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + {"parse_geojson_str_" , (DL_FUNC) &parse_geojson_str_ , 3}, + {"parse_geojson_file_", (DL_FUNC) &parse_geojson_file_, 3}, + + {"serialize_sf_to_str_" , (DL_FUNC) &serialize_sf_to_str_ , 3}, + {"serialize_sf_to_file_", (DL_FUNC) &serialize_sf_to_file_, 4}, + {NULL , NULL, 0} }; diff --git a/tests/testthat/geojson/coord-class-linestring-xyz.json b/tests/testthat/geojson/coord-class-linestring-xyz.json new file mode 100644 index 0000000..5f5cefb --- /dev/null +++ b/tests/testthat/geojson/coord-class-linestring-xyz.json @@ -0,0 +1 @@ +{"type":"LineString","coordinates":[[0.0,0.0,0.0],[1.0,1.0,1.0]]} diff --git a/tests/testthat/geojson/coord-class-linestring-xyzm.json b/tests/testthat/geojson/coord-class-linestring-xyzm.json new file mode 100644 index 0000000..ce0a554 --- /dev/null +++ b/tests/testthat/geojson/coord-class-linestring-xyzm.json @@ -0,0 +1 @@ +{"type":"LineString","coordinates":[[0.0,0.0,0.0,0.0],[1.0,2.0,3.0,4.0]]} diff --git a/tests/testthat/geojson/coord-class-multilinestring-xyz.json b/tests/testthat/geojson/coord-class-multilinestring-xyz.json new file mode 100644 index 0000000..912c6e2 --- /dev/null +++ b/tests/testthat/geojson/coord-class-multilinestring-xyz.json @@ -0,0 +1 @@ +{"type":"MultiLineString","coordinates":[[[0.0,0.0,0.0],[1.0,2.0,3.0]]]} diff --git a/tests/testthat/geojson/coord-class-multilinestring-xyzm.json b/tests/testthat/geojson/coord-class-multilinestring-xyzm.json new file mode 100644 index 0000000..c9f7f72 --- /dev/null +++ b/tests/testthat/geojson/coord-class-multilinestring-xyzm.json @@ -0,0 +1 @@ +{"type":"MultiLineString","coordinates":[[[0.0,0.0,0.0,0.0],[1.0,2.0,3.0,4.0]]]} diff --git a/tests/testthat/geojson/coord-class-multipoint-xy.json b/tests/testthat/geojson/coord-class-multipoint-xy.json new file mode 100644 index 0000000..5c2b8f7 --- /dev/null +++ b/tests/testthat/geojson/coord-class-multipoint-xy.json @@ -0,0 +1 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0],[1.0,1.0]]} diff --git a/tests/testthat/geojson/coord-class-multipoint-xyz.json b/tests/testthat/geojson/coord-class-multipoint-xyz.json new file mode 100644 index 0000000..ac101d0 --- /dev/null +++ b/tests/testthat/geojson/coord-class-multipoint-xyz.json @@ -0,0 +1 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0,0.0],[1.0,2.0,3.0]]} diff --git a/tests/testthat/geojson/coord-class-multipoint-xyzm.json b/tests/testthat/geojson/coord-class-multipoint-xyzm.json new file mode 100644 index 0000000..d589eff --- /dev/null +++ b/tests/testthat/geojson/coord-class-multipoint-xyzm.json @@ -0,0 +1,2 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0,0.0,0.0],[1.0,2.0,3.0,4.0]]} + diff --git a/tests/testthat/geojson/coord-class-multipolygon-xyz.json b/tests/testthat/geojson/coord-class-multipolygon-xyz.json new file mode 100644 index 0000000..65d7ee1 --- /dev/null +++ b/tests/testthat/geojson/coord-class-multipolygon-xyz.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[0.0,0.0,0.0],[0.0,1.0,0.0],[1.0,1.0,0.0],[1.0,0.0,2.0],[0.0,0.0,0.0]],[[2.0,2.0,0.0],[2.0,3.0,0.0],[3.0,3.0,0.0],[3.0,2.0,0.0],[2.0,2.0,0.0]]]]} diff --git a/tests/testthat/geojson/coord-class-multipolygon-xyzm.json b/tests/testthat/geojson/coord-class-multipolygon-xyzm.json new file mode 100644 index 0000000..fd36cde --- /dev/null +++ b/tests/testthat/geojson/coord-class-multipolygon-xyzm.json @@ -0,0 +1 @@ +{"type":"MultiPolygon","coordinates":[[[[0.0,0.0,0.0,0.0],[0.0,1.0,0.0,0.0],[1.0,1.0,0.0,0.0],[1.0,0.0,2.0,0.0],[0.0,0.0,0.0,0.0]],[[2.0,2.0,0.0,0.0],[2.0,3.0,0.0,0.0],[3.0,3.0,0.0,0.0],[3.0,2.0,0.0,0.0],[2.0,2.0,0.0,0.0]]]]} diff --git a/tests/testthat/geojson/coord-class-point-xy.json b/tests/testthat/geojson/coord-class-point-xy.json new file mode 100644 index 0000000..3936b96 --- /dev/null +++ b/tests/testthat/geojson/coord-class-point-xy.json @@ -0,0 +1 @@ +{"type":"Point","coordinates":[0.0,0.0]} diff --git a/tests/testthat/geojson/coord-class-point-xyz.json b/tests/testthat/geojson/coord-class-point-xyz.json new file mode 100644 index 0000000..4a7d2da --- /dev/null +++ b/tests/testthat/geojson/coord-class-point-xyz.json @@ -0,0 +1,2 @@ +{"type":"Point","coordinates":[0.0,0.0,1.0]} + diff --git a/tests/testthat/geojson/coord-class-point-xyzm.json b/tests/testthat/geojson/coord-class-point-xyzm.json new file mode 100644 index 0000000..f17d09d --- /dev/null +++ b/tests/testthat/geojson/coord-class-point-xyzm.json @@ -0,0 +1,2 @@ +{"type":"Point","coordinates":[0.0,0.0,1.0,2.0]} + diff --git a/tests/testthat/geojson/coord-class-polygon-xyz.json b/tests/testthat/geojson/coord-class-polygon-xyz.json new file mode 100644 index 0000000..7379ba7 --- /dev/null +++ b/tests/testthat/geojson/coord-class-polygon-xyz.json @@ -0,0 +1 @@ +{"type":"Polygon","coordinates":[[[0.0,0.0,0.0],[0.0,1.0,0.0],[1.0,1.0,0.0],[1.0,0.0,0.0],[0.0,0.0,0.0]]]} diff --git a/tests/testthat/geojson/coord-class-polygon-xyzm.json b/tests/testthat/geojson/coord-class-polygon-xyzm.json new file mode 100644 index 0000000..17f94c0 --- /dev/null +++ b/tests/testthat/geojson/coord-class-polygon-xyzm.json @@ -0,0 +1 @@ +{"type":"Polygon","coordinates":[[[0.0,0.0,0.0,0.0],[0.0,1.0,0.0,0.0],[1.0,1.0,2.0,3.0],[1.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]]]} diff --git a/tests/testthat/geojson/feature-collection.json b/tests/testthat/geojson/feature-collection.json new file mode 100644 index 0000000..b45cf52 --- /dev/null +++ b/tests/testthat/geojson/feature-collection.json @@ -0,0 +1,158 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.870885, + 35.215151 + ] + }, + "properties": { + "name": "ABBOTT NEIGHBORHOOD PARK", + "address": "1300 SPRUCE ST" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.837753, + 35.249801 + ] + }, + "properties": { + "name": "DOUBLE OAKS CENTER", + "address": "1326 WOODWARD AV" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.83827, + 35.256747 + ] + }, + "properties": { + "name": "DOUBLE OAKS NEIGHBORHOOD PARK", + "address": "2605 DOUBLE OAKS RD" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.836977, + 35.257517 + ] + }, + "properties": { + "name": "DOUBLE OAKS POOL", + "address": "1200 NEWLAND RD" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.816476, + 35.401487 + ] + }, + "properties": { + "name": "DAVID B. WAYMER FLYING REGIONAL PARK", + "address": "15401 HOLBROOKS RD" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.835564, + 35.399172 + ] + }, + "properties": { + "name": "DAVID B. WAYMER COMMUNITY PARK", + "address": "302 HOLBROOKS RD" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -80.724878, + 35.265454 + ], + [ + -80.722646, + 35.260338 + ], + [ + -80.720329, + 35.260618 + ], + [ + -80.718698, + 35.260267 + ], + [ + -80.715093, + 35.260548 + ], + [ + -80.71681, + 35.255361 + ], + [ + -80.710887, + 35.255361 + ], + [ + -80.703248, + 35.265033 + ], + [ + -80.704793, + 35.268397 + ], + [ + -80.70857, + 35.268257 + ], + [ + -80.712518, + 35.270359 + ], + [ + -80.715179, + 35.267696 + ], + [ + -80.721359, + 35.267276 + ], + [ + -80.724878, + 35.265454 + ] + ] + ] + }, + "properties": { + "name": "Plaza Road Park" + } + } + ] +} diff --git a/tests/testthat/geojson/featurecollection-empty.json b/tests/testthat/geojson/featurecollection-empty.json new file mode 100644 index 0000000..66b7952 --- /dev/null +++ b/tests/testthat/geojson/featurecollection-empty.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[]} diff --git a/tests/testthat/geojson/geo_melbourne.json b/tests/testthat/geojson/geo_melbourne.json new file mode 100644 index 0000000..19e1771 --- /dev/null +++ b/tests/testthat/geojson/geo_melbourne.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"SA2_NAME":"Abbotsford","polygonId":70,"SA3_NAME":"Yarra","AREASQKM":1.7405,"fillColor":"#440154","strokeColor":"#440154","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9925232,-37.8024902],[144.9926453,-37.8018379],[144.9926758,-37.801609],[144.992691,-37.8015175],[144.9927521,-37.8011894],[144.9928284,-37.8007202],[144.9928589,-37.8005409],[144.9929352,-37.8000679],[144.992981,-37.799839],[144.9930878,-37.7991409],[144.9931946,-37.7984505],[144.9932404,-37.7981071],[144.9933014,-37.79776],[144.9934235,-37.7970581],[144.9935913,-37.7960472],[144.9938812,-37.7960205],[144.9940643,-37.7960205],[144.994339,-37.7960396],[144.9944611,-37.7960472],[144.9948273,-37.7960091],[144.9949188,-37.7960091],[144.9949951,-37.7960205],[144.9950714,-37.7960281],[144.9953613,-37.7961082],[144.9954834,-37.7961197],[144.9954834,-37.7962074],[144.9976196,-37.7964172],[144.9976654,-37.7961006],[144.9980011,-37.7961082],[144.9991913,-37.7960701],[145.0000916,-37.7960396],[145.0005951,-37.7960091],[145.0007629,-37.79599],[145.0009308,-37.7959099],[145.0010071,-37.7958488],[145.0010681,-37.7957497],[145.0010529,-37.795639],[145.0012817,-37.7955894],[145.0012817,-37.79562],[145.0012817,-37.7956505],[145.0012817,-37.7956581],[145.0012817,-37.7956696],[145.0012817,-37.7956772],[145.0012817,-37.7957077],[145.0012817,-37.7957191],[145.0012817,-37.7957497],[145.0012817,-37.7957687],[145.0012817,-37.7957878],[145.001297,-37.7957993],[145.001297,-37.7958107],[145.0013123,-37.7958183],[145.0013123,-37.7958298],[145.0013428,-37.7958374],[145.0013428,-37.7958374],[145.001358,-37.7958488],[145.0013733,-37.7958488],[145.0013885,-37.7958488],[145.0014191,-37.7958679],[145.0014343,-37.7958679],[145.0014801,-37.7958984],[145.0014954,-37.7959404],[145.0014954,-37.795948],[145.0014954,-37.7959976],[145.0015411,-37.7959976],[145.0015411,-37.7960091],[145.0015411,-37.7960205],[145.0015411,-37.7960396],[145.0015411,-37.7960472],[145.0015411,-37.7960701],[145.0015411,-37.7960777],[145.0015564,-37.7961006],[145.0015564,-37.7961197],[145.0015564,-37.7961502],[145.0015564,-37.7961502],[145.0015717,-37.7961578],[145.0015717,-37.7961693],[145.0015717,-37.7961884],[145.0015717,-37.7961998],[145.0019379,-37.7966499],[145.0018921,-37.7967491],[145.0018005,-37.7969284],[145.0017242,-37.797039],[145.0016327,-37.7971191],[145.0015106,-37.7971573],[145.0014038,-37.7971802],[145.001236,-37.7971382],[145.0010529,-37.7970772],[145.0008698,-37.79702],[145.0006714,-37.7969704],[145.0003662,-37.7969475],[145.0001526,-37.7969475],[144.9999084,-37.7969589],[144.9997101,-37.796978],[144.9994965,-37.7970009],[144.9993744,-37.7970581],[144.9993134,-37.7971077],[144.9992676,-37.7972183],[144.9992523,-37.7973595],[144.9992981,-37.7975082],[144.9993744,-37.7976494],[144.9995422,-37.7978477],[144.9996796,-37.798008],[144.9998169,-37.7981491],[145,-37.7982903],[145.0003204,-37.79842],[145.0006409,-37.7985382],[145.0009003,-37.7986298],[145.0011597,-37.7987595],[145.0014191,-37.7989006],[145.0020447,-37.7992897],[145.0024567,-37.7995186],[145.0027008,-37.7996674],[145.0028839,-37.7998085],[145.0031891,-37.8000603],[145.0034637,-37.8002586],[145.0037079,-37.8004684],[145.0039825,-37.8007278],[145.0040894,-37.8008194],[145.0041962,-37.8008881],[145.0045013,-37.8010902],[145.0048828,-37.8013191],[145.0053101,-37.8015785],[145.006073,-37.8020973],[145.0064697,-37.8023872],[145.0068207,-37.8026505],[145.0072632,-37.8029709],[145.0074921,-37.8031578],[145.0076294,-37.803299],[145.0076904,-37.8034592],[145.0076904,-37.8036804],[145.0076599,-37.8038979],[145.0075836,-37.8040771],[145.0074158,-37.8041878],[145.0071716,-37.8043289],[145.0069427,-37.8044777],[145.0067139,-37.8046074],[145.0064545,-37.8047409],[145.0061951,-37.8048477],[145.0058899,-37.8049774],[145.0056,-37.8050995],[145.0053558,-37.8051796],[145.0051422,-37.8052406],[145.0049438,-37.8052902],[145.0047302,-37.8053207],[145.0045776,-37.8053398],[145.0044098,-37.8053398],[145.0042419,-37.8053207],[145.0040436,-37.8052673],[145.003891,-37.8051796],[145.0037537,-37.8051109],[145.003479,-37.8050308],[145.0032501,-37.8049393],[145.0030212,-37.8048477],[145.0027924,-37.8047485],[145.0024414,-37.8045807],[145.002182,-37.8044472],[145.0018921,-37.8043289],[145.0016022,-37.8042488],[145.0015106,-37.8042297],[145.0012817,-37.8041992],[145.0010223,-37.8041687],[145.0008392,-37.8041687],[145.0006714,-37.8041801],[145.0005798,-37.8041878],[145.0003052,-37.8042297],[145.0001373,-37.8042793],[144.999939,-37.80439],[144.9998016,-37.8045082],[144.9996338,-37.8046989],[144.9994812,-37.8048592],[144.9993439,-37.8050385],[144.9992828,-37.8052101],[144.9992676,-37.8053589],[144.9993591,-37.8054771],[144.9993591,-37.8056488],[144.9994965,-37.8058281],[144.9996033,-37.8060074],[144.9997101,-37.8061981],[144.9998169,-37.8064003],[144.9999542,-37.8065987],[145.0000305,-37.8066788],[145.0001221,-37.8067894],[145.0002136,-37.806881],[145.0003204,-37.8069687],[145.0004425,-37.8070488],[145.0005341,-37.8071289],[145.0007935,-37.807209],[145.0010529,-37.8072395],[145.0011902,-37.8072281],[145.0013275,-37.8072281],[145.0018616,-37.8072472],[145.0022278,-37.8072395],[145.0028229,-37.8072281],[145.0033569,-37.8072472],[145.00383,-37.8072701],[145.0042114,-37.8072777],[145.0044098,-37.8072891],[145.0047302,-37.8072701],[145.0056915,-37.8071899],[145.0064392,-37.8071785],[145.0069275,-37.8071899],[145.0072937,-37.807209],[145.0075378,-37.8072472],[145.007782,-37.8073082],[145.0080566,-37.8073997],[145.0083618,-37.807518],[145.0085297,-37.8075905],[145.0087128,-37.8077087],[145.0088501,-37.8078384],[145.0089569,-37.8079872],[145.0089722,-37.8081398],[145.0089722,-37.8083992],[145.0089722,-37.8084373],[145.0089722,-37.8087006],[145.0090027,-37.8090096],[145.0090332,-37.8092995],[145.0090637,-37.8096008],[145.0091095,-37.8097878],[145.00914,-37.8099403],[145.009201,-37.8101387],[145.0092926,-37.810318],[145.0093689,-37.8103981],[145.0095215,-37.8104706],[145.0097351,-37.8104973],[145.0098877,-37.8104897],[145.0100403,-37.8104973],[145.0105133,-37.8105278],[145.0109406,-37.8105698],[145.0113068,-37.8105774],[145.0117188,-37.8105774],[145.0120697,-37.8105888],[145.0126801,-37.8106194],[145.0134735,-37.8106308],[145.0136261,-37.8106308],[145.0139771,-37.8106003],[145.0141296,-37.8105698],[145.0146637,-37.8104973],[145.0149689,-37.8104706],[145.0152893,-37.8104706],[145.0155029,-37.8104973],[145.0156403,-37.8105392],[145.0157318,-37.8106194],[145.0157928,-37.8107491],[145.0157928,-37.8108482],[145.0157623,-37.8110008],[145.015686,-37.8112907],[145.0155945,-37.8115387],[145.0155029,-37.8118591],[145.0153961,-37.8121376],[145.0153809,-37.8121376],[145.0150757,-37.8120995],[145.0141449,-37.8120003],[145.0133057,-37.8117905],[145.0130005,-37.8117104],[145.012207,-37.8116302],[145.0101013,-37.8113976],[145.0097656,-37.8114395],[145.0096436,-37.8114471],[145.0084839,-37.8113403],[145.0073547,-37.8112297],[145.0070801,-37.8111992],[145.0064087,-37.8111305],[145.0062714,-37.8111191],[145.0054626,-37.811039],[145.0051117,-37.8110085],[145.0046844,-37.8109703],[145.0041199,-37.8109093],[145.0029449,-37.8107986],[145.0023193,-37.81073],[145.0006409,-37.8105583],[144.9995422,-37.8104477],[144.9990692,-37.8103981],[144.9983521,-37.8103294],[144.997757,-37.8102684],[144.9971619,-37.8102074],[144.9965668,-37.8101387],[144.9960327,-37.8100891],[144.9952545,-37.810009],[144.9945374,-37.8099289],[144.9938507,-37.8098602],[144.9937744,-37.8098488],[144.9928436,-37.8097572],[144.9925995,-37.8097382],[144.9923706,-37.8097191],[144.9919739,-37.8097191],[144.9913483,-37.8097305],[144.9914093,-37.8093605],[144.9915161,-37.8086395],[144.9915924,-37.8081589],[144.9916992,-37.807518],[144.9917603,-37.8071594],[144.9921265,-37.8049889],[144.9923706,-37.8034973],[144.9924927,-37.8026772],[144.9925232,-37.8024902]]]}},{"type":"Feature","properties":{"SA2_NAME":"Albert Park","polygonId":59,"SA3_NAME":"Port Phillip","AREASQKM":4.6747,"fillColor":"#450457","strokeColor":"#450457","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9449005,-37.8437576],[144.9455719,-37.8430405],[144.9465179,-37.8410072],[144.947052,-37.84132],[144.9488525,-37.8407974],[144.9492188,-37.8406906],[144.9500427,-37.8404579],[144.95047,-37.8403282],[144.9510803,-37.8401489],[144.9518433,-37.8399277],[144.9517517,-37.8397484],[144.9517212,-37.8396683],[144.9517059,-37.8395882],[144.9516907,-37.839489],[144.9516907,-37.8394089],[144.9516907,-37.8393288],[144.9517212,-37.8392296],[144.9517517,-37.8391304],[144.9517822,-37.8390503],[144.9518433,-37.8389778],[144.951889,-37.8389091],[144.9519501,-37.8388405],[144.9520416,-37.838768],[144.9521332,-37.8386993],[144.9522095,-37.8386497],[144.952301,-37.8386078],[144.9523926,-37.8385506],[144.9524841,-37.8385086],[144.954422,-37.8379478],[144.9568939,-37.8372307],[144.9571686,-37.8378181],[144.9576263,-37.8387985],[144.957901,-37.8393898],[144.9581604,-37.8399773],[144.9586792,-37.8410492],[144.959198,-37.8421593],[144.9595032,-37.8418999],[144.9597321,-37.8416977],[144.9604492,-37.8410797],[144.9608002,-37.8407898],[144.9611969,-37.8404694],[144.9613953,-37.8403206],[144.9616394,-37.8401489],[144.9618835,-37.8399887],[144.9621277,-37.8398285],[144.9623718,-37.8396797],[144.9626312,-37.8395309],[144.9628754,-37.8393784],[144.9631348,-37.8392296],[144.9633789,-37.8391075],[144.9640045,-37.8387985],[144.9642639,-37.8386688],[144.964859,-37.8383904],[144.965271,-37.8382072],[144.9655914,-37.838089],[144.9657135,-37.8380394],[144.9658661,-37.8379707],[144.9667206,-37.8376579],[144.9676514,-37.8373795],[144.9678802,-37.8373108],[144.9680939,-37.8372383],[144.9682617,-37.8371696],[144.9684601,-37.8370895],[144.9686432,-37.8370094],[144.9688721,-37.8368988],[144.969101,-37.8367805],[144.9693146,-37.8366699],[144.9695435,-37.8365288],[144.9697723,-37.8363686],[144.969986,-37.8362083],[144.9701996,-37.8360405],[144.9703979,-37.8358688],[144.9705963,-37.8356781],[144.9706421,-37.8356285],[144.9707642,-37.8354988],[144.970932,-37.8353195],[144.9710693,-37.8351288],[144.9716797,-37.834259],[144.9716339,-37.8339081],[144.9717102,-37.8336678],[144.9717255,-37.8335304],[144.971756,-37.8332901],[144.971756,-37.8330879],[144.9717407,-37.8329697],[144.9717407,-37.83284],[144.9717102,-37.8327179],[144.9716949,-37.8326187],[144.9716644,-37.8325195],[144.9716339,-37.832428],[144.9716034,-37.8323288],[144.9717865,-37.8322792],[144.9718323,-37.8323174],[144.9719238,-37.8324394],[144.9720612,-37.8326073],[144.9721222,-37.8326797],[144.9722443,-37.8328094],[144.9723663,-37.8329391],[144.9725037,-37.8330574],[144.972641,-37.8331795],[144.9728088,-37.8332901],[144.9734039,-37.8337173],[144.973465,-37.8337593],[144.9736328,-37.8338776],[144.973999,-37.8341179],[144.9741058,-37.8341904],[144.9741821,-37.8342705],[144.9744415,-37.8345604],[144.9745331,-37.8346672],[144.9748688,-37.8350487],[144.9749298,-37.8351173],[144.9749756,-37.8351974],[144.9750366,-37.8353195],[144.9751892,-37.8355675],[144.9753418,-37.8358307],[144.9754333,-37.835968],[144.9754791,-37.8360672],[144.9755249,-37.8362083],[144.9758606,-37.8371506],[144.976059,-37.8376694],[144.9762573,-37.8381996],[144.9763489,-37.8384476],[144.9764404,-37.8387184],[144.9765778,-37.8390694],[144.9767914,-37.8396797],[144.9768829,-37.8399506],[144.9769897,-37.8402176],[144.9770813,-37.8404694],[144.9772797,-37.8410187],[144.9774017,-37.8413391],[144.9775391,-37.8417282],[144.9777222,-37.8422279],[144.9778137,-37.8424797],[144.9779205,-37.8427582],[144.9779968,-37.8429909],[144.9781342,-37.8433609],[144.9782715,-37.843708],[144.9783936,-37.8440475],[144.9785614,-37.8445473],[144.9786835,-37.8448486],[144.9790802,-37.8459702],[144.9794159,-37.8468704],[144.9795074,-37.8471107],[144.9797211,-37.8477173],[144.9801483,-37.8488579],[144.9803314,-37.8493881],[144.9804382,-37.849659],[144.9806366,-37.8502083],[144.9794159,-37.8504906],[144.9783478,-37.8507309],[144.9785767,-37.851429],[144.9788513,-37.8522186],[144.9790344,-37.8527603],[144.9785309,-37.8529091],[144.9785156,-37.8530807],[144.9783325,-37.8531876],[144.97612,-37.8538704],[144.9758911,-37.8538895],[144.9756775,-37.8538589],[144.9754791,-37.8537788],[144.9753571,-37.8536682],[144.9743652,-37.8521805],[144.9742889,-37.8521881],[144.9706421,-37.85355],[144.9701691,-37.8537292],[144.9689484,-37.8541603],[144.968399,-37.8543472],[144.9682617,-37.8543892],[144.9680634,-37.8546371],[144.9672699,-37.8555908],[144.9668884,-37.8560371],[144.9664917,-37.8565292],[144.9662476,-37.8568077],[144.9656677,-37.8574982],[144.9654694,-37.8572998],[144.9650116,-37.8568573],[144.9647522,-37.8565979],[144.9643707,-37.8562202],[144.9642181,-37.8560982],[144.9640198,-37.8559494],[144.9637756,-37.8557587],[144.9633026,-37.8554573],[144.9628296,-37.8552094],[144.9625397,-37.8551178],[144.9621887,-37.85495],[144.9616241,-37.8546677],[144.9610138,-37.8543701],[144.960907,-37.8543091],[144.9603271,-37.8539886],[144.9597015,-37.8537102],[144.9593811,-37.853508],[144.9590607,-37.8533707],[144.9586639,-37.8531609],[144.9583282,-37.8529701],[144.9580841,-37.8528786],[144.95784,-37.8527908],[144.9577332,-37.8527374],[144.9571991,-37.8524704],[144.9568024,-37.8522873],[144.9565735,-37.8521576],[144.9562836,-37.8520088],[144.9560699,-37.8519402],[144.9558716,-37.8518791],[144.9556427,-37.8517303],[144.9549713,-37.85149],[144.954361,-37.8512001],[144.9542236,-37.8511391],[144.9538422,-37.8509407],[144.9534912,-37.8508072],[144.9531403,-37.8506203],[144.9528961,-37.8504601],[144.952301,-37.8502083],[144.951889,-37.8500671],[144.9515839,-37.8499107],[144.9512482,-37.8497772],[144.950882,-37.8496284],[144.9503784,-37.8494606],[144.9499512,-37.8492279],[144.9494781,-37.8490372],[144.9492188,-37.8489494],[144.9487915,-37.8487206],[144.94841,-37.8485489],[144.9482117,-37.8484497],[144.9478607,-37.8482399],[144.947113,-37.8479195],[144.9464417,-37.8476181],[144.9463654,-37.8475876],[144.9460297,-37.8474274],[144.9457245,-37.84729],[144.9452515,-37.8470879],[144.9449005,-37.8470001],[144.9447174,-37.8469391],[144.9446106,-37.8468285],[144.9445343,-37.8467598],[144.9443054,-37.8466682],[144.944046,-37.8466492],[144.9438934,-37.8465996],[144.9436798,-37.8465195],[144.9429626,-37.846199],[144.942688,-37.8460884],[144.9432678,-37.84552],[144.9434662,-37.8453102],[144.9440002,-37.8447304],[144.9442749,-37.844429],[144.9449005,-37.8437576]]]}},{"type":"Feature","properties":{"SA2_NAME":"Alphington - Fairfield","polygonId":41,"SA3_NAME":"Darebin - South","AREASQKM":2.8853,"fillColor":"#46075A","strokeColor":"#46075A","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[145.0203705,-37.76548],[145.0215149,-37.7655983],[145.0246124,-37.7659302],[145.0264893,-37.7661285],[145.0274048,-37.7662277],[145.0285492,-37.7663498],[145.0305939,-37.7665596],[145.031189,-37.7666283],[145.031189,-37.7666779],[145.0312195,-37.7667809],[145.0312347,-37.7668381],[145.0312805,-37.7669106],[145.0313263,-37.7669678],[145.0313873,-37.7670479],[145.0314484,-37.7671089],[145.0315094,-37.76717],[145.0315704,-37.7672501],[145.0316162,-37.7673187],[145.0316315,-37.7674179],[145.0316162,-37.7675591],[145.0316162,-37.7676888],[145.031601,-37.7677879],[145.0315704,-37.7679176],[145.0315399,-37.7680206],[145.0315094,-37.7681503],[145.0314789,-37.76828],[145.0314636,-37.7683983],[145.0314331,-37.768528],[145.0314331,-37.7686501],[145.0314636,-37.7687187],[145.031662,-37.7688599],[145.0317383,-37.76894],[145.0317841,-37.7690277],[145.0317993,-37.7691574],[145.0317993,-37.7692604],[145.0317688,-37.7693787],[145.0317688,-37.7694588],[145.0317993,-37.7695885],[145.0318298,-37.7697296],[145.0318604,-37.7698975],[145.0318604,-37.7700081],[145.0318756,-37.77005],[145.0318909,-37.7701302],[145.0319214,-37.7702293],[145.0320282,-37.7704277],[145.0321198,-37.7705383],[145.0322571,-37.770649],[145.0324249,-37.7706795],[145.0325928,-37.770668],[145.0327606,-37.770649],[145.0328217,-37.7706375],[145.0328979,-37.7706184],[145.032959,-37.7705879],[145.0330505,-37.7705803],[145.0331726,-37.7705688],[145.0332489,-37.7705688],[145.0333557,-37.7705383],[145.0334625,-37.7705078],[145.0336304,-37.7704773],[145.0339813,-37.7704201],[145.0340881,-37.7703896],[145.0341644,-37.7703705],[145.0341797,-37.7703705],[145.0342407,-37.7703705],[145.0343018,-37.7703705],[145.0343933,-37.7703705],[145.0345154,-37.7703476],[145.0346069,-37.77034],[145.0347137,-37.7703094],[145.0348053,-37.770298],[145.03508,-37.7702789],[145.0352478,-37.7702675],[145.0353394,-37.7702675],[145.0354767,-37.7702904],[145.0356293,-37.7703285],[145.0357971,-37.770359],[145.036026,-37.7704201],[145.0361481,-37.7704773],[145.0362549,-37.7705688],[145.0363312,-37.7706108],[145.0363617,-37.7706108],[145.0364075,-37.7705879],[145.0364838,-37.7705193],[145.036499,-37.7705078],[145.0365753,-37.7705002],[145.0366058,-37.7705002],[145.0366516,-37.7705002],[145.0366516,-37.7705078],[145.0367126,-37.7705383],[145.0367737,-37.7705688],[145.0368042,-37.7706108],[145.0368195,-37.770649],[145.0368195,-37.7706795],[145.0367889,-37.7707672],[145.0367889,-37.7708588],[145.0368195,-37.7709198],[145.0368805,-37.7709885],[145.0369415,-37.7710686],[145.036972,-37.7711487],[145.0370178,-37.7712173],[145.0370636,-37.7712784],[145.0370789,-37.7713509],[145.0370941,-37.7714081],[145.0371094,-37.7714996],[145.0371094,-37.7716484],[145.0371094,-37.7717094],[145.0371094,-37.7717705],[145.0370941,-37.7718201],[145.0370789,-37.7719002],[145.0370331,-37.7721596],[145.036911,-37.7723694],[145.0368805,-37.7724495],[145.0368347,-37.7725105],[145.0368042,-37.7725677],[145.0367432,-37.7725983],[145.0366974,-37.7726173],[145.0366364,-37.7726288],[145.0365295,-37.7726173],[145.0364227,-37.7726097],[145.0363617,-37.7726173],[145.0363464,-37.7726288],[145.0362854,-37.7726479],[145.0361938,-37.7726707],[145.0360565,-37.7726784],[145.0359192,-37.7726707],[145.0357819,-37.7726402],[145.035553,-37.7725677],[145.0354919,-37.7725487],[145.0354156,-37.7725182],[145.0351105,-37.7724686],[145.0348969,-37.7724495],[145.034729,-37.7724075],[145.034668,-37.7723885],[145.0344849,-37.7723503],[145.0344238,-37.7723389],[145.0343628,-37.7723389],[145.0343018,-37.7723503],[145.0342407,-37.7723694],[145.0341797,-37.772419],[145.0341187,-37.7725105],[145.0340881,-37.7726097],[145.0341187,-37.7727089],[145.0341492,-37.772789],[145.0341949,-37.7728691],[145.0342407,-37.7729607],[145.0342712,-37.7730293],[145.0343628,-37.7731209],[145.0344543,-37.7732201],[145.0345306,-37.7733383],[145.0345917,-37.7733994],[145.0346527,-37.773468],[145.0346832,-37.7735176],[145.0347595,-37.7736473],[145.03479,-37.7737083],[145.0348206,-37.7737999],[145.0348969,-37.77388],[145.0349426,-37.7739182],[145.0349884,-37.7739677],[145.0350189,-37.7740173],[145.0350494,-37.7740479],[145.03508,-37.7740974],[145.0351105,-37.7741699],[145.0351715,-37.7742691],[145.035202,-37.7743607],[145.0352631,-37.7744408],[145.0353088,-37.7745285],[145.0353546,-37.7746086],[145.0354462,-37.7747307],[145.0355682,-37.7748184],[145.0356445,-37.7748604],[145.0358124,-37.7749176],[145.0358429,-37.7749405],[145.0359039,-37.7749672],[145.0359192,-37.7749977],[145.0359192,-37.7750587],[145.0359039,-37.7751503],[145.0358582,-37.7752304],[145.0357971,-37.7753792],[145.0357819,-37.7754288],[145.0357208,-37.7756081],[145.0356598,-37.7757683],[145.0356445,-37.7758102],[145.0355988,-37.7758179],[145.0354767,-37.7758102],[145.0353546,-37.7757874],[145.0352936,-37.7757988],[145.0352173,-37.7758598],[145.0351562,-37.7759285],[145.03508,-37.7760277],[145.0350494,-37.7761383],[145.0350189,-37.7762909],[145.0349884,-37.7765007],[145.0350037,-37.7766075],[145.0350342,-37.7767372],[145.0350342,-37.7768173],[145.0350189,-37.7769394],[145.0350189,-37.7770195],[145.0350342,-37.7770882],[145.0350342,-37.7771492],[145.0350494,-37.7772484],[145.0350494,-37.7772903],[145.03508,-37.777359],[145.0351105,-37.7773895],[145.0351105,-37.7774277],[145.0351105,-37.7774887],[145.0351105,-37.7775497],[145.0351105,-37.7776108],[145.03508,-37.7777672],[145.0350647,-37.7778397],[145.0350189,-37.7779198],[145.0349731,-37.7779808],[145.0349121,-37.7780685],[145.03479,-37.7783394],[145.034729,-37.7784996],[145.0346985,-37.7785606],[145.034668,-37.7785873],[145.0345917,-37.7786484],[145.0345459,-37.7787094],[145.0345306,-37.7787399],[145.0345154,-37.7787781],[145.0344696,-37.7788391],[145.0344696,-37.7789078],[145.0345306,-37.7789803],[145.0346375,-37.7790108],[145.0347137,-37.7790108],[145.03479,-37.7789803],[145.0348816,-37.7789497],[145.0349579,-37.7789307],[145.03508,-37.7789383],[145.0351868,-37.7789307],[145.0353088,-37.7789078],[145.0354919,-37.7788391],[145.035553,-37.77882],[145.0355988,-37.77882],[145.0357513,-37.7788277],[145.0358887,-37.7788391],[145.035965,-37.7788773],[145.0358124,-37.7790489],[145.0352325,-37.7796478],[145.0351562,-37.7797279],[145.0350647,-37.7798004],[145.0349731,-37.7798576],[145.0348816,-37.7799187],[145.0347748,-37.7799683],[145.0346832,-37.7800179],[145.0345612,-37.7800598],[145.0344391,-37.780098],[145.0339203,-37.7802391],[145.0334167,-37.7803307],[145.0322571,-37.7805481],[145.0311432,-37.7807579],[145.0300598,-37.7809601],[145.0286713,-37.7812195],[145.0279388,-37.7813606],[145.027298,-37.7814789],[145.0257416,-37.7817688],[145.0250244,-37.781868],[145.0245667,-37.7819405],[145.0240936,-37.7820473],[145.0234222,-37.7822189],[145.0232849,-37.782238],[145.0220032,-37.7824898],[145.0209198,-37.7827072],[145.0197601,-37.7829399],[145.0191345,-37.7830696],[145.0185699,-37.7831802],[145.0184174,-37.7832108],[145.0176544,-37.7833595],[145.0173798,-37.7833595],[145.0161896,-37.7835579],[145.0149994,-37.7837601],[145.0148315,-37.7837906],[145.0144806,-37.7837906],[145.0142975,-37.7838287],[145.0143738,-37.7833672],[145.0143738,-37.7833786],[145.0143738,-37.7833595],[145.0144958,-37.78339],[145.0145874,-37.7828674],[145.0147247,-37.7820396],[145.0148315,-37.7813187],[145.0149078,-37.7809601],[145.0149231,-37.7808685],[145.0149231,-37.7807808],[145.0151672,-37.7793808],[145.0151978,-37.7791672],[145.0157776,-37.7791672],[145.0158539,-37.7787704],[145.0147247,-37.7786407],[145.0149689,-37.7773285],[145.0152435,-37.7759705],[145.0152435,-37.7758789],[145.0152588,-37.7757874],[145.015564,-37.7740898],[145.015564,-37.7739983],[145.0160675,-37.7740593],[145.016098,-37.7738304],[145.0161133,-37.7737198],[145.0162048,-37.7732086],[145.0162506,-37.7729073],[145.0162659,-37.7728195],[145.0162659,-37.7728081],[145.0162811,-37.7727585],[145.0163574,-37.7723083],[145.0164185,-37.7719078],[145.0164642,-37.7716179],[145.0164795,-37.7715378],[145.0164948,-37.7714081],[145.01651,-37.7713699],[145.0165863,-37.7709274],[145.0166016,-37.7708282],[145.0166626,-37.7704887],[145.0167389,-37.7700195],[145.0167694,-37.7698402],[145.016861,-37.7692986],[145.0169525,-37.7686501],[145.0170135,-37.7687073],[145.0174103,-37.7687492],[145.0175323,-37.7687073],[145.0176239,-37.7681885],[145.0177917,-37.7672081],[145.0166931,-37.7670975],[145.0168762,-37.7660179],[145.0170288,-37.7651291],[145.0181122,-37.7652397],[145.0192413,-37.765358],[145.0203705,-37.76548]]]}},{"type":"Feature","properties":{"SA2_NAME":"Armadale","polygonId":66,"SA3_NAME":"Stonnington - West","AREASQKM":2.1835,"fillColor":"#460A5D","strokeColor":"#460A5D","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[145.0116577,-37.8535805],[145.0117493,-37.8529472],[145.0119171,-37.8518791],[145.0119324,-37.851799],[145.0120239,-37.8511696],[145.0121613,-37.8502274],[145.0122223,-37.8498688],[145.0122986,-37.849369],[145.0123138,-37.8492775],[145.0124207,-37.8492889],[145.0154877,-37.8497086],[145.016861,-37.8498878],[145.0177765,-37.8500099],[145.0182648,-37.8500786],[145.0188751,-37.8501587],[145.0197296,-37.8502693],[145.0202942,-37.850338],[145.020462,-37.8503609],[145.0214386,-37.8504906],[145.0225983,-37.8506393],[145.0237274,-37.8507881],[145.0241394,-37.8508377],[145.0248413,-37.8509407],[145.0254364,-37.8510208],[145.026886,-37.8512077],[145.0275574,-37.8512878],[145.0279083,-37.8513374],[145.0285645,-37.851429],[145.02948,-37.8515472],[145.0296631,-37.8515701],[145.0300446,-37.8516197],[145.0299835,-37.8520279],[145.0299072,-37.85252],[145.0297394,-37.8535385],[145.0295715,-37.8547287],[145.0294189,-37.8557205],[145.0292816,-37.8566208],[145.0292206,-37.857029],[145.0291901,-37.8571091],[145.0291595,-37.857338],[145.0291595,-37.8573685],[145.0290527,-37.8580208],[145.0289307,-37.8587875],[145.0289001,-37.8589287],[145.0287933,-37.8596001],[145.0287323,-37.8599281],[145.0286407,-37.8604584],[145.0285797,-37.8608284],[145.0284882,-37.8614197],[145.0283356,-37.8623695],[145.0281525,-37.8634605],[145.0280304,-37.8642387],[145.0279999,-37.8643379],[145.0279541,-37.8646507],[145.0278778,-37.8651199],[145.0278473,-37.8653107],[145.0276794,-37.8663101],[145.0271301,-37.8660774],[145.0267639,-37.8659096],[145.026062,-37.8656082],[145.02565,-37.8654289],[145.0251465,-37.8652077],[145.0241699,-37.8647804],[145.0231781,-37.8643494],[145.0223083,-37.8639603],[145.0222015,-37.8639183],[145.0206146,-37.8632278],[145.0204926,-37.8631706],[145.019455,-37.8627205],[145.0188293,-37.8624496],[145.0180206,-37.8620987],[145.0169983,-37.8616486],[145.0157928,-37.8611183],[145.015213,-37.8608704],[145.0151215,-37.8608398],[145.0136108,-37.86063],[145.0133972,-37.8605995],[145.0127258,-37.860508],[145.0117798,-37.8603897],[145.0105133,-37.860218],[145.0106964,-37.8591805],[145.0108643,-37.8582001],[145.0108795,-37.85812],[145.0109406,-37.8577805],[145.0109711,-37.8576508],[145.0112457,-37.85606],[145.0114899,-37.8546906],[145.0115509,-37.8543091],[145.0116119,-37.8539085],[145.0116577,-37.8535805]]]}},{"type":"Feature","properties":{"SA2_NAME":"Ascot Vale","polygonId":44,"SA3_NAME":"Essendon","AREASQKM":3.8361,"fillColor":"#460C5F","strokeColor":"#460C5F","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.8994141,-37.7703972],[144.899765,-37.7702789],[144.9006042,-37.7701073],[144.9009399,-37.7700195],[144.9024963,-37.7701988],[144.903595,-37.7703285],[144.9040833,-37.7703781],[144.9051971,-37.7705078],[144.9066315,-37.770668],[144.907486,-37.7707672],[144.90802,-37.7708282],[144.908844,-37.7709198],[144.9091492,-37.7709503],[144.9100494,-37.7710495],[144.9102936,-37.77108],[144.9106598,-37.7711182],[144.9111328,-37.7711678],[144.9114227,-37.7711983],[144.9125214,-37.771328],[144.913681,-37.7714577],[144.9148102,-37.7715797],[144.9150238,-37.7715988],[144.9154816,-37.7716599],[144.9161682,-37.7717285],[144.9167328,-37.7717896],[144.9180908,-37.7719383],[144.9183502,-37.7719688],[144.9195557,-37.7720985],[144.920639,-37.7722092],[144.9219208,-37.7723503],[144.9231567,-37.77248],[144.9239197,-37.7725601],[144.9252625,-37.7726974],[144.9263153,-37.7728081],[144.9264374,-37.7728195],[144.9269257,-37.7727585],[144.9268799,-37.7726288],[144.9272614,-37.7725983],[144.9274292,-37.7725792],[144.9276428,-37.7725983],[144.9302521,-37.7728806],[144.9303284,-37.7728882],[144.9319916,-37.7730598],[144.9320831,-37.7730675],[144.9336548,-37.7732391],[144.934021,-37.7732773],[144.9344025,-37.7733192],[144.9345856,-37.7733307],[144.9347534,-37.7733498],[144.9349518,-37.7733803],[144.9351501,-37.7734184],[144.9357605,-37.7735786],[144.9364777,-37.7737885],[144.9364166,-37.7738609],[144.9363251,-37.7741089],[144.9363251,-37.774189],[144.9363556,-37.774498],[144.9364929,-37.7757187],[144.936554,-37.7760773],[144.9365692,-37.7762108],[144.9366302,-37.7764702],[144.9367065,-37.7767181],[144.9368134,-37.7770996],[144.9368744,-37.7772102],[144.9370728,-37.7777672],[144.9356689,-37.7776108],[144.9349365,-37.7775192],[144.9348602,-37.7775574],[144.933609,-37.7774086],[144.9336395,-37.7774391],[144.9330139,-37.777359],[144.9324799,-37.777298],[144.9321136,-37.7772598],[144.9316101,-37.7771988],[144.9312592,-37.7771606],[144.9309235,-37.7771301],[144.9307556,-37.7771072],[144.9302368,-37.77705],[144.9300842,-37.7770309],[144.9303589,-37.77742],[144.9304047,-37.7774887],[144.9299011,-37.7777596],[144.9301453,-37.7781372],[144.9303589,-37.7784691],[144.9306183,-37.77882],[144.9310455,-37.7793694],[144.9312897,-37.7796593],[144.9315948,-37.7800407],[144.932312,-37.7809105],[144.9317169,-37.7808495],[144.9316559,-37.7812004],[144.9316406,-37.781208],[144.9312592,-37.7811699],[144.9312286,-37.7813492],[144.9312286,-37.7813683],[144.9311829,-37.7813606],[144.9310303,-37.7813492],[144.931015,-37.7813187],[144.9307709,-37.7812996],[144.9307404,-37.7811279],[144.9307404,-37.7810783],[144.930481,-37.7810593],[144.9304504,-37.7812576],[144.9303894,-37.7815285],[144.930191,-37.7815094],[144.9297638,-37.7814598],[144.9296417,-37.7814484],[144.9296722,-37.7811775],[144.9296875,-37.7811508],[144.9295502,-37.7811394],[144.9295654,-37.7810783],[144.9293365,-37.7810593],[144.9293518,-37.7809601],[144.9292755,-37.7809486],[144.9290771,-37.7809296],[144.9289551,-37.7809105],[144.9288483,-37.7808876],[144.9284973,-37.7808609],[144.928421,-37.7808495],[144.9284058,-37.7809677],[144.9283295,-37.7809601],[144.928299,-37.7811089],[144.9282532,-37.7810898],[144.9282532,-37.7810173],[144.9279938,-37.7809982],[144.9278717,-37.7809792],[144.9278107,-37.7809792],[144.927597,-37.7809486],[144.9275818,-37.7810898],[144.927063,-37.7806091],[144.9267731,-37.7806702],[144.9266968,-37.7806778],[144.9266815,-37.7806587],[144.9266663,-37.7806396],[144.9266357,-37.7805977],[144.9266205,-37.7805786],[144.9266205,-37.7805672],[144.9266052,-37.7805595],[144.92659,-37.7805405],[144.92659,-37.780529],[144.9265594,-37.7805099],[144.9265594,-37.7804985],[144.9265442,-37.7804794],[144.9265442,-37.7804794],[144.9265289,-37.7804604],[144.9265289,-37.7804604],[144.9264221,-37.7803192],[144.9261322,-37.7802887],[144.9251709,-37.7801971],[144.9251099,-37.7805481],[144.9244995,-37.7804909],[144.9244537,-37.7808304],[144.9238434,-37.7807693],[144.9237518,-37.7807693],[144.9232941,-37.7807198],[144.9233551,-37.7803993],[144.9232788,-37.7803879],[144.9232788,-37.7804184],[144.9231873,-37.7804108],[144.9230347,-37.7803993],[144.9229584,-37.7803879],[144.9225922,-37.7803497],[144.9225006,-37.78088],[144.9224091,-37.7813492],[144.9223633,-37.7816582],[144.9222717,-37.7822495],[144.922226,-37.7825089],[144.9221802,-37.7827492],[144.9221497,-37.7829704],[144.9220276,-37.7837105],[144.9205627,-37.78368],[144.9203339,-37.7836685],[144.9193115,-37.783638],[144.9176025,-37.7836075],[144.9173126,-37.7833099],[144.9169617,-37.7829399],[144.9159698,-37.781868],[144.9151001,-37.7809601],[144.9148102,-37.7806587],[144.9147339,-37.7805786],[144.9145203,-37.7803879],[144.9135742,-37.7793884],[144.9116516,-37.7805176],[144.9108429,-37.7809906],[144.9082336,-37.7825279],[144.9082184,-37.7825584],[144.9081116,-37.7826805],[144.9079895,-37.7828178],[144.9078827,-37.7829399],[144.9077606,-37.7830887],[144.9075928,-37.7833176],[144.9074554,-37.7835388],[144.9073029,-37.7837906],[144.9071655,-37.7840309],[144.9070435,-37.7842903],[144.9069366,-37.7845383],[144.9068298,-37.7847977],[144.9067535,-37.785038],[144.9066925,-37.7852783],[144.9066315,-37.7855492],[144.9065399,-37.7860184],[144.9064636,-37.7868385],[144.9063263,-37.7873878],[144.904953,-37.7871475],[144.9049377,-37.7872086],[144.9048615,-37.787468],[144.9048309,-37.78759],[144.9048004,-37.7876396],[144.9046936,-37.7879105],[144.9045563,-37.7881699],[144.9044037,-37.7884598],[144.9042511,-37.7887077],[144.904007,-37.7889481],[144.9035339,-37.7892799],[144.90271,-37.78965],[144.90271,-37.7895279],[144.90271,-37.7893906],[144.9027557,-37.7892075],[144.9028168,-37.7890091],[144.9029694,-37.7887077],[144.9031067,-37.7884483],[144.9033203,-37.7880478],[144.9035034,-37.7876892],[144.9035797,-37.7874298],[144.9036255,-37.7872391],[144.9036407,-37.7870483],[144.903656,-37.786808],[144.9036713,-37.7867088],[144.9037018,-37.7865105],[144.9037476,-37.7863083],[144.9037933,-37.7861595],[144.9038696,-37.7859993],[144.9039917,-37.7858086],[144.904068,-37.7856178],[144.9040833,-37.7854385],[144.9041138,-37.7853088],[144.9040833,-37.7850876],[144.9040222,-37.7847404],[144.9039764,-37.7845802],[144.9038239,-37.7843895],[144.903656,-37.7842178],[144.9034729,-37.7840691],[144.9033051,-37.7839699],[144.9030914,-37.7838402],[144.9028931,-37.7837105],[144.9026642,-37.7835274],[144.9023895,-37.7832794],[144.9021912,-37.7831078],[144.9021149,-37.7830505],[144.9017639,-37.7827797],[144.9015198,-37.782608],[144.9012146,-37.7824402],[144.9009399,-37.782299],[144.9007111,-37.7821999],[144.9003906,-37.7820587],[144.9001312,-37.781929],[144.8998413,-37.7817688],[144.8995209,-37.7815895],[144.8992462,-37.7813988],[144.8990021,-37.7812386],[144.8987732,-37.7811089],[144.8984833,-37.7809677],[144.8981018,-37.7807503],[144.8979187,-37.7806091],[144.8977051,-37.7803574],[144.897522,-37.7800598],[144.8973236,-37.7797203],[144.8972015,-37.779438],[144.8971405,-37.7792282],[144.89711,-37.7789879],[144.8970795,-37.7787285],[144.8970795,-37.7787094],[144.8970642,-37.7784576],[144.897049,-37.7783585],[144.8970337,-37.7780304],[144.8969574,-37.77771],[144.8968811,-37.777298],[144.8968201,-37.7769585],[144.8967133,-37.7765808],[144.8966522,-37.7763786],[144.8965912,-37.7761879],[144.8964996,-37.7759476],[144.8962402,-37.7753983],[144.8961639,-37.7751808],[144.8961029,-37.77491],[144.8960419,-37.7746506],[144.8959961,-37.7744102],[144.8959808,-37.7742386],[144.8959198,-37.7739182],[144.8959045,-37.7736588],[144.8958893,-37.7734909],[144.8958588,-37.7733994],[144.8958435,-37.7732506],[144.8958588,-37.7730484],[144.8959503,-37.7728081],[144.8961792,-37.77248],[144.8964233,-37.7721596],[144.8968201,-37.7717896],[144.8971863,-37.7715302],[144.8976288,-37.7712479],[144.8979797,-37.7710381],[144.8984833,-37.7707901],[144.8989105,-37.7705803],[144.8994141,-37.7703972]]]}},{"type":"Feature","properties":{"SA2_NAME":"Brunswick","polygonId":36,"SA3_NAME":"Brunswick - Coburg","AREASQKM":5.1425,"fillColor":"#472D7B","strokeColor":"#472D7B","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9497375,-37.7627602],[144.9500122,-37.7610474],[144.9501801,-37.7601585],[144.9503174,-37.7593079],[144.9500732,-37.7592773],[144.9501495,-37.7589302],[144.9503021,-37.7580872],[144.9504242,-37.75737],[144.9506531,-37.7562294],[144.9506531,-37.7561874],[144.9506683,-37.7561607],[144.9506836,-37.7561188],[144.9506836,-37.7560997],[144.9506989,-37.7560692],[144.9507294,-37.7560501],[144.9507294,-37.7560387],[144.9507599,-37.7560081],[144.9507904,-37.7559776],[144.9508057,-37.7559586],[144.9508209,-37.7559509],[144.9508514,-37.7559204],[144.9508667,-37.755909],[144.9509125,-37.7558899],[144.950943,-37.7558708],[144.9510193,-37.7558403],[144.9511871,-37.7557793],[144.9516907,-37.755619],[144.9519196,-37.7555389],[144.9522095,-37.7554283],[144.9527283,-37.7552109],[144.9532013,-37.7550087],[144.9532623,-37.7549706],[144.9533997,-37.7548904],[144.9535065,-37.7547989],[144.953598,-37.7546997],[144.9536896,-37.7545586],[144.9538269,-37.7543182],[144.9538574,-37.7542305],[144.9539642,-37.7542381],[144.9548035,-37.7543373],[144.9557648,-37.7544479],[144.9564514,-37.754528],[144.9567413,-37.7545586],[144.9575195,-37.7546577],[144.9582214,-37.7547379],[144.9587097,-37.7547989],[144.9590607,-37.7548409],[144.960083,-37.7549591],[144.9615326,-37.7551308],[144.961731,-37.7551498],[144.9621735,-37.7551994],[144.9638824,-37.7554092],[144.9641113,-37.7554474],[144.9648132,-37.7555389],[144.9659882,-37.7556801],[144.9673615,-37.7558289],[144.967514,-37.7558479],[144.9681091,-37.755909],[144.9694061,-37.7560577],[144.9703979,-37.7561684],[144.9711304,-37.7562485],[144.9723206,-37.7563782],[144.9733124,-37.7564888],[144.9739227,-37.7565575],[144.9740295,-37.7565689],[144.9748535,-37.7566605],[144.9761047,-37.7568092],[144.9766083,-37.7568703],[144.9769745,-37.7569199],[144.9766235,-37.7590103],[144.9757538,-37.7589073],[144.9751282,-37.7588272],[144.9751282,-37.7588387],[144.9750977,-37.7588272],[144.9745026,-37.7587585],[144.9739532,-37.7586975],[144.9739075,-37.7590103],[144.9738922,-37.7591286],[144.9738617,-37.7592087],[144.9740753,-37.7592278],[144.9740601,-37.7592697],[144.9740295,-37.7594604],[144.9739838,-37.7597389],[144.9738159,-37.7597198],[144.9736176,-37.7608681],[144.973587,-37.7609978],[144.9734955,-37.7611008],[144.9733429,-37.7620277],[144.9733887,-37.7620392],[144.973053,-37.7638702],[144.973053,-37.7639008],[144.9729309,-37.7645493],[144.9727936,-37.7653198],[144.9727325,-37.7657585],[144.97258,-37.7665482],[144.97229,-37.7681274],[144.9721832,-37.7687683],[144.972168,-37.7688904],[144.9719696,-37.7699394],[144.9718628,-37.7705574],[144.9717102,-37.7714005],[144.9716492,-37.7717781],[144.9716187,-37.7719307],[144.9716034,-37.7720299],[144.9714966,-37.7726593],[144.9713745,-37.7733879],[144.9712677,-37.7740974],[144.9712067,-37.7744789],[144.9711304,-37.7749596],[144.9711304,-37.7750092],[144.9710083,-37.7757683],[144.9710388,-37.7758598],[144.9709473,-37.7765198],[144.9709167,-37.7767181],[144.9708405,-37.7772408],[144.9706879,-37.7782898],[144.9705811,-37.7789001],[144.97052,-37.7792778],[144.9689941,-37.7790985],[144.9680939,-37.7792282],[144.9676361,-37.7793083],[144.9677124,-37.7789383],[144.9672089,-37.7788773],[144.9659729,-37.7787399],[144.9651794,-37.7786407],[144.9639435,-37.7784882],[144.9633331,-37.7784195],[144.9624786,-37.7783089],[144.9616241,-37.7782097],[144.9614716,-37.7781906],[144.9602203,-37.778038],[144.9598999,-37.7779999],[144.959259,-37.7779198],[144.9580841,-37.7777786],[144.9564514,-37.7775879],[144.9551239,-37.77742],[144.9541626,-37.7773094],[144.9531403,-37.7771873],[144.9523926,-37.7770882],[144.9516602,-37.7770081],[144.9502869,-37.7768402],[144.949646,-37.7767601],[144.9494324,-37.7767372],[144.9494019,-37.7767296],[144.9487915,-37.7756882],[144.9488831,-37.7751579],[144.9489594,-37.7747002],[144.9491425,-37.773838],[144.9493256,-37.7728271],[144.9495544,-37.7716103],[144.9498444,-37.7701492],[144.9492798,-37.7700806],[144.948761,-37.7700195],[144.9485321,-37.769989],[144.9486389,-37.7693596],[144.9487,-37.7690277],[144.9488525,-37.7681999],[144.9488678,-37.7681198],[144.9489594,-37.7675972],[144.9490051,-37.7672882],[144.9491425,-37.76651],[144.949295,-37.7654877],[144.9493713,-37.7650604],[144.9494019,-37.7647896],[144.9494171,-37.7646675],[144.9494324,-37.7645874],[144.9494324,-37.7645683],[144.9497375,-37.7627602]]]}},{"type":"Feature","properties":{"SA2_NAME":"Brunswick East","polygonId":37,"SA3_NAME":"Brunswick - Coburg","AREASQKM":2.168,"fillColor":"#472D7B","strokeColor":"#472D7B","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9733887,-37.7620392],[144.9733429,-37.7620277],[144.9734955,-37.7611008],[144.973587,-37.7609978],[144.9736176,-37.7608681],[144.9738159,-37.7597198],[144.9739838,-37.7597389],[144.9740295,-37.7594604],[144.9740601,-37.7592697],[144.9740753,-37.7592278],[144.9738617,-37.7592087],[144.9738922,-37.7591286],[144.9739075,-37.7590103],[144.9739532,-37.7586975],[144.9745026,-37.7587585],[144.9750977,-37.7588272],[144.9751282,-37.7588387],[144.9751282,-37.7588272],[144.9757538,-37.7589073],[144.9766235,-37.7590103],[144.9769745,-37.7569199],[144.977829,-37.757019],[144.9785004,-37.7570992],[144.9794922,-37.7572098],[144.9796906,-37.7572403],[144.9798431,-37.7572594],[144.9801636,-37.7572899],[144.9802094,-37.7574196],[144.9802551,-37.7576981],[144.9804535,-37.7580376],[144.9806366,-37.7583275],[144.9808502,-37.75877],[144.9809418,-37.7588882],[144.9811401,-37.7591896],[144.9813843,-37.7595482],[144.9816132,-37.7599106],[144.9818573,-37.7603073],[144.9820862,-37.7606277],[144.9824982,-37.7609596],[144.9828339,-37.7612572],[144.9830322,-37.7614174],[144.9831543,-37.7615585],[144.983139,-37.7618179],[144.9830322,-37.7619476],[144.9828491,-37.7620506],[144.9826202,-37.7621078],[144.9824677,-37.7621574],[144.9821014,-37.7621307],[144.9818573,-37.7621384],[144.9815674,-37.7622108],[144.981369,-37.7623787],[144.981369,-37.7626305],[144.9814453,-37.7628288],[144.9815521,-37.762989],[144.9816895,-37.7631989],[144.9819183,-37.7633896],[144.9822693,-37.763588],[144.9824982,-37.7636375],[144.983078,-37.7636604],[144.9835205,-37.7637978],[144.9836426,-37.7638397],[144.9838257,-37.7639809],[144.9838867,-37.7641106],[144.9839783,-37.7646484],[144.9841919,-37.7649574],[144.9842834,-37.765049],[144.9843445,-37.7651291],[144.9848022,-37.7654076],[144.9852142,-37.765728],[144.9854889,-37.7660103],[144.9855499,-37.7661972],[144.9855652,-37.7664185],[144.9851532,-37.766819],[144.9848938,-37.7669373],[144.9847717,-37.7669792],[144.9845123,-37.767189],[144.9844666,-37.7673302],[144.9844666,-37.7675095],[144.9844513,-37.7677383],[144.9844055,-37.7681808],[144.9843597,-37.7685089],[144.9842529,-37.7691498],[144.9842224,-37.7694206],[144.9842224,-37.769558],[144.9842072,-37.7696609],[144.9841461,-37.7697983],[144.9841614,-37.7700996],[144.9841919,-37.7703285],[144.9842529,-37.7707405],[144.9844513,-37.7712288],[144.9845123,-37.7713394],[144.9848633,-37.7716789],[144.9850311,-37.7719002],[144.9854279,-37.7722473],[144.9855347,-37.7723579],[144.9857788,-37.7725983],[144.9861603,-37.7729301],[144.9864502,-37.7732277],[144.9866333,-37.773468],[144.9868011,-37.7737083],[144.9868317,-37.773838],[144.9868622,-37.7743683],[144.9867096,-37.7743492],[144.9866028,-37.7744293],[144.9858398,-37.7743378],[144.9857635,-37.7743797],[144.9851837,-37.7743073],[144.9833832,-37.7740898],[144.9833984,-37.7739372],[144.9824524,-37.773838],[144.9816284,-37.7737503],[144.9815063,-37.7737389],[144.9811096,-37.7737007],[144.9808655,-37.7736702],[144.9806824,-37.7736473],[144.9803925,-37.7736206],[144.9797211,-37.7735481],[144.979187,-37.7734909],[144.9790039,-37.774559],[144.9789429,-37.7748985],[144.9788818,-37.7752991],[144.9788513,-37.7754478],[144.978714,-37.7762489],[144.9785614,-37.7772179],[144.9784088,-37.7780609],[144.978241,-37.779068],[144.9782104,-37.7792282],[144.9782104,-37.7794075],[144.9782104,-37.7794991],[144.9781952,-37.7795906],[144.9781494,-37.7798691],[144.9781189,-37.7800674],[144.9781036,-37.7801971],[144.9774017,-37.7801208],[144.9768982,-37.7800598],[144.9752502,-37.7798576],[144.9746857,-37.779789],[144.9734802,-37.7796402],[144.9733276,-37.7796173],[144.9727631,-37.7795486],[144.971283,-37.7793808],[144.97052,-37.7792778],[144.9705811,-37.7789001],[144.9706879,-37.7782898],[144.9708405,-37.7772408],[144.9709167,-37.7767181],[144.9709473,-37.7765198],[144.9710388,-37.7758598],[144.9710083,-37.7757683],[144.9711304,-37.7750092],[144.9711304,-37.7749596],[144.9712067,-37.7744789],[144.9712677,-37.7740974],[144.9713745,-37.7733879],[144.9714966,-37.7726593],[144.9716034,-37.7720299],[144.9716187,-37.7719307],[144.9716492,-37.7717781],[144.9717102,-37.7714005],[144.9718628,-37.7705574],[144.9719696,-37.7699394],[144.972168,-37.7688904],[144.9721832,-37.7687683],[144.97229,-37.7681274],[144.97258,-37.7665482],[144.9727325,-37.7657585],[144.9727936,-37.7653198],[144.9729309,-37.7645493],[144.973053,-37.7639008],[144.973053,-37.7638702],[144.9733887,-37.7620392]]]}},{"type":"Feature","properties":{"SA2_NAME":"Brunswick West","polygonId":38,"SA3_NAME":"Brunswick - Coburg","AREASQKM":3.1795,"fillColor":"#472E7C","strokeColor":"#472E7C","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9340668,-37.7596893],[144.9340515,-37.7595596],[144.9339905,-37.7594986],[144.9338074,-37.759388],[144.933609,-37.7592773],[144.9331665,-37.7590179],[144.9330139,-37.7588882],[144.9329834,-37.7588577],[144.9329681,-37.7587776],[144.9329529,-37.7587204],[144.9329681,-37.7586479],[144.9329987,-37.7585907],[144.9330292,-37.7585373],[144.9330597,-37.7584877],[144.9332428,-37.7583389],[144.9333191,-37.7583008],[144.9333496,-37.7582474],[144.9333801,-37.7582092],[144.9334106,-37.7581482],[144.9334259,-37.7580986],[144.9334412,-37.7580376],[144.9334564,-37.7579575],[144.9334412,-37.7578087],[144.9334412,-37.7577591],[144.9334564,-37.7577095],[144.9334717,-37.7576485],[144.9335022,-37.7575989],[144.9335327,-37.7575378],[144.9335785,-37.7574692],[144.933609,-37.7574272],[144.9337311,-37.757328],[144.9337921,-37.7572899],[144.9344177,-37.7569389],[144.9344482,-37.7569199],[144.934494,-37.7568779],[144.9345245,-37.7568398],[144.9345551,-37.7567978],[144.9345703,-37.7567101],[144.9345703,-37.7566681],[144.9345703,-37.7566299],[144.9345703,-37.756588],[144.9345093,-37.7564087],[144.9344635,-37.7562904],[144.934433,-37.7561989],[144.9343719,-37.7560997],[144.9342957,-37.7559891],[144.9342041,-37.7558594],[144.9341278,-37.7557602],[144.934021,-37.7556572],[144.9339142,-37.7555695],[144.9337921,-37.7554474],[144.9337311,-37.7553902],[144.93367,-37.7553291],[144.9336243,-37.755249],[144.933609,-37.7552109],[144.933609,-37.7551384],[144.933609,-37.7550697],[144.9336395,-37.7550087],[144.93367,-37.7549591],[144.9337006,-37.7549095],[144.9338684,-37.7547989],[144.9344177,-37.7545395],[144.9344788,-37.754509],[144.9346161,-37.7544174],[144.9346771,-37.7543793],[144.9347534,-37.7543182],[144.9348145,-37.7542572],[144.9348602,-37.7541885],[144.9348907,-37.7541199],[144.9349365,-37.7540474],[144.9349518,-37.7539787],[144.934967,-37.7539101],[144.9349976,-37.7537003],[144.9350433,-37.7534676],[144.9350128,-37.7533798],[144.9349518,-37.7532883],[144.9348907,-37.7532272],[144.9347992,-37.75317],[144.9347229,-37.7531281],[144.9346008,-37.7531204],[144.9345093,-37.753109],[144.9343719,-37.7531204],[144.9342041,-37.7531509],[144.934021,-37.7531891],[144.9338837,-37.7532005],[144.9337463,-37.7532005],[144.9335632,-37.7531776],[144.9333801,-37.7531281],[144.933197,-37.7530708],[144.9330292,-37.7529907],[144.9328156,-37.7528801],[144.932663,-37.752758],[144.9325562,-37.7526474],[144.9324951,-37.7526207],[144.9324188,-37.7526093],[144.932373,-37.7526207],[144.932312,-37.7526283],[144.9322205,-37.7526779],[144.9321594,-37.7527885],[144.9321136,-37.7529602],[144.9320221,-37.7530708],[144.9319,-37.75317],[144.9318237,-37.7532005],[144.9317627,-37.7532196],[144.9317017,-37.7532387],[144.9316406,-37.7532501],[144.9315643,-37.7532578],[144.9314728,-37.7532806],[144.9314117,-37.7532883],[144.9313507,-37.7532997],[144.9312592,-37.7533188],[144.9311829,-37.7533493],[144.9310913,-37.7533798],[144.9309998,-37.7534409],[144.9309387,-37.753479],[144.9308777,-37.7535095],[144.9308014,-37.7535477],[144.9307098,-37.7536087],[144.9306335,-37.7536507],[144.930542,-37.7536583],[144.9304047,-37.7536278],[144.9303131,-37.7535782],[144.930191,-37.7534981],[144.9301147,-37.753418],[144.9300232,-37.7533302],[144.9299316,-37.7532272],[144.9298706,-37.7531281],[144.9297943,-37.7530289],[144.9297333,-37.7529488],[144.929657,-37.7528381],[144.9295807,-37.7527199],[144.9295502,-37.7526703],[144.9295502,-37.7526283],[144.9295197,-37.7525291],[144.9294739,-37.7523994],[144.9294586,-37.7522774],[144.9294434,-37.7521782],[144.9293976,-37.7519989],[144.9293518,-37.7519493],[144.9292908,-37.7519073],[144.9291534,-37.7518883],[144.9290771,-37.7519073],[144.9290009,-37.7519379],[144.9289246,-37.7520103],[144.9288788,-37.7520981],[144.9288025,-37.7522507],[144.9287415,-37.7523689],[144.9286804,-37.7524681],[144.9286041,-37.7525482],[144.9285278,-37.7525978],[144.9284515,-37.7526207],[144.928421,-37.7526207],[144.9283752,-37.7526093],[144.928299,-37.7525902],[144.9281464,-37.7525177],[144.9280396,-37.7524796],[144.9279327,-37.7524185],[144.9277496,-37.7523079],[144.9276886,-37.7522697],[144.9275818,-37.7522278],[144.9274597,-37.7521973],[144.9273376,-37.7521591],[144.9272156,-37.7521095],[144.9271088,-37.7520485],[144.9270325,-37.7519875],[144.9269714,-37.7519302],[144.9268951,-37.7518501],[144.9268951,-37.7518387],[144.9268799,-37.7518272],[144.9268799,-37.7518082],[144.9268799,-37.7517891],[144.9268646,-37.75177],[144.9268494,-37.7517281],[144.9268341,-37.7516975],[144.9268036,-37.7516403],[144.9267731,-37.7515984],[144.9267426,-37.7515678],[144.9267273,-37.7515182],[144.9267273,-37.7514877],[144.926712,-37.7514572],[144.9267273,-37.7513695],[144.9267731,-37.7512589],[144.9268036,-37.7512283],[144.9268188,-37.7512207],[144.9268494,-37.7511673],[144.9269409,-37.7510681],[144.9271393,-37.7510872],[144.9277802,-37.7511673],[144.9284973,-37.7512474],[144.9291534,-37.7513275],[144.9294891,-37.7513695],[144.9301147,-37.7514381],[144.931076,-37.7515488],[144.9320526,-37.7516708],[144.9333649,-37.7518196],[144.9338531,-37.7518806],[144.9343109,-37.7519302],[144.9345703,-37.7519608],[144.9351807,-37.7520409],[144.9360504,-37.75214],[144.9365234,-37.7521973],[144.9372406,-37.7522774],[144.937561,-37.7523193],[144.9376678,-37.7523308],[144.9378967,-37.7523499],[144.9382324,-37.752388],[144.9387207,-37.752449],[144.9408112,-37.7526894],[144.9419556,-37.7528305],[144.9424896,-37.7528877],[144.9434204,-37.7529984],[144.9446106,-37.7531281],[144.9457397,-37.7532692],[144.9462433,-37.7533302],[144.9476318,-37.7534981],[144.9479523,-37.7535286],[144.9485779,-37.7536087],[144.9494781,-37.7537079],[144.9499207,-37.7537575],[144.9503937,-37.7538185],[144.9509888,-37.7538872],[144.9511261,-37.7539101],[144.9521637,-37.7540283],[144.9533234,-37.754158],[144.9538574,-37.7542305],[144.9538269,-37.7543182],[144.9536896,-37.7545586],[144.953598,-37.7546997],[144.9535065,-37.7547989],[144.9533997,-37.7548904],[144.9532623,-37.7549706],[144.9532013,-37.7550087],[144.9527283,-37.7552109],[144.9522095,-37.7554283],[144.9519196,-37.7555389],[144.9516907,-37.755619],[144.9511871,-37.7557793],[144.9510193,-37.7558403],[144.950943,-37.7558708],[144.9509125,-37.7558899],[144.9508667,-37.755909],[144.9508514,-37.7559204],[144.9508209,-37.7559509],[144.9508057,-37.7559586],[144.9507904,-37.7559776],[144.9507599,-37.7560081],[144.9507294,-37.7560387],[144.9507294,-37.7560501],[144.9506989,-37.7560692],[144.9506836,-37.7560997],[144.9506836,-37.7561188],[144.9506683,-37.7561607],[144.9506531,-37.7561874],[144.9506531,-37.7562294],[144.9504242,-37.75737],[144.9503021,-37.7580872],[144.9501495,-37.7589302],[144.9500732,-37.7592773],[144.9503174,-37.7593079],[144.9501801,-37.7601585],[144.9500122,-37.7610474],[144.9497375,-37.7627602],[144.9494324,-37.7645683],[144.9494324,-37.7645874],[144.9494171,-37.7646675],[144.9494019,-37.7647896],[144.9493713,-37.7650604],[144.949295,-37.7654877],[144.9491425,-37.76651],[144.9490051,-37.7672882],[144.9489594,-37.7675972],[144.9488678,-37.7681198],[144.9488525,-37.7681999],[144.9487,-37.7690277],[144.9486389,-37.7693596],[144.9485321,-37.769989],[144.948761,-37.7700195],[144.9492798,-37.7700806],[144.9498444,-37.7701492],[144.9495544,-37.7716103],[144.9493256,-37.7728271],[144.9491425,-37.773838],[144.9489594,-37.7747002],[144.9488831,-37.7751579],[144.9487915,-37.7756882],[144.9494019,-37.7767296],[144.9478912,-37.7765503],[144.9470367,-37.7764473],[144.9451294,-37.7762184],[144.9430847,-37.7759705],[144.9427032,-37.7759285],[144.9421844,-37.7758598],[144.9407959,-37.7756882],[144.9405975,-37.7756691],[144.9398041,-37.7755775],[144.9391632,-37.7754974],[144.9387512,-37.7754402],[144.9386292,-37.7756195],[144.9386139,-37.7757072],[144.9385834,-37.7757874],[144.9385223,-37.7759972],[144.9384918,-37.7761192],[144.9384003,-37.7762108],[144.9383545,-37.7762794],[144.9383392,-37.77631],[144.9382935,-37.7763786],[144.9382324,-37.7764778],[144.9382019,-37.7765884],[144.9381256,-37.7767372],[144.9380188,-37.7768593],[144.937912,-37.7769699],[144.9378357,-37.7770386],[144.9377747,-37.7770996],[144.9376984,-37.7771606],[144.9376526,-37.7771797],[144.9377289,-37.7773476],[144.9378204,-37.7775803],[144.9379425,-37.7778893],[144.9373322,-37.7778091],[144.9370728,-37.7777672],[144.9368744,-37.7772102],[144.9368134,-37.7770996],[144.9367065,-37.7767181],[144.9366302,-37.7764702],[144.9365692,-37.7762108],[144.936554,-37.7760773],[144.9364929,-37.7757187],[144.9363556,-37.774498],[144.9363251,-37.774189],[144.9363251,-37.7741089],[144.9364166,-37.7738609],[144.9364777,-37.7737885],[144.9365387,-37.7737083],[144.9366302,-37.7736092],[144.9368286,-37.7734604],[144.9372711,-37.7731209],[144.9376373,-37.7728386],[144.9377441,-37.7727394],[144.9378967,-37.7725105],[144.9383392,-37.7718773],[144.9384155,-37.7717209],[144.9384308,-37.7715492],[144.9383545,-37.7713394],[144.9382782,-37.7712173],[144.9381409,-37.7711182],[144.9379425,-37.771019],[144.9377136,-37.7709808],[144.9372253,-37.7709885],[144.9371185,-37.7709885],[144.9368896,-37.7709999],[144.9359589,-37.7710075],[144.9356689,-37.7710304],[144.9355927,-37.771019],[144.9354401,-37.7709503],[144.935318,-37.7708588],[144.9352417,-37.7707405],[144.9352112,-37.7706108],[144.9353027,-37.7702904],[144.935318,-37.7701683],[144.9353485,-37.7700577],[144.9354401,-37.7698898],[144.9356232,-37.7697372],[144.9361267,-37.7694893],[144.9363556,-37.7694206],[144.9370422,-37.7691307],[144.9372559,-37.7690392],[144.9376373,-37.7688789],[144.9377899,-37.7687378],[144.937851,-37.7686272],[144.937851,-37.7686081],[144.9378815,-37.7684784],[144.9377136,-37.7676697],[144.9376831,-37.7675781],[144.9376984,-37.7674904],[144.9377289,-37.7669907],[144.9377441,-37.7669106],[144.9377441,-37.7668571],[144.9378662,-37.7666893],[144.937973,-37.7664986],[144.9380035,-37.7662888],[144.9380798,-37.7652092],[144.9380951,-37.7649307],[144.9381561,-37.7641182],[144.9382629,-37.7627983],[144.9384155,-37.7614098],[144.9384308,-37.761158],[144.9384308,-37.7611008],[144.9384003,-37.7609177],[144.9383087,-37.7608109],[144.9381866,-37.7607307],[144.9379425,-37.7606392],[144.9376678,-37.76054],[144.9372711,-37.7603989],[144.9366608,-37.7601891],[144.9364166,-37.7601395],[144.9357758,-37.7601204],[144.9355316,-37.760128],[144.9352875,-37.7602081],[144.9347839,-37.760498],[144.9347076,-37.7605286],[144.9345398,-37.7605782],[144.9343872,-37.7605896],[144.9342194,-37.7605476],[144.934082,-37.760479],[144.9339905,-37.7603798],[144.9339294,-37.7602692],[144.9338989,-37.7601509],[144.9339294,-37.7600174],[144.934021,-37.7598572],[144.9340515,-37.7598076],[144.9340668,-37.7596893]]]}},{"type":"Feature","properties":{"SA2_NAME":"Carlton","polygonId":48,"SA3_NAME":"Melbourne City","AREASQKM":1.8185,"fillColor":"#443A83","strokeColor":"#443A83","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9643097,-37.7984772],[144.9645996,-37.7968407],[144.9647217,-37.7961578],[144.9649658,-37.7945595],[144.9649506,-37.7943802],[144.9649506,-37.794239],[144.96492,-37.7940598],[144.9648895,-37.7939301],[144.9648285,-37.7937508],[144.9647675,-37.7936172],[144.9647064,-37.793499],[144.9646149,-37.7933388],[144.9644928,-37.7931709],[144.9644928,-37.7931595],[144.964386,-37.7930489],[144.9642334,-37.7928772],[144.9640808,-37.7927399],[144.9641113,-37.7927284],[144.9642334,-37.7928009],[144.9643707,-37.7928696],[144.9645081,-37.7929306],[144.9646454,-37.7929878],[144.964798,-37.7930374],[144.9649506,-37.7930794],[144.9651031,-37.7931175],[144.9651947,-37.7931404],[144.9652557,-37.7931595],[144.9654236,-37.7931786],[144.9655762,-37.7931976],[144.9657288,-37.7932091],[144.9658966,-37.7932205],[144.9660492,-37.7932205],[144.966217,-37.7932091],[144.966629,-37.7931786],[144.9667206,-37.7931595],[144.9668427,-37.7931404],[144.96698,-37.7931175],[144.9671021,-37.7930794],[144.9672089,-37.7930489],[144.9673004,-37.7930107],[144.9674225,-37.7929573],[144.9674988,-37.7929077],[144.9676208,-37.7928391],[144.9677277,-37.7927704],[144.967804,-37.7927208],[144.9678802,-37.7926598],[144.9679718,-37.7925682],[144.9680328,-37.7924995],[144.9681091,-37.792408],[144.9681549,-37.7923393],[144.9681702,-37.7923203],[144.9682159,-37.7922897],[144.9682617,-37.7922707],[144.9683228,-37.7922592],[144.9683838,-37.7922592],[144.9689026,-37.7923088],[144.9692383,-37.7923508],[144.9696808,-37.7924004],[144.9698639,-37.792408],[144.9713287,-37.7925682],[144.97258,-37.7927094],[144.9737244,-37.7928276],[144.9747467,-37.7929382],[144.975708,-37.7930374],[144.9756012,-37.7936592],[144.9756012,-37.7937202],[144.9755402,-37.7940292],[144.9754791,-37.7943497],[144.9754333,-37.7946701],[144.9753723,-37.7949791],[144.9753113,-37.7954178],[144.9752808,-37.7955589],[144.9751434,-37.79636],[144.9750671,-37.7967796],[144.9750061,-37.7971573],[144.9748688,-37.7979507],[144.9747467,-37.7986374],[144.9747467,-37.7986908],[144.9746094,-37.799469],[144.9745331,-37.7999573],[144.9744415,-37.800518],[144.974411,-37.8006706],[144.9743195,-37.8012199],[144.9740601,-37.8026886],[144.973999,-37.8031197],[144.9738312,-37.8041077],[144.9736023,-37.805378],[144.9735565,-37.8057289],[144.9733734,-37.8067589],[144.973175,-37.8079185],[144.9713593,-37.8077202],[144.971283,-37.8075485],[144.970932,-37.8075104],[144.9688416,-37.8072891],[144.9680328,-37.8071976],[144.9673309,-37.8071289],[144.9658508,-37.8069687],[144.9651031,-37.8068886],[144.9648743,-37.8068695],[144.9643707,-37.8068085],[144.9633636,-37.8066978],[144.9628906,-37.8066483],[144.9624481,-37.8065987],[144.9618378,-37.8065376],[144.9614105,-37.806488],[144.9608002,-37.8064308],[144.9599304,-37.8063278],[144.9595032,-37.8062897],[144.9584503,-37.8040276],[144.9580536,-37.8031273],[144.9578857,-37.8027687],[144.9574432,-37.8018074],[144.9573212,-37.801548],[144.9574432,-37.8005791],[144.95755,-37.7997093],[144.9588165,-37.7998581],[144.9598999,-37.7999802],[144.9610138,-37.8001099],[144.9624939,-37.8002586],[144.9639587,-37.8004189],[144.9642029,-37.7991104],[144.9642792,-37.7986298],[144.9643097,-37.7984772]]]}},{"type":"Feature","properties":{"SA2_NAME":"Carlton North - Princes Hill","polygonId":71,"SA3_NAME":"Yarra","AREASQKM":2.3042,"fillColor":"#443A83","strokeColor":"#443A83","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9593811,-37.7847176],[144.9595337,-37.7834778],[144.959671,-37.7824173],[144.9597473,-37.7817307],[144.9598999,-37.7805176],[144.9602203,-37.778038],[144.9614716,-37.7781906],[144.9616241,-37.7782097],[144.9624786,-37.7783089],[144.9633331,-37.7784195],[144.9639435,-37.7784882],[144.9651794,-37.7786407],[144.9659729,-37.7787399],[144.9672089,-37.7788773],[144.9677124,-37.7789383],[144.9676361,-37.7793083],[144.9680939,-37.7792282],[144.9689941,-37.7790985],[144.97052,-37.7792778],[144.971283,-37.7793808],[144.9727631,-37.7795486],[144.9733276,-37.7796173],[144.9734802,-37.7796402],[144.9746857,-37.779789],[144.9752502,-37.7798576],[144.9768982,-37.7800598],[144.9774017,-37.7801208],[144.9781036,-37.7801971],[144.9779358,-37.7810898],[144.9778748,-37.7814178],[144.9778595,-37.7814674],[144.9777374,-37.7821884],[144.9776459,-37.7826385],[144.9775696,-37.7830772],[144.9774628,-37.7837105],[144.9772034,-37.7851486],[144.9770355,-37.7859688],[144.9770203,-37.7860794],[144.9769287,-37.7865181],[144.9768829,-37.7868309],[144.9767303,-37.7876472],[144.9766388,-37.7880783],[144.9765015,-37.7887878],[144.9764099,-37.789299],[144.9763336,-37.7897072],[144.9762421,-37.7902298],[144.9759674,-37.7916489],[144.975769,-37.7927284],[144.9757385,-37.7929077],[144.975708,-37.7930374],[144.9747467,-37.7929382],[144.9737244,-37.7928276],[144.97258,-37.7927094],[144.9713287,-37.7925682],[144.9698639,-37.792408],[144.9696808,-37.7924004],[144.9692383,-37.7923508],[144.9689026,-37.7923088],[144.9683838,-37.7922592],[144.9683228,-37.7922592],[144.9682617,-37.7922707],[144.9682159,-37.7922897],[144.9681702,-37.7923203],[144.9681549,-37.7923393],[144.9681091,-37.792408],[144.9680328,-37.7924995],[144.9679718,-37.7925682],[144.9678802,-37.7926598],[144.967804,-37.7927208],[144.9677277,-37.7927704],[144.9676208,-37.7928391],[144.9674988,-37.7929077],[144.9674225,-37.7929573],[144.9673004,-37.7930107],[144.9672089,-37.7930489],[144.9671021,-37.7930794],[144.96698,-37.7931175],[144.9668427,-37.7931404],[144.9667206,-37.7931595],[144.966629,-37.7931786],[144.966217,-37.7932091],[144.9660492,-37.7932205],[144.9658966,-37.7932205],[144.9657288,-37.7932091],[144.9655762,-37.7931976],[144.9654236,-37.7931786],[144.9652557,-37.7931595],[144.9651947,-37.7931404],[144.9651031,-37.7931175],[144.9649506,-37.7930794],[144.964798,-37.7930374],[144.9646454,-37.7929878],[144.9645081,-37.7929306],[144.9643707,-37.7928696],[144.9642334,-37.7928009],[144.9641113,-37.7927284],[144.963974,-37.7926483],[144.9638824,-37.7925797],[144.9637451,-37.7924881],[144.963623,-37.7924004],[144.9634705,-37.7923279],[144.9633331,-37.7922478],[144.9633026,-37.7922401],[144.9628601,-37.7920685],[144.9625244,-37.7919884],[144.9620209,-37.7919083],[144.9616699,-37.7918892],[144.9615631,-37.7918892],[144.96138,-37.7918396],[144.9612274,-37.79179],[144.9610596,-37.791729],[144.960968,-37.7916794],[144.9607697,-37.7915878],[144.9606323,-37.7915077],[144.9604797,-37.79142],[144.9603119,-37.7912979],[144.9601898,-37.7911987],[144.960083,-37.7911072],[144.960022,-37.791069],[144.9599152,-37.7909584],[144.9597931,-37.7907982],[144.959671,-37.7906685],[144.9595642,-37.7905388],[144.9594727,-37.7903976],[144.9593811,-37.7902603],[144.9593201,-37.7901306],[144.9592743,-37.7900505],[144.9591675,-37.789978],[144.9590302,-37.7899208],[144.9588928,-37.7898903],[144.9587402,-37.7898674],[144.9588776,-37.7889481],[144.9590302,-37.7877007],[144.9590912,-37.7871284],[144.9592133,-37.7862206],[144.9592438,-37.7859383],[144.9593811,-37.7847176]]]}},{"type":"Feature","properties":{"SA2_NAME":"Coburg","polygonId":39,"SA3_NAME":"Brunswick - Coburg","AREASQKM":6.9346,"fillColor":"#404688","strokeColor":"#404688","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9484711,-37.7394981],[144.948761,-37.737648],[144.9490509,-37.7360001],[144.9491119,-37.7356186],[144.9493408,-37.73423],[144.9494629,-37.7334709],[144.949585,-37.7327805],[144.9495697,-37.7327003],[144.9494629,-37.7324982],[144.9500122,-37.7325478],[144.9512177,-37.7326698],[144.9514771,-37.7326889],[144.9524231,-37.7327805],[144.9532928,-37.7328606],[144.9541931,-37.7329483],[144.9550934,-37.7330284],[144.9553833,-37.7330589],[144.9559326,-37.7331085],[144.9565735,-37.7331696],[144.9568024,-37.7331886],[144.9576569,-37.7332687],[144.9580536,-37.7333107],[144.9585114,-37.7333488],[144.9593811,-37.733429],[144.9602356,-37.7335091],[144.9603424,-37.7335205],[144.9611359,-37.7335892],[144.9628601,-37.7337494],[144.9641724,-37.7338791],[144.9648438,-37.7339401],[144.9653473,-37.7339897],[144.9659882,-37.7340508],[144.9661102,-37.7340584],[144.9669189,-37.7341499],[144.9677429,-37.73423],[144.9678497,-37.7342682],[144.9681549,-37.7343788],[144.9698334,-37.7352295],[144.969986,-37.7352905],[144.9703522,-37.7353897],[144.9706421,-37.7354088],[144.9717102,-37.7354507],[144.9724426,-37.7354698],[144.9728851,-37.7354889],[144.9735413,-37.735508],[144.9746094,-37.7355385],[144.9751587,-37.7355576],[144.9759979,-37.7354698],[144.9768829,-37.7353401],[144.9774628,-37.7353973],[144.9776917,-37.7354202],[144.9801636,-37.7356682],[144.9812012,-37.7357788],[144.981369,-37.7357979],[144.9818726,-37.7358475],[144.9828949,-37.7359505],[144.9827881,-37.7361107],[144.982605,-37.7365189],[144.9824371,-37.7368774],[144.9819946,-37.7378387],[144.9816284,-37.7386703],[144.9813232,-37.7393608],[144.9810181,-37.7400208],[144.9797821,-37.7427483],[144.9789886,-37.7426682],[144.9789581,-37.7427292],[144.9789886,-37.7427902],[144.9789886,-37.7429504],[144.9790497,-37.7430801],[144.9792938,-37.7432175],[144.9795532,-37.7434502],[144.9797821,-37.743679],[144.980011,-37.7439384],[144.9803314,-37.7441902],[144.9805298,-37.7442589],[144.9812012,-37.7446289],[144.9815521,-37.7448502],[144.9819031,-37.7452087],[144.9820099,-37.7455101],[144.9820099,-37.7457504],[144.9819183,-37.7458992],[144.9817352,-37.7460403],[144.9815674,-37.7461205],[144.9813538,-37.7461891],[144.9810791,-37.7462082],[144.9807129,-37.7461891],[144.980484,-37.7461395],[144.9803009,-37.7461395],[144.9802094,-37.7461777],[144.9801483,-37.7462997],[144.9801636,-37.7463875],[144.9802094,-37.7464981],[144.9803619,-37.7465706],[144.9804535,-37.7466774],[144.9805603,-37.7468109],[144.9805756,-37.7469597],[144.9805298,-37.7474594],[144.980545,-37.7476082],[144.9806366,-37.7477303],[144.9810181,-37.7482872],[144.9811096,-37.7484398],[144.9812317,-37.7485275],[144.9812469,-37.7485809],[144.9812927,-37.7486191],[144.9813385,-37.7486992],[144.981369,-37.7487793],[144.981369,-37.7489586],[144.9812622,-37.7490807],[144.9807739,-37.7495003],[144.9806519,-37.74963],[144.9805908,-37.7497597],[144.9805908,-37.7498894],[144.9807129,-37.7501106],[144.9807434,-37.7501602],[144.9808197,-37.7502403],[144.980835,-37.7502708],[144.9809418,-37.7504387],[144.9811401,-37.7506104],[144.9812012,-37.7506981],[144.9812622,-37.7508087],[144.9812927,-37.7509499],[144.9813232,-37.7510376],[144.9815063,-37.7513504],[144.9816437,-37.7514877],[144.9817657,-37.7517509],[144.981781,-37.7518806],[144.9818115,-37.7520981],[144.981781,-37.7521896],[144.9815674,-37.7523804],[144.981369,-37.7524872],[144.9812622,-37.7525673],[144.9812164,-37.7525978],[144.9811401,-37.7526588],[144.9810791,-37.7526894],[144.9808197,-37.7526779],[144.9807739,-37.7526894],[144.9806213,-37.7528305],[144.9804993,-37.7529182],[144.9804535,-37.7529488],[144.9802246,-37.7530098],[144.9801178,-37.7530403],[144.97995,-37.7531586],[144.9797516,-37.7533493],[144.9794312,-37.7537575],[144.9793396,-37.7539101],[144.9792938,-37.7539978],[144.9792328,-37.7542191],[144.9792938,-37.7543678],[144.9795074,-37.7545509],[144.9795685,-37.7546196],[144.9796448,-37.7547073],[144.9796295,-37.7547684],[144.9795074,-37.7548676],[144.9794617,-37.7549706],[144.9794617,-37.7550087],[144.9794922,-37.7550697],[144.9795532,-37.7552109],[144.979599,-37.7553673],[144.9796906,-37.7556496],[144.9797821,-37.7562599],[144.9798737,-37.7564583],[144.9801636,-37.7572899],[144.9798431,-37.7572594],[144.9796906,-37.7572403],[144.9794922,-37.7572098],[144.9785004,-37.7570992],[144.977829,-37.757019],[144.9769745,-37.7569199],[144.9766083,-37.7568703],[144.9761047,-37.7568092],[144.9748535,-37.7566605],[144.9740295,-37.7565689],[144.9739227,-37.7565575],[144.9733124,-37.7564888],[144.9723206,-37.7563782],[144.9711304,-37.7562485],[144.9703979,-37.7561684],[144.9694061,-37.7560577],[144.9681091,-37.755909],[144.967514,-37.7558479],[144.9673615,-37.7558289],[144.9659882,-37.7556801],[144.9648132,-37.7555389],[144.9641113,-37.7554474],[144.9638824,-37.7554092],[144.9621735,-37.7551994],[144.961731,-37.7551498],[144.9615326,-37.7551308],[144.960083,-37.7549591],[144.9590607,-37.7548409],[144.9587097,-37.7547989],[144.9582214,-37.7547379],[144.9575195,-37.7546577],[144.9567413,-37.7545586],[144.9564514,-37.754528],[144.9557648,-37.7544479],[144.9548035,-37.7543373],[144.9539642,-37.7542381],[144.9538574,-37.7542305],[144.9533234,-37.754158],[144.9521637,-37.7540283],[144.9511261,-37.7539101],[144.9509888,-37.7538872],[144.9503937,-37.7538185],[144.9499207,-37.7537575],[144.9494781,-37.7537079],[144.9485779,-37.7536087],[144.9479523,-37.7535286],[144.9476318,-37.7534981],[144.9462433,-37.7533302],[144.9457397,-37.7532692],[144.9460754,-37.7514305],[144.9462433,-37.7505875],[144.9463806,-37.7496796],[144.946701,-37.7497177],[144.9469604,-37.7484474],[144.9472504,-37.7469101],[144.9472504,-37.7468681],[144.9470673,-37.7468491],[144.9465637,-37.7467804],[144.9468994,-37.7447701],[144.946991,-37.7443008],[144.9472046,-37.7430077],[144.9475098,-37.7412109],[144.9478302,-37.7394409],[144.9484711,-37.7394981]]]}},{"type":"Feature","properties":{"SA2_NAME":"Collingwood","polygonId":72,"SA3_NAME":"Yarra","AREASQKM":1.2671,"fillColor":"#3F4788","strokeColor":"#3F4788","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.983963,-37.8006897],[144.9840088,-37.8004303],[144.9841156,-37.7998276],[144.9842682,-37.7989502],[144.9843903,-37.7982483],[144.9843903,-37.7981606],[144.9845123,-37.7975502],[144.9845428,-37.7973595],[144.9846191,-37.7968788],[144.9846802,-37.7965698],[144.9847412,-37.7961807],[144.9847717,-37.7959709],[144.9848938,-37.7953377],[144.9850922,-37.7941589],[144.9852142,-37.794178],[144.9857178,-37.7942276],[144.9860687,-37.7942581],[144.9869232,-37.7943573],[144.9874725,-37.7944107],[144.9876862,-37.7944298],[144.9877472,-37.7944374],[144.9880066,-37.7944679],[144.9880219,-37.7944794],[144.9882507,-37.7944984],[144.9886322,-37.794529],[144.9889832,-37.7945709],[144.98909,-37.7945786],[144.9897919,-37.7946472],[144.9898834,-37.7946701],[144.9898834,-37.7946777],[144.9899292,-37.7946892],[144.9900208,-37.7947006],[144.9901276,-37.7946892],[144.9902802,-37.7947197],[144.9904633,-37.7947693],[144.9906616,-37.794838],[144.9909821,-37.7949677],[144.9914246,-37.7951584],[144.9916077,-37.7952309],[144.991806,-37.7952881],[144.9919891,-37.7953377],[144.9922028,-37.7953873],[144.992981,-37.7955284],[144.9931641,-37.795578],[144.9933319,-37.7956696],[144.9934845,-37.7958183],[144.9936066,-37.7959709],[144.9935913,-37.7960472],[144.9934235,-37.7970581],[144.9933014,-37.79776],[144.9932404,-37.7981071],[144.9931946,-37.7984505],[144.9930878,-37.7991409],[144.992981,-37.799839],[144.9929352,-37.8000679],[144.9928589,-37.8005409],[144.9928284,-37.8007202],[144.9927521,-37.8011894],[144.992691,-37.8015175],[144.9926758,-37.801609],[144.9926453,-37.8018379],[144.9925232,-37.8024902],[144.9924927,-37.8026772],[144.9923706,-37.8034973],[144.9921265,-37.8049889],[144.9917603,-37.8071594],[144.9916992,-37.807518],[144.9915924,-37.8081589],[144.9915161,-37.8086395],[144.9914093,-37.8093605],[144.9913483,-37.8097305],[144.9904175,-37.8097305],[144.9902039,-37.8097305],[144.9894257,-37.8096504],[144.9889984,-37.8096008],[144.9885254,-37.8095474],[144.9879608,-37.8094902],[144.9876099,-37.8094597],[144.9869995,-37.8093872],[144.9863892,-37.80933],[144.985611,-37.8092384],[144.9852905,-37.8092079],[144.9847412,-37.8091507],[144.9846039,-37.8091393],[144.9837799,-37.8090477],[144.9833069,-37.8089981],[144.9825439,-37.808918],[144.9827423,-37.8078308],[144.9829102,-37.8067703],[144.9829865,-37.8063698],[144.9832306,-37.8049698],[144.9833679,-37.8041382],[144.98349,-37.8034477],[144.9835205,-37.8032684],[144.9835968,-37.8027992],[144.9837036,-37.8021774],[144.9837341,-37.8020096],[144.9837799,-37.8017502],[144.9838715,-37.8012199],[144.983963,-37.8006897]]]}},{"type":"Feature","properties":{"SA2_NAME":"Docklands","polygonId":49,"SA3_NAME":"Melbourne City","AREASQKM":2.444,"fillColor":"#39568C","strokeColor":"#39568C","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.932373,-37.8192673],[144.9328613,-37.8180199],[144.9334259,-37.8164673],[144.9337311,-37.8155098],[144.9338379,-37.8151398],[144.9339447,-37.8146973],[144.934021,-37.8143578],[144.934082,-37.8138885],[144.9341278,-37.8137093],[144.9342499,-37.8129005],[144.934433,-37.8126678],[144.9346924,-37.8119087],[144.9346619,-37.8105278],[144.9346924,-37.8103104],[144.9347229,-37.8101501],[144.9350128,-37.8094482],[144.9354248,-37.8095093],[144.9359589,-37.8095703],[144.9367828,-37.8097191],[144.9372253,-37.8098373],[144.937912,-37.8100471],[144.9385071,-37.8102684],[144.9391022,-37.8105087],[144.940094,-37.8109703],[144.9408112,-37.8113289],[144.9413605,-37.8115997],[144.9420166,-37.8119507],[144.9428711,-37.8124504],[144.9430237,-37.8125],[144.9431763,-37.8125381],[144.9433289,-37.8125381],[144.943512,-37.8125191],[144.9437103,-37.812458],[144.9447021,-37.8120689],[144.944931,-37.8120499],[144.9450836,-37.8120575],[144.9452362,-37.812088],[144.9454346,-37.8118591],[144.9460144,-37.8116379],[144.9478149,-37.8109474],[144.9481049,-37.8115273],[144.9482422,-37.8116493],[144.9492798,-37.8125572],[144.9503174,-37.8134689],[144.9514313,-37.8131599],[144.9516296,-37.8136177],[144.9517975,-37.8139687],[144.951889,-37.8141479],[144.9523315,-37.8151283],[144.9527893,-37.8161087],[144.9532318,-37.8170891],[144.9536896,-37.8180809],[144.9539032,-37.8185501],[144.9541321,-37.8190575],[144.9543915,-37.8195992],[144.9546204,-37.8200874],[144.9550629,-37.8210907],[144.9551392,-37.8212585],[144.9553528,-37.8216896],[144.955719,-37.8225098],[144.9559784,-37.8230476],[144.9552612,-37.8233376],[144.9543915,-37.8235474],[144.9533234,-37.8237],[144.9521942,-37.823719],[144.9498138,-37.8235283],[144.9491882,-37.8234596],[144.948349,-37.8233681],[144.9479218,-37.8233795],[144.9479218,-37.8237572],[144.9480286,-37.8241997],[144.9480591,-37.8243103],[144.9480896,-37.8244476],[144.9481201,-37.8245583],[144.9480896,-37.824749],[144.9479675,-37.8252296],[144.9478607,-37.8252296],[144.9477234,-37.8252487],[144.9475555,-37.8252907],[144.9473419,-37.8252983],[144.9472504,-37.8252983],[144.946991,-37.8252907],[144.9462128,-37.8252373],[144.9459991,-37.8252296],[144.9451904,-37.8251381],[144.944458,-37.8250694],[144.9437408,-37.8249893],[144.9436798,-37.8249779],[144.9436035,-37.8249702],[144.9435425,-37.8249474],[144.9434814,-37.8249207],[144.9434204,-37.8248978],[144.9433594,-37.8248596],[144.9433136,-37.8248291],[144.9430389,-37.8246307],[144.9430237,-37.8246078],[144.942627,-37.8243179],[144.9423523,-37.8241005],[144.9420013,-37.8239708],[144.940506,-37.823658],[144.9398651,-37.8235207],[144.937851,-37.8230896],[144.9371338,-37.8229408],[144.9367828,-37.8228989],[144.9364929,-37.8228378],[144.9327087,-37.8220482],[144.9314728,-37.8217888],[144.9318237,-37.8208275],[144.931839,-37.8207283],[144.9321594,-37.8198586],[144.932373,-37.8192673]]]}},{"type":"Feature","properties":{"SA2_NAME":"East Melbourne","polygonId":50,"SA3_NAME":"Melbourne City","AREASQKM":2.8998,"fillColor":"#365C8D","strokeColor":"#365C8D","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9739532,-37.8133087],[144.9736176,-37.8125992],[144.9734802,-37.8123283],[144.9730377,-37.811348],[144.9727325,-37.8106804],[144.97258,-37.8103676],[144.9724731,-37.8101082],[144.9723816,-37.8099174],[144.9721375,-37.8093987],[144.9716644,-37.8083992],[144.9713593,-37.8077202],[144.973175,-37.8079185],[144.9740295,-37.8080101],[144.9747162,-37.8080788],[144.9756927,-37.8081779],[144.9758606,-37.8082008],[144.9761963,-37.808239],[144.9767761,-37.8083],[144.97789,-37.8084183],[144.9785614,-37.8084908],[144.9790039,-37.8085403],[144.9801636,-37.8086586],[144.9811401,-37.8087692],[144.9813538,-37.8087883],[144.9820404,-37.8088608],[144.9825439,-37.808918],[144.9833069,-37.8089981],[144.9837799,-37.8090477],[144.9846039,-37.8091393],[144.9847412,-37.8091507],[144.9852905,-37.8092079],[144.985611,-37.8092384],[144.9863892,-37.80933],[144.9869995,-37.8093872],[144.9876099,-37.8094597],[144.9879608,-37.8094902],[144.9885254,-37.8095474],[144.9889984,-37.8096008],[144.9894257,-37.8096504],[144.9902039,-37.8097305],[144.9904175,-37.8097305],[144.9913483,-37.8097305],[144.9911804,-37.8106194],[144.9911194,-37.8109398],[144.9910736,-37.8112488],[144.9909363,-37.8120193],[144.9909363,-37.8120308],[144.99086,-37.8124199],[144.9907837,-37.81287],[144.9906616,-37.813549],[144.9906311,-37.8137703],[144.9904785,-37.8146782],[144.990448,-37.8148079],[144.9902802,-37.8157883],[144.9902039,-37.8162575],[144.9900818,-37.8168678],[144.9900665,-37.8169594],[144.9900208,-37.8172798],[144.9900055,-37.8175507],[144.9899902,-37.817688],[144.9899597,-37.8178902],[144.9898834,-37.818409],[144.9897614,-37.8190575],[144.9897156,-37.8193398],[144.9897156,-37.8193779],[144.9896851,-37.8195572],[144.989563,-37.8202782],[144.9893341,-37.8216476],[144.9891357,-37.8227997],[144.98909,-37.8231087],[144.9890289,-37.8233986],[144.9889374,-37.8240395],[144.9888306,-37.8246193],[144.9887238,-37.8252373],[144.9886932,-37.8252983],[144.9884491,-37.8267899],[144.9883423,-37.8273697],[144.988327,-37.8274994],[144.9882355,-37.8279572],[144.9881287,-37.8285484],[144.9880524,-37.8289375],[144.9879913,-37.829258],[144.987915,-37.8296204],[144.987915,-37.82967],[144.9870911,-37.8288574],[144.986496,-37.8283081],[144.9857635,-37.8278809],[144.9850311,-37.8276787],[144.9849243,-37.8276482],[144.9839325,-37.8274689],[144.9825134,-37.8272285],[144.9811249,-37.8267975],[144.9800568,-37.8260994],[144.9793243,-37.8255081],[144.9784393,-37.8244781],[144.9774017,-37.823288],[144.9766388,-37.8231888],[144.976059,-37.8225975],[144.9746399,-37.8208885],[144.9730988,-37.8198204],[144.9716187,-37.8194084],[144.9702301,-37.8195076],[144.9684296,-37.8196182],[144.968338,-37.8194199],[144.9682922,-37.8193283],[144.9682465,-37.8192177],[144.9674225,-37.8174477],[144.9693146,-37.8168983],[144.9698944,-37.8167305],[144.9703369,-37.8166084],[144.9723816,-37.8159981],[144.9736328,-37.8156281],[144.9747314,-37.8153076],[144.9748535,-37.8152809],[144.9746399,-37.8148308],[144.9745483,-37.8146172],[144.9744415,-37.8143692],[144.9743958,-37.8143005],[144.9740906,-37.8136406],[144.9739532,-37.8133087]]]}},{"type":"Feature","properties":{"SA2_NAME":"Elwood","polygonId":60,"SA3_NAME":"Port Phillip","AREASQKM":2.553,"fillColor":"#355F8D","strokeColor":"#355F8D","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9773254,-37.8788795],[144.9773102,-37.8786774],[144.9756622,-37.878788],[144.9755707,-37.8787308],[144.9754944,-37.8786392],[144.9754639,-37.8785286],[144.9754028,-37.8783798],[144.9753571,-37.8782387],[144.9752808,-37.8780899],[144.9752197,-37.8779907],[144.975174,-37.8778305],[144.9750824,-37.8776703],[144.9749908,-37.8775406],[144.9749298,-37.8773804],[144.9748383,-37.8772278],[144.974762,-37.8770676],[144.9746704,-37.8769073],[144.9746094,-37.8767395],[144.9745636,-37.8765678],[144.9745331,-37.8764],[144.9745026,-37.8762703],[144.9768677,-37.8753395],[144.9775543,-37.8750687],[144.9779663,-37.8749084],[144.9798737,-37.8741684],[144.981369,-37.8735886],[144.9824219,-37.8731689],[144.9830627,-37.8729286],[144.983551,-37.8727379],[144.9836884,-37.8726883],[144.9843292,-37.8724403],[144.9848328,-37.8722496],[144.9859619,-37.8718185],[144.9867401,-37.8715172],[144.9873199,-37.8712997],[144.9873657,-37.8712807],[144.9879913,-37.8710403],[144.988678,-37.8707809],[144.9887695,-37.870739],[144.9894409,-37.871788],[144.9896393,-37.8721199],[144.9898529,-37.8724594],[144.9900513,-37.8727798],[144.990509,-37.8735199],[144.9907227,-37.8738289],[144.9908752,-37.8740807],[144.9911499,-37.8745193],[144.991272,-37.8747177],[144.9915771,-37.8752098],[144.9918213,-37.8755875],[144.9922333,-37.8762474],[144.992691,-37.8769989],[144.993103,-37.8776398],[144.9933014,-37.8779678],[144.9934998,-37.8782883],[144.9935913,-37.8784409],[144.9936523,-37.8785286],[144.9937439,-37.8786697],[144.9940338,-37.8791199],[144.9942932,-37.8795395],[144.9945221,-37.879879],[144.9946747,-37.8801384],[144.9949188,-37.8805389],[144.995224,-37.8810196],[144.9953918,-37.8812599],[144.9957581,-37.8818588],[144.9959412,-37.8821487],[144.9967346,-37.8834991],[144.996994,-37.8838081],[144.9963226,-37.88377],[144.9929199,-37.8833504],[144.9922638,-37.8832703],[144.9920807,-37.8842201],[144.9918976,-37.8852005],[144.9917908,-37.8857384],[144.9917603,-37.8859406],[144.9917145,-37.8861389],[144.9915314,-37.8871193],[144.9914246,-37.8876991],[144.9912109,-37.8887787],[144.9910889,-37.8894882],[144.9909515,-37.8901596],[144.99086,-37.8907089],[144.9907532,-37.8912086],[144.9906616,-37.8917274],[144.9863281,-37.8911705],[144.9852295,-37.8910294],[144.9849701,-37.8909988],[144.9849548,-37.8909378],[144.984848,-37.89077],[144.9847412,-37.8906097],[144.9846039,-37.8904572],[144.9844513,-37.8903389],[144.9843292,-37.8901787],[144.9842377,-37.8899879],[144.9841614,-37.8897972],[144.9840393,-37.8896408],[144.9839172,-37.8894806],[144.9837952,-37.889328],[144.9836578,-37.8891983],[144.9835205,-37.8890381],[144.9834137,-37.8888893],[144.9832611,-37.8887482],[144.983139,-37.8885994],[144.9828796,-37.8882904],[144.9828339,-37.8881989],[144.9827576,-37.8881378],[144.9826508,-37.8880692],[144.9823914,-37.8877907],[144.982254,-37.8876495],[144.9821167,-37.8875084],[144.9819794,-37.8873672],[144.9818268,-37.8872375],[144.9816895,-37.8871002],[144.9815674,-37.8869591],[144.9814301,-37.8868179],[144.9812927,-37.8866806],[144.9811401,-37.8865509],[144.9809875,-37.8864098],[144.980835,-37.8862801],[144.9806976,-37.8861504],[144.980545,-37.8860207],[144.980423,-37.8858795],[144.9802704,-37.8857384],[144.9801331,-37.8855972],[144.9799805,-37.8854675],[144.9798431,-37.8853302],[144.9796906,-37.8852005],[144.979538,-37.8850784],[144.9793854,-37.8849373],[144.9790802,-37.8846893],[144.9789124,-37.8845673],[144.9787598,-37.8844604],[144.9785614,-37.8843575],[144.9784088,-37.8842392],[144.9782562,-37.8841209],[144.9780731,-37.8840103],[144.9779205,-37.8838882],[144.9777679,-37.8837585],[144.9776001,-37.8836403],[144.9774323,-37.8835373],[144.9772644,-37.8834381],[144.9771729,-37.8833504],[144.9769897,-37.8832474],[144.9768066,-37.8831482],[144.9766846,-37.8830376],[144.9765778,-37.8829384],[144.9765167,-37.8829308],[144.9763794,-37.8829193],[144.9764709,-37.8828087],[144.9765472,-37.8827095],[144.9758148,-37.8822899],[144.975647,-37.8821182],[144.9756317,-37.8819275],[144.9757843,-37.8816185],[144.9758453,-37.8815384],[144.9758911,-37.8814774],[144.9759216,-37.8814278],[144.9759064,-37.8813171],[144.9758911,-37.8808975],[144.9758759,-37.8807602],[144.9758606,-37.8806],[144.9758301,-37.8804207],[144.9757996,-37.8802376],[144.9757843,-37.8800583],[144.9757538,-37.8797302],[144.9757385,-37.8795776],[144.9757233,-37.8794403],[144.975708,-37.8792801],[144.9757233,-37.8792381],[144.9757385,-37.8791275],[144.9757843,-37.8790779],[144.9758606,-37.8790207],[144.9771118,-37.8788986],[144.9773254,-37.8788795]]]}},{"type":"Feature","properties":{"SA2_NAME":"Essendon - Aberfeldie","polygonId":45,"SA3_NAME":"Essendon","AREASQKM":8.443,"fillColor":"#33628D","strokeColor":"#33628D","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.8911438,-37.74506],[144.8912659,-37.7443199],[144.891449,-37.7433472],[144.891449,-37.7431374],[144.8914642,-37.7428703],[144.8915558,-37.7421494],[144.8917999,-37.7405891],[144.891983,-37.7394295],[144.8920135,-37.7392693],[144.8920746,-37.7388992],[144.8921509,-37.7384605],[144.8922119,-37.737999],[144.8922424,-37.7378006],[144.8923035,-37.7374687],[144.8923187,-37.7373199],[144.8925018,-37.7373886],[144.8926239,-37.7366791],[144.8926697,-37.7363701],[144.8927917,-37.7355576],[144.8929291,-37.7345772],[144.8956146,-37.7348595],[144.8985901,-37.7351608],[144.9015656,-37.7354584],[144.9026642,-37.7355385],[144.9034424,-37.7355003],[144.9044189,-37.7353706],[144.90448,-37.7353592],[144.9048767,-37.73592],[144.9053955,-37.7368202],[144.9055786,-37.7371178],[144.9057312,-37.7373581],[144.9058685,-37.7375679],[144.9063416,-37.7383385],[144.9067993,-37.73909],[144.9073029,-37.7398605],[144.907959,-37.7409172],[144.9082031,-37.7413101],[144.9091949,-37.7414207],[144.9103088,-37.741539],[144.9130554,-37.7418404],[144.9138489,-37.7419205],[144.9144592,-37.7419891],[144.9155121,-37.7420998],[144.915863,-37.7421379],[144.9159393,-37.7421494],[144.9173126,-37.7422981],[144.9176025,-37.7423286],[144.9199371,-37.7425804],[144.9220428,-37.7428093],[144.9222107,-37.7428284],[144.9233398,-37.7429581],[144.9254303,-37.7431908],[144.9256287,-37.7432098],[144.9258423,-37.7432404],[144.9270935,-37.7433701],[144.9274902,-37.7434196],[144.9277496,-37.7434692],[144.9282227,-37.7434692],[144.92836,-37.7434692],[144.9288177,-37.7435379],[144.930542,-37.7437286],[144.9311829,-37.7437973],[144.9334717,-37.7440491],[144.9338531,-37.7445908],[144.9335175,-37.7446976],[144.9333649,-37.7447701],[144.9332428,-37.7448387],[144.9332123,-37.7448883],[144.9331818,-37.7449188],[144.9331512,-37.745018],[144.9331207,-37.7451096],[144.9331055,-37.7451897],[144.9330597,-37.7453079],[144.9329681,-37.7454109],[144.9328308,-37.7454605],[144.9326019,-37.7454605],[144.932312,-37.7454109],[144.9320068,-37.745369],[144.9318542,-37.7454185],[144.9317627,-37.7454376],[144.9315643,-37.7455177],[144.9311371,-37.7455482],[144.9307709,-37.7455406],[144.9303436,-37.7454987],[144.9296722,-37.745388],[144.9294128,-37.745369],[144.9291534,-37.7454185],[144.928772,-37.7455597],[144.9285431,-37.7457085],[144.9283905,-37.7458801],[144.9283752,-37.7459793],[144.92836,-37.746048],[144.9283447,-37.7462387],[144.9283295,-37.7463684],[144.9283295,-37.7464676],[144.9282837,-37.7466507],[144.9282837,-37.746788],[144.9282684,-37.7468987],[144.9282684,-37.7469902],[144.9282837,-37.7470703],[144.928299,-37.7471275],[144.92836,-37.7472],[144.9285126,-37.7472878],[144.9287109,-37.7473297],[144.9289703,-37.7473297],[144.9291229,-37.7473297],[144.929184,-37.7473907],[144.9291992,-37.7474709],[144.9291992,-37.7475471],[144.9291992,-37.7475891],[144.9291229,-37.7476692],[144.9290314,-37.7477379],[144.9289093,-37.7478485],[144.9287872,-37.7479706],[144.9287109,-37.7481003],[144.9286804,-37.7482109],[144.9286499,-37.7483101],[144.9286194,-37.7483978],[144.9285736,-37.7485008],[144.9285126,-37.7486076],[144.9284515,-37.7486992],[144.9283905,-37.7487907],[144.92836,-37.748848],[144.9282837,-37.7489281],[144.9281769,-37.74897],[144.9280396,-37.74897],[144.9278717,-37.74897],[144.9277191,-37.7489891],[144.9276276,-37.7490387],[144.9274902,-37.7491608],[144.9273987,-37.7492676],[144.9273529,-37.7494087],[144.9273071,-37.7495003],[144.9273529,-37.7495995],[144.9273987,-37.7496796],[144.9274292,-37.7497673],[144.9274597,-37.7498474],[144.927475,-37.7499809],[144.927475,-37.7501183],[144.927475,-37.7502174],[144.9274597,-37.7502785],[144.9274445,-37.7503204],[144.9273987,-37.7503891],[144.9273529,-37.7504692],[144.9273224,-37.7505302],[144.9272614,-37.7505989],[144.9272003,-37.7507172],[144.9271088,-37.7508583],[144.9270935,-37.7509384],[144.9270325,-37.750988],[144.9269867,-37.7510376],[144.9269409,-37.7510681],[144.9268494,-37.7511673],[144.9268188,-37.7512207],[144.9268036,-37.7512283],[144.9267731,-37.7512589],[144.9267273,-37.7513695],[144.926712,-37.7514572],[144.9267273,-37.7514877],[144.9267273,-37.7515182],[144.9267426,-37.7515678],[144.9267731,-37.7515984],[144.9268036,-37.7516403],[144.9268341,-37.7516975],[144.9268494,-37.7517281],[144.9268646,-37.75177],[144.9268799,-37.7517891],[144.9268799,-37.7518082],[144.9268799,-37.7518272],[144.9268951,-37.7518387],[144.9268951,-37.7518501],[144.9269714,-37.7519302],[144.9270325,-37.7519875],[144.9271088,-37.7520485],[144.9272156,-37.7521095],[144.9273376,-37.7521591],[144.9274597,-37.7521973],[144.9275818,-37.7522278],[144.9276886,-37.7522697],[144.9277496,-37.7523079],[144.9279327,-37.7524185],[144.9280396,-37.7524796],[144.9281464,-37.7525177],[144.928299,-37.7525902],[144.9283752,-37.7526093],[144.928421,-37.7526207],[144.9284515,-37.7526207],[144.9285278,-37.7525978],[144.9286041,-37.7525482],[144.9286804,-37.7524681],[144.9287415,-37.7523689],[144.9288025,-37.7522507],[144.9288788,-37.7520981],[144.9289246,-37.7520103],[144.9290009,-37.7519379],[144.9290771,-37.7519073],[144.9291534,-37.7518883],[144.9292908,-37.7519073],[144.9293518,-37.7519493],[144.9293976,-37.7519989],[144.9294434,-37.7521782],[144.9294586,-37.7522774],[144.9294739,-37.7523994],[144.9295197,-37.7525291],[144.9295502,-37.7526283],[144.9295502,-37.7526703],[144.9295807,-37.7527199],[144.929657,-37.7528381],[144.9297333,-37.7529488],[144.9297943,-37.7530289],[144.9298706,-37.7531281],[144.9299316,-37.7532272],[144.9300232,-37.7533302],[144.9301147,-37.753418],[144.930191,-37.7534981],[144.9303131,-37.7535782],[144.9304047,-37.7536278],[144.930542,-37.7536583],[144.9306335,-37.7536507],[144.9307098,-37.7536087],[144.9308014,-37.7535477],[144.9308777,-37.7535095],[144.9309387,-37.753479],[144.9309998,-37.7534409],[144.9310913,-37.7533798],[144.9311829,-37.7533493],[144.9312592,-37.7533188],[144.9313507,-37.7532997],[144.9314117,-37.7532883],[144.9314728,-37.7532806],[144.9315643,-37.7532578],[144.9316406,-37.7532501],[144.9317017,-37.7532387],[144.9317627,-37.7532196],[144.9318237,-37.7532005],[144.9319,-37.75317],[144.9320221,-37.7530708],[144.9321136,-37.7529602],[144.9321594,-37.7527885],[144.9322205,-37.7526779],[144.932312,-37.7526283],[144.932373,-37.7526207],[144.9324188,-37.7526093],[144.9324951,-37.7526207],[144.9325562,-37.7526474],[144.932663,-37.752758],[144.9328156,-37.7528801],[144.9330292,-37.7529907],[144.933197,-37.7530708],[144.9333801,-37.7531281],[144.9335632,-37.7531776],[144.9337463,-37.7532005],[144.9338837,-37.7532005],[144.934021,-37.7531891],[144.9342041,-37.7531509],[144.9343719,-37.7531204],[144.9345093,-37.753109],[144.9346008,-37.7531204],[144.9347229,-37.7531281],[144.9347992,-37.75317],[144.9348907,-37.7532272],[144.9349518,-37.7532883],[144.9350128,-37.7533798],[144.9350433,-37.7534676],[144.9349976,-37.7537003],[144.934967,-37.7539101],[144.9349518,-37.7539787],[144.9349365,-37.7540474],[144.9348907,-37.7541199],[144.9348602,-37.7541885],[144.9348145,-37.7542572],[144.9347534,-37.7543182],[144.9346771,-37.7543793],[144.9346161,-37.7544174],[144.9344788,-37.754509],[144.9344177,-37.7545395],[144.9338684,-37.7547989],[144.9337006,-37.7549095],[144.93367,-37.7549591],[144.9336395,-37.7550087],[144.933609,-37.7550697],[144.933609,-37.7551384],[144.933609,-37.7552109],[144.9336243,-37.755249],[144.93367,-37.7553291],[144.9337311,-37.7553902],[144.9337921,-37.7554474],[144.9339142,-37.7555695],[144.934021,-37.7556572],[144.9341278,-37.7557602],[144.9342041,-37.7558594],[144.9342957,-37.7559891],[144.9343719,-37.7560997],[144.934433,-37.7561989],[144.9344635,-37.7562904],[144.9345093,-37.7564087],[144.9345703,-37.756588],[144.9345703,-37.7566299],[144.9345703,-37.7566681],[144.9345703,-37.7567101],[144.9345551,-37.7567978],[144.9345245,-37.7568398],[144.934494,-37.7568779],[144.9344482,-37.7569199],[144.9344177,-37.7569389],[144.9337921,-37.7572899],[144.9337311,-37.757328],[144.933609,-37.7574272],[144.9335785,-37.7574692],[144.9335327,-37.7575378],[144.9335022,-37.7575989],[144.9334717,-37.7576485],[144.9334564,-37.7577095],[144.9334412,-37.7577591],[144.9334412,-37.7578087],[144.9334564,-37.7579575],[144.9334412,-37.7580376],[144.9334259,-37.7580986],[144.9334106,-37.7581482],[144.9333801,-37.7582092],[144.9333496,-37.7582474],[144.9333191,-37.7583008],[144.9332428,-37.7583389],[144.9330597,-37.7584877],[144.9330292,-37.7585373],[144.9329987,-37.7585907],[144.9329681,-37.7586479],[144.9329529,-37.7587204],[144.9329681,-37.7587776],[144.9329834,-37.7588577],[144.9330139,-37.7588882],[144.9331665,-37.7590179],[144.933609,-37.7592773],[144.9338074,-37.759388],[144.932663,-37.7592506],[144.9320526,-37.7591782],[144.9321289,-37.758728],[144.9298248,-37.7584801],[144.9287415,-37.758358],[144.9276123,-37.7582397],[144.9264526,-37.75811],[144.9264526,-37.7580681],[144.9252014,-37.7579384],[144.9244232,-37.7578506],[144.9236908,-37.7577705],[144.9229126,-37.757679],[144.9226074,-37.7576485],[144.9211884,-37.7574883],[144.9200439,-37.75737],[144.9198151,-37.7573395],[144.9192657,-37.7572784],[144.9189911,-37.7572479],[144.9186859,-37.7572174],[144.9170532,-37.7570305],[144.9169617,-37.757019],[144.9164734,-37.756958],[144.9162445,-37.7569275],[144.9162903,-37.7584877],[144.9162903,-37.7584991],[144.9162903,-37.7585106],[144.9162903,-37.7585907],[144.9162903,-37.7585983],[144.9162903,-37.7586288],[144.9162903,-37.7586403],[144.9162903,-37.7586594],[144.9162903,-37.7586708],[144.9163055,-37.7587509],[144.9163208,-37.7588387],[144.9163208,-37.7589073],[144.9163361,-37.7589684],[144.9163361,-37.7589798],[144.9163361,-37.7589874],[144.9163361,-37.7590179],[144.9163361,-37.7590294],[144.9163513,-37.7590675],[144.9163513,-37.759079],[144.9163513,-37.75914],[144.9163513,-37.7591705],[144.9163513,-37.7591896],[144.9163666,-37.7591972],[144.9163666,-37.7592201],[144.9163666,-37.7592278],[144.9163666,-37.7592583],[144.9163818,-37.7592697],[144.9163818,-37.7593079],[144.9163818,-37.7593498],[144.9163818,-37.7593803],[144.9163971,-37.7594109],[144.9163971,-37.7594299],[144.9163971,-37.7594376],[144.9164124,-37.7594795],[144.9164124,-37.7594986],[144.9164124,-37.7595291],[144.9164124,-37.7595596],[144.9164276,-37.7595673],[144.9164276,-37.7596092],[144.9164429,-37.7596588],[144.9164429,-37.7596893],[144.9164429,-37.7597084],[144.9164429,-37.7597389],[144.9164581,-37.7597389],[144.9164734,-37.7597885],[144.9164734,-37.7598076],[144.9164734,-37.7598495],[144.9164734,-37.7598572],[144.9164886,-37.7598877],[144.9165039,-37.7599678],[144.9165039,-37.7599792],[144.9165192,-37.7600479],[144.9165192,-37.7600899],[144.9165192,-37.7601204],[144.9165344,-37.760128],[144.9165344,-37.7601585],[144.9165497,-37.7601776],[144.9165497,-37.7601891],[144.9165649,-37.7602692],[144.9165649,-37.7602692],[144.9165802,-37.7602882],[144.9165802,-37.7603073],[144.9165802,-37.7603378],[144.9165802,-37.7603493],[144.9165802,-37.7603607],[144.9165955,-37.7603989],[144.9165955,-37.7604103],[144.9166107,-37.7604179],[144.9166107,-37.7604675],[144.9166107,-37.760479],[144.9166107,-37.7604904],[144.9166412,-37.7605476],[144.9166412,-37.7605591],[144.9166565,-37.7605972],[144.9166565,-37.7606201],[144.9166718,-37.7606583],[144.9166718,-37.7607002],[144.9166718,-37.7607079],[144.916687,-37.7607079],[144.916687,-37.7607193],[144.9160614,-37.7606583],[144.9160309,-37.7607689],[144.9159698,-37.7611275],[144.9158173,-37.7611084],[144.915863,-37.7609482],[144.9155884,-37.7608986],[144.9155731,-37.7609482],[144.9153595,-37.7609177],[144.9153442,-37.7609482],[144.9151306,-37.7609177],[144.9151154,-37.7609787],[144.9148407,-37.7609482],[144.9148712,-37.7607803],[144.9146423,-37.7607498],[144.9145813,-37.7610207],[144.9143219,-37.7609978],[144.9143219,-37.7610283],[144.9139709,-37.7609901],[144.9140015,-37.7608871],[144.9132996,-37.7608109],[144.9133148,-37.7606697],[144.9132538,-37.7606697],[144.9132233,-37.7606277],[144.9116364,-37.7604294],[144.9115906,-37.7606583],[144.9109955,-37.7605782],[144.9109192,-37.7605705],[144.9104309,-37.7605209],[144.9103851,-37.7605095],[144.910202,-37.760479],[144.9100494,-37.7604675],[144.9098206,-37.7604408],[144.90979,-37.7605705],[144.9097137,-37.7605591],[144.909256,-37.7605209],[144.9091797,-37.7608795],[144.9086304,-37.7608185],[144.9075317,-37.7607079],[144.9075317,-37.7606201],[144.9075928,-37.7603607],[144.9072571,-37.7603188],[144.9072723,-37.7601776],[144.907074,-37.7601509],[144.9069824,-37.7606506],[144.9064026,-37.7605896],[144.9052429,-37.7604599],[144.905304,-37.7601204],[144.9047394,-37.7600479],[144.9047089,-37.7600098],[144.9047394,-37.7598686],[144.9044495,-37.7598305],[144.9043884,-37.7600098],[144.9038086,-37.7599373],[144.9037323,-37.7603378],[144.9049988,-37.7616997],[144.9048309,-37.7625885],[144.9033203,-37.7623978],[144.9032288,-37.7629395],[144.9035339,-37.7629776],[144.9037933,-37.7630196],[144.9037628,-37.7631302],[144.9039612,-37.7633781],[144.9039307,-37.7635803],[144.9037933,-37.7635574],[144.9036255,-37.7644806],[144.9035492,-37.7648773],[144.9021912,-37.7647285],[144.9015656,-37.7653885],[144.9014282,-37.7652893],[144.9011993,-37.7651672],[144.9008636,-37.7650108],[144.9004517,-37.7648582],[144.9000092,-37.7647285],[144.8995209,-37.7646484],[144.8991394,-37.7646294],[144.8986359,-37.7646408],[144.8981628,-37.7646484],[144.8974915,-37.7647095],[144.8969879,-37.7647972],[144.896286,-37.7649689],[144.895752,-37.7651482],[144.895462,-37.7653198],[144.8951263,-37.7655182],[144.8947601,-37.7656784],[144.8943939,-37.7657585],[144.8940887,-37.765789],[144.8937073,-37.7657394],[144.8934174,-37.7656403],[144.8931122,-37.76548],[144.8928528,-37.7653198],[144.8925934,-37.765049],[144.892395,-37.7647095],[144.8917999,-37.7641182],[144.8914795,-37.7638397],[144.8912354,-37.7636604],[144.8910522,-37.7635193],[144.8905945,-37.7631302],[144.8901672,-37.7626991],[144.88974,-37.76231],[144.8894806,-37.7620888],[144.8891754,-37.7619591],[144.8889313,-37.761898],[144.8890686,-37.7611275],[144.8891602,-37.7611809],[144.8891907,-37.7610893],[144.889267,-37.7606277],[144.8895111,-37.7592583],[144.8896027,-37.75877],[144.8899078,-37.757],[144.8899536,-37.7567101],[144.8896332,-37.756649],[144.8896179,-37.7566376],[144.8895721,-37.7566185],[144.8895111,-37.756588],[144.8894806,-37.7565575],[144.8894653,-37.7565308],[144.8894348,-37.7564774],[144.889328,-37.7562103],[144.8891144,-37.7556877],[144.8890991,-37.7556305],[144.8890839,-37.7555504],[144.8890686,-37.7554474],[144.8890839,-37.7553482],[144.8892822,-37.754158],[144.8892975,-37.7541275],[144.8893127,-37.7541008],[144.8894653,-37.7539291],[144.8895874,-37.7532806],[144.8896332,-37.7530174],[144.889801,-37.75214],[144.8899841,-37.7511787],[144.8904266,-37.7488899],[144.8904877,-37.748539],[144.8906708,-37.7475395],[144.8908234,-37.7467995],[144.8909454,-37.7460976],[144.8911133,-37.7452202],[144.8911438,-37.74506]]]}},{"type":"Feature","properties":{"SA2_NAME":"Fitzroy","polygonId":73,"SA3_NAME":"Yarra","AREASQKM":1.378,"fillColor":"#32658E","strokeColor":"#32658E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9750061,-37.7971573],[144.9750671,-37.7967796],[144.9751434,-37.79636],[144.9752808,-37.7955589],[144.9753113,-37.7954178],[144.9753723,-37.7949791],[144.9754333,-37.7946701],[144.9754791,-37.7943497],[144.9755402,-37.7940292],[144.9756012,-37.7937202],[144.9756012,-37.7936592],[144.975708,-37.7930374],[144.9758606,-37.7931976],[144.9762726,-37.7932396],[144.9763031,-37.7932396],[144.9767609,-37.7932892],[144.9768829,-37.7933006],[144.9772644,-37.7933388],[144.9773254,-37.7933502],[144.9775543,-37.7933693],[144.9776459,-37.7933807],[144.9777222,-37.7933884],[144.9781189,-37.7934303],[144.978241,-37.7934494],[144.9786987,-37.7934875],[144.9791412,-37.7935371],[144.9792633,-37.7935486],[144.9793854,-37.7935677],[144.9798126,-37.7936096],[144.9799652,-37.7936287],[144.9800262,-37.7936287],[144.9801788,-37.7936478],[144.9802399,-37.7936592],[144.9803009,-37.7936592],[144.9804535,-37.7936783],[144.9805145,-37.7936897],[144.9813995,-37.7937775],[144.9816284,-37.793808],[144.9825745,-37.7939072],[144.9826813,-37.7939072],[144.9828033,-37.7939186],[144.983902,-37.7940407],[144.9849701,-37.7941475],[144.9850922,-37.7941589],[144.9848938,-37.7953377],[144.9847717,-37.7959709],[144.9847412,-37.7961807],[144.9846802,-37.7965698],[144.9846191,-37.7968788],[144.9845428,-37.7973595],[144.9845123,-37.7975502],[144.9843903,-37.7981606],[144.9843903,-37.7982483],[144.9842682,-37.7989502],[144.9841156,-37.7998276],[144.9840088,-37.8004303],[144.983963,-37.8006897],[144.9838715,-37.8012199],[144.9837799,-37.8017502],[144.9837341,-37.8020096],[144.9837036,-37.8021774],[144.9835968,-37.8027992],[144.9835205,-37.8032684],[144.98349,-37.8034477],[144.9833679,-37.8041382],[144.9832306,-37.8049698],[144.9829865,-37.8063698],[144.9829102,-37.8067703],[144.9827423,-37.8078308],[144.9825439,-37.808918],[144.9820404,-37.8088608],[144.9813538,-37.8087883],[144.9811401,-37.8087692],[144.9801636,-37.8086586],[144.9790039,-37.8085403],[144.9785614,-37.8084908],[144.97789,-37.8084183],[144.9767761,-37.8083],[144.9761963,-37.808239],[144.9758606,-37.8082008],[144.9756927,-37.8081779],[144.9747162,-37.8080788],[144.9740295,-37.8080101],[144.973175,-37.8079185],[144.9733734,-37.8067589],[144.9735565,-37.8057289],[144.9736023,-37.805378],[144.9738312,-37.8041077],[144.973999,-37.8031197],[144.9740601,-37.8026886],[144.9743195,-37.8012199],[144.974411,-37.8006706],[144.9744415,-37.800518],[144.9745331,-37.7999573],[144.9746094,-37.799469],[144.9747467,-37.7986908],[144.9747467,-37.7986374],[144.9748688,-37.7979507],[144.9750061,-37.7971573]]]}},{"type":"Feature","properties":{"SA2_NAME":"Fitzroy North","polygonId":74,"SA3_NAME":"Yarra","AREASQKM":2.5051,"fillColor":"#32658E","strokeColor":"#32658E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9781036,-37.7801971],[144.9781189,-37.7800674],[144.9781494,-37.7798691],[144.9781952,-37.7795906],[144.9782104,-37.7794991],[144.9782104,-37.7794075],[144.9782104,-37.7792282],[144.978241,-37.779068],[144.9784088,-37.7780609],[144.9785614,-37.7772179],[144.978714,-37.7762489],[144.9788513,-37.7754478],[144.9788818,-37.7752991],[144.9789429,-37.7748985],[144.9790039,-37.774559],[144.979187,-37.7734909],[144.9797211,-37.7735481],[144.9803925,-37.7736206],[144.9806824,-37.7736473],[144.9808655,-37.7736702],[144.9811096,-37.7737007],[144.9815063,-37.7737389],[144.9816284,-37.7737503],[144.9824524,-37.773838],[144.9833984,-37.7739372],[144.9833832,-37.7740898],[144.9851837,-37.7743073],[144.9857635,-37.7743797],[144.9858398,-37.7743378],[144.9866028,-37.7744293],[144.9867096,-37.7743492],[144.9868622,-37.7743683],[144.9870911,-37.7746582],[144.9872437,-37.7747498],[144.9873657,-37.7748604],[144.9875793,-37.7749176],[144.9879608,-37.77491],[144.9882355,-37.774929],[144.9885101,-37.7750778],[144.9885864,-37.7751579],[144.9886627,-37.7753372],[144.9886322,-37.7757072],[144.9885559,-37.7758598],[144.9884796,-37.7760582],[144.9884796,-37.7762184],[144.9885101,-37.7763977],[144.9885712,-37.7765503],[144.9886932,-37.7767906],[144.9888,-37.7769203],[144.9890594,-37.7771072],[144.9891052,-37.7771492],[144.989212,-37.7772408],[144.9893951,-37.7773781],[144.9894562,-37.7774696],[144.9895172,-37.7775383],[144.9896393,-37.777729],[144.9897308,-37.7778702],[144.9897614,-37.7779694],[144.9898224,-37.7781601],[144.9898529,-37.7782898],[144.9898529,-37.778389],[144.9898529,-37.7784195],[144.9898834,-37.7785301],[144.9899139,-37.7790375],[144.9899292,-37.7792587],[144.9899597,-37.7793274],[144.9900208,-37.7795296],[144.990097,-37.7796478],[144.9903564,-37.7798386],[144.9906616,-37.7799377],[144.9908447,-37.7799683],[144.9912109,-37.7800179],[144.9914398,-37.7800484],[144.9917145,-37.7801208],[144.9917603,-37.7801476],[144.9918671,-37.7802391],[144.9919891,-37.780468],[144.9919891,-37.780529],[144.9919739,-37.7807007],[144.9918823,-37.7809486],[144.9918213,-37.7810593],[144.991806,-37.7812195],[144.9918365,-37.7815781],[144.9919586,-37.7820091],[144.9919586,-37.7823486],[144.9920044,-37.7825279],[144.9921112,-37.7826309],[144.9922333,-37.7826805],[144.9923706,-37.7827301],[144.9925842,-37.7828484],[144.9931793,-37.7830086],[144.9933014,-37.7830505],[144.9936829,-37.7832298],[144.9941711,-37.7835274],[144.9945526,-37.7838593],[144.994751,-37.7840004],[144.9952393,-37.7844505],[144.9955902,-37.7846909],[144.9951019,-37.7851486],[144.9951782,-37.7852287],[144.9954681,-37.7856293],[144.9956207,-37.7859993],[144.9957123,-37.7865486],[144.9956665,-37.7868385],[144.995636,-37.7869873],[144.9952698,-37.7871208],[144.9950562,-37.7871399],[144.9947205,-37.7872276],[144.9922791,-37.7880287],[144.9920502,-37.7881088],[144.9919739,-37.7881775],[144.99086,-37.7886391],[144.9889984,-37.7894173],[144.9876404,-37.789978],[144.9872437,-37.7901497],[144.9868011,-37.7903404],[144.9864197,-37.7904892],[144.985672,-37.7907982],[144.9854584,-37.7920074],[144.9853821,-37.7924004],[144.9851837,-37.7936172],[144.9850922,-37.7941589],[144.9849701,-37.7941475],[144.983902,-37.7940407],[144.9828033,-37.7939186],[144.9826813,-37.7939072],[144.9825745,-37.7939072],[144.9816284,-37.793808],[144.9813995,-37.7937775],[144.9805145,-37.7936897],[144.9804535,-37.7936783],[144.9803009,-37.7936592],[144.9802399,-37.7936592],[144.9801788,-37.7936478],[144.9800262,-37.7936287],[144.9799652,-37.7936287],[144.9798126,-37.7936096],[144.9793854,-37.7935677],[144.9792633,-37.7935486],[144.9791412,-37.7935371],[144.9786987,-37.7934875],[144.978241,-37.7934494],[144.9781189,-37.7934303],[144.9777222,-37.7933884],[144.9776459,-37.7933807],[144.9775543,-37.7933693],[144.9773254,-37.7933502],[144.9772644,-37.7933388],[144.9768829,-37.7933006],[144.9767609,-37.7932892],[144.9763031,-37.7932396],[144.9762726,-37.7932396],[144.9758606,-37.7931976],[144.975708,-37.7930374],[144.9757385,-37.7929077],[144.975769,-37.7927284],[144.9759674,-37.7916489],[144.9762421,-37.7902298],[144.9763336,-37.7897072],[144.9764099,-37.789299],[144.9765015,-37.7887878],[144.9766388,-37.7880783],[144.9767303,-37.7876472],[144.9768829,-37.7868309],[144.9769287,-37.7865181],[144.9770203,-37.7860794],[144.9770355,-37.7859688],[144.9772034,-37.7851486],[144.9774628,-37.7837105],[144.9775696,-37.7830772],[144.9776459,-37.7826385],[144.9777374,-37.7821884],[144.9778595,-37.7814674],[144.9778748,-37.7814178],[144.9779358,-37.7810898],[144.9781036,-37.7801971]]]}},{"type":"Feature","properties":{"SA2_NAME":"Flemington","polygonId":46,"SA3_NAME":"Essendon","AREASQKM":1.5808,"fillColor":"#32658E","strokeColor":"#32658E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9220276,-37.7837105],[144.9221497,-37.7829704],[144.9221802,-37.7827492],[144.922226,-37.7825089],[144.9222717,-37.7822495],[144.9223633,-37.7816582],[144.9224091,-37.7813492],[144.9225006,-37.78088],[144.9225922,-37.7803497],[144.9229584,-37.7803879],[144.9230347,-37.7803993],[144.9231873,-37.7804108],[144.9232788,-37.7804184],[144.9232788,-37.7803879],[144.9233551,-37.7803993],[144.9232941,-37.7807198],[144.9237518,-37.7807693],[144.9238434,-37.7807693],[144.9244537,-37.7808304],[144.9244995,-37.7804909],[144.9251099,-37.7805481],[144.9251709,-37.7801971],[144.9261322,-37.7802887],[144.9264221,-37.7803192],[144.9265289,-37.7804604],[144.9265289,-37.7804604],[144.9265442,-37.7804794],[144.9265442,-37.7804794],[144.9265594,-37.7804985],[144.9265594,-37.7805099],[144.92659,-37.780529],[144.92659,-37.7805405],[144.9266052,-37.7805595],[144.9266205,-37.7805672],[144.9266205,-37.7805786],[144.9266357,-37.7805977],[144.9266663,-37.7806396],[144.9266815,-37.7806587],[144.9266968,-37.7806778],[144.9267731,-37.7806702],[144.927063,-37.7806091],[144.9275818,-37.7810898],[144.927597,-37.7809486],[144.9278107,-37.7809792],[144.9278717,-37.7809792],[144.9279938,-37.7809982],[144.9282532,-37.7810173],[144.9282532,-37.7810898],[144.928299,-37.7811089],[144.9283295,-37.7809601],[144.9284058,-37.7809677],[144.928421,-37.7808495],[144.9284973,-37.7808609],[144.9288483,-37.7808876],[144.9289551,-37.7809105],[144.9290771,-37.7809296],[144.9292755,-37.7809486],[144.9293518,-37.7809601],[144.9293365,-37.7810593],[144.9295654,-37.7810783],[144.9295502,-37.7811394],[144.9296875,-37.7811508],[144.9296722,-37.7811775],[144.9296417,-37.7814484],[144.9297638,-37.7814598],[144.930191,-37.7815094],[144.9303894,-37.7815285],[144.9304504,-37.7812576],[144.930481,-37.7810593],[144.9307404,-37.7810783],[144.9307404,-37.7811279],[144.9307709,-37.7812996],[144.931015,-37.7813187],[144.9310303,-37.7813492],[144.9311829,-37.7813606],[144.9312286,-37.7813683],[144.9312286,-37.7813492],[144.9312592,-37.7811699],[144.9316406,-37.781208],[144.9316559,-37.7812004],[144.9317169,-37.7808495],[144.932312,-37.7809105],[144.9315948,-37.7800407],[144.9312897,-37.7796593],[144.9310455,-37.7793694],[144.9306183,-37.77882],[144.9303589,-37.7784691],[144.9301453,-37.7781372],[144.9299011,-37.7777596],[144.9304047,-37.7774887],[144.9303589,-37.77742],[144.9300842,-37.7770309],[144.9302368,-37.77705],[144.9307556,-37.7771072],[144.9309235,-37.7771301],[144.9312592,-37.7771606],[144.9316101,-37.7771988],[144.9321136,-37.7772598],[144.9324799,-37.777298],[144.9330139,-37.777359],[144.9336395,-37.7774391],[144.933609,-37.7774086],[144.9348602,-37.7775574],[144.9349365,-37.7775192],[144.9356689,-37.7776108],[144.9370728,-37.7777672],[144.9377136,-37.7791405],[144.9387207,-37.7808495],[144.9389496,-37.7815704],[144.9390106,-37.7817688],[144.9391632,-37.7825775],[144.93927,-37.7833977],[144.9394836,-37.7843399],[144.939621,-37.7849388],[144.9398956,-37.7855492],[144.9401703,-37.7860985],[144.9402618,-37.786438],[144.9402771,-37.7866592],[144.9402008,-37.7868309],[144.9399109,-37.7870102],[144.9400635,-37.7872009],[144.9403534,-37.7876091],[144.9393158,-37.7881279],[144.938385,-37.7887878],[144.9381866,-37.7889709],[144.9378204,-37.7889404],[144.9370422,-37.7888489],[144.9362793,-37.7887688],[144.9360504,-37.7887497],[144.934967,-37.7886276],[144.9346008,-37.7885895],[144.9343414,-37.788559],[144.9337921,-37.7885094],[144.9331512,-37.7884407],[144.9329987,-37.7884178],[144.9322205,-37.7883377],[144.9321594,-37.7883301],[144.9320831,-37.7883377],[144.9317322,-37.7883873],[144.9314575,-37.7883606],[144.9311523,-37.7883301],[144.9296875,-37.7881775],[144.9294739,-37.7881508],[144.9291687,-37.7881203],[144.9274902,-37.7879372],[144.9273224,-37.7879181],[144.9266663,-37.7878494],[144.9266357,-37.7878494],[144.9252319,-37.7877007],[144.9243011,-37.7875977],[144.9233856,-37.7874985],[144.9225311,-37.7874107],[144.9224548,-37.7873993],[144.9212952,-37.7874489],[144.9192505,-37.7853203],[144.9185486,-37.7845879],[144.9182129,-37.7842407],[144.9176025,-37.7836075],[144.9193115,-37.783638],[144.9203339,-37.7836685],[144.9205627,-37.78368],[144.9220276,-37.7837105]]]}},{"type":"Feature","properties":{"SA2_NAME":"Flemington Racecourse","polygonId":51,"SA3_NAME":"Melbourne City","AREASQKM":1.7093,"fillColor":"#32658E","strokeColor":"#32658E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9108429,-37.7809906],[144.9116516,-37.7805176],[144.9135742,-37.7793884],[144.9145203,-37.7803879],[144.9147339,-37.7805786],[144.9148102,-37.7806587],[144.9151001,-37.7809601],[144.9159698,-37.781868],[144.9169617,-37.7829399],[144.9173126,-37.7833099],[144.9176025,-37.7836075],[144.9182129,-37.7842407],[144.9185486,-37.7845879],[144.9192505,-37.7853203],[144.9212952,-37.7874489],[144.9217224,-37.7878799],[144.9227905,-37.7890396],[144.9229126,-37.7891388],[144.922821,-37.7891808],[144.9224091,-37.7894402],[144.9217072,-37.7898788],[144.920639,-37.7905388],[144.9204407,-37.7906685],[144.9198151,-37.791069],[144.9171906,-37.7926979],[144.9163818,-37.79319],[144.9149628,-37.7940788],[144.9138641,-37.7947578],[144.9129486,-37.7951393],[144.9129181,-37.7951584],[144.9128265,-37.7951088],[144.9124756,-37.7949295],[144.9118195,-37.7946701],[144.9112091,-37.7944603],[144.9109344,-37.7943802],[144.910553,-37.7942696],[144.9100189,-37.7941399],[144.9094849,-37.7940102],[144.9089966,-37.7938805],[144.9083862,-37.7937088],[144.9079895,-37.7935371],[144.9075928,-37.7933006],[144.9072113,-37.7931099],[144.9068146,-37.7929192],[144.9062805,-37.7926903],[144.9056244,-37.7924576],[144.9049377,-37.7921791],[144.9045715,-37.7920609],[144.904129,-37.7918777],[144.9038391,-37.7917404],[144.9035797,-37.7915802],[144.9033203,-37.7913704],[144.9030609,-37.7910576],[144.9028778,-37.7907486],[144.902771,-37.7903595],[144.90271,-37.7899475],[144.9026947,-37.7897606],[144.90271,-37.78965],[144.9035339,-37.7892799],[144.904007,-37.7889481],[144.9042511,-37.7887077],[144.9044037,-37.7884598],[144.9045563,-37.7881699],[144.9046936,-37.7879105],[144.9048004,-37.7876396],[144.9048309,-37.78759],[144.9048615,-37.787468],[144.9049377,-37.7872086],[144.904953,-37.7871475],[144.9063263,-37.7873878],[144.9064636,-37.7868385],[144.9065399,-37.7860184],[144.9066315,-37.7855492],[144.9066925,-37.7852783],[144.9067535,-37.785038],[144.9068298,-37.7847977],[144.9069366,-37.7845383],[144.9070435,-37.7842903],[144.9071655,-37.7840309],[144.9073029,-37.7837906],[144.9074554,-37.7835388],[144.9075928,-37.7833176],[144.9077606,-37.7830887],[144.9078827,-37.7829399],[144.9079895,-37.7828178],[144.9081116,-37.7826805],[144.9082184,-37.7825584],[144.9082336,-37.7825279],[144.9108429,-37.7809906]]]}},{"type":"Feature","properties":{"SA2_NAME":"Kensington (Vic.)","polygonId":52,"SA3_NAME":"Melbourne City","AREASQKM":2.147,"fillColor":"#24878E","strokeColor":"#24878E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9217072,-37.7898788],[144.9224091,-37.7894402],[144.922821,-37.7891808],[144.9229126,-37.7891388],[144.9227905,-37.7890396],[144.9217224,-37.7878799],[144.9212952,-37.7874489],[144.9224548,-37.7873993],[144.9225311,-37.7874107],[144.9233856,-37.7874985],[144.9243011,-37.7875977],[144.9252319,-37.7877007],[144.9266357,-37.7878494],[144.9266663,-37.7878494],[144.9273224,-37.7879181],[144.9274902,-37.7879372],[144.9291687,-37.7881203],[144.9294739,-37.7881508],[144.9296875,-37.7881775],[144.9311523,-37.7883301],[144.9314575,-37.7883606],[144.9317322,-37.7883873],[144.9320831,-37.7883377],[144.9321594,-37.7883301],[144.9322205,-37.7883377],[144.9329987,-37.7884178],[144.9331512,-37.7884407],[144.9337921,-37.7885094],[144.9343414,-37.788559],[144.9346008,-37.7885895],[144.934967,-37.7886276],[144.9360504,-37.7887497],[144.9362793,-37.7887688],[144.9370422,-37.7888489],[144.9378204,-37.7889404],[144.9378052,-37.7889404],[144.9377747,-37.7889786],[144.9377594,-37.7889786],[144.9377594,-37.7889977],[144.9377289,-37.7890205],[144.9377136,-37.7890396],[144.9376984,-37.7890472],[144.9376831,-37.7890701],[144.9376526,-37.7890892],[144.9376526,-37.7891083],[144.9376373,-37.7891083],[144.9376068,-37.7891388],[144.9375916,-37.7891693],[144.9375763,-37.7891808],[144.937561,-37.7891884],[144.9375458,-37.7892075],[144.9375305,-37.7892189],[144.9375305,-37.7892303],[144.9375153,-37.789238],[144.9375,-37.7892609],[144.9374847,-37.7892799],[144.9374695,-37.7892799],[144.9374695,-37.789299],[144.937439,-37.7893105],[144.937439,-37.7893181],[144.937439,-37.7893372],[144.9374237,-37.7893372],[144.9374237,-37.78936],[144.9373932,-37.7893791],[144.9373932,-37.7893906],[144.9373932,-37.7893906],[144.9373627,-37.7894173],[144.9373627,-37.7894173],[144.9373322,-37.7894478],[144.9373322,-37.7894478],[144.9373169,-37.7894707],[144.9373169,-37.7894707],[144.9373016,-37.7894897],[144.9372711,-37.7895203],[144.9372711,-37.7895279],[144.9372406,-37.7895584],[144.9372253,-37.7895775],[144.9372101,-37.789608],[144.9372101,-37.7896194],[144.9371796,-37.7896385],[144.9371796,-37.7896576],[144.9371338,-37.7896996],[144.9371033,-37.7897377],[144.9371033,-37.7897491],[144.937088,-37.7897797],[144.9370728,-37.7897797],[144.9370728,-37.7897873],[144.9370575,-37.7898178],[144.9370422,-37.7898293],[144.9370422,-37.7898407],[144.937027,-37.7898598],[144.9370117,-37.7898674],[144.9370117,-37.7898903],[144.9369965,-37.7898979],[144.9369812,-37.7899284],[144.9369507,-37.789959],[144.9369507,-37.789959],[144.9369507,-37.7899704],[144.9369354,-37.7899895],[144.9369202,-37.7900009],[144.9369202,-37.7900085],[144.9369202,-37.7900276],[144.9368896,-37.7900505],[144.9368896,-37.7900581],[144.9368896,-37.7900696],[144.9368896,-37.7900696],[144.9368744,-37.7900772],[144.9368591,-37.7901077],[144.9368591,-37.7901192],[144.9368439,-37.7901497],[144.9368134,-37.7901993],[144.9367981,-37.7902184],[144.9367981,-37.7902298],[144.9367523,-37.7903099],[144.9367523,-37.7903175],[144.9367371,-37.7903404],[144.9367218,-37.7903595],[144.9367065,-37.79039],[144.9366913,-37.7903976],[144.9366913,-37.7904282],[144.936676,-37.7904472],[144.9366608,-37.7904778],[144.9366608,-37.7904892],[144.9366455,-37.7905197],[144.9366302,-37.7905273],[144.9366302,-37.7905502],[144.936615,-37.7905807],[144.9365997,-37.7905884],[144.9365845,-37.7906303],[144.9365845,-37.790638],[144.9365692,-37.7906685],[144.9365692,-37.7906876],[144.936554,-37.7907372],[144.9365387,-37.7907486],[144.9365234,-37.7907677],[144.9365234,-37.7907982],[144.9365082,-37.7908287],[144.9365082,-37.7908401],[144.9364929,-37.7908478],[144.9364929,-37.7908783],[144.9364777,-37.7908974],[144.9364624,-37.7909279],[144.9364624,-37.7909698],[144.9364471,-37.7910004],[144.9364319,-37.791008],[144.9364319,-37.7910385],[144.9364166,-37.7910576],[144.9364014,-37.7911072],[144.9364014,-37.7911186],[144.9364014,-37.7911377],[144.9363861,-37.7911491],[144.9363708,-37.7911873],[144.9363708,-37.7911873],[144.9363556,-37.7912483],[144.9363556,-37.7912598],[144.9363556,-37.7912674],[144.9363403,-37.7913208],[144.9363403,-37.7913399],[144.9363251,-37.7913475],[144.9363251,-37.7913589],[144.9363098,-37.7913895],[144.9363098,-37.7914085],[144.9363098,-37.79142],[144.9362946,-37.7914886],[144.9362946,-37.7915077],[144.9362793,-37.7915382],[144.9362793,-37.7915497],[144.9362793,-37.7915878],[144.9362793,-37.7915993],[144.9362488,-37.7916489],[144.9362488,-37.7916679],[144.9362488,-37.7917175],[144.9362488,-37.7917404],[144.9362335,-37.7918587],[144.9359589,-37.7933273],[144.9356689,-37.7950706],[144.9358368,-37.7950783],[144.9358063,-37.79533],[144.9358215,-37.7958794],[144.9358215,-37.7960205],[144.9358521,-37.7963295],[144.9358826,-37.7966309],[144.9359131,-37.7967987],[144.9362946,-37.7983208],[144.9363708,-37.7986908],[144.9363708,-37.7989273],[144.9362793,-37.7994003],[144.936264,-37.7994576],[144.9360352,-37.7994308],[144.9359131,-37.799408],[144.9358978,-37.7994804],[144.9358215,-37.7999992],[144.9358521,-37.8004494],[144.9359741,-37.8008385],[144.936203,-37.8013191],[144.9362488,-37.8017082],[144.9360352,-37.8020897],[144.9359741,-37.8021698],[144.9358978,-37.8022804],[144.9341888,-37.8014107],[144.9323578,-37.8008194],[144.9296417,-37.8001785],[144.9276428,-37.799839],[144.9271851,-37.7996483],[144.9260406,-37.799469],[144.9258118,-37.7994385],[144.9256592,-37.7995605],[144.9220428,-37.7990379],[144.9197235,-37.7987099],[144.9164886,-37.7982101],[144.9164734,-37.798008],[144.9163208,-37.7975998],[144.9160309,-37.7972374],[144.9156799,-37.7968979],[144.9152832,-37.7965393],[144.9151917,-37.7964783],[144.9146423,-37.7960892],[144.9139099,-37.79562],[144.9134674,-37.7953682],[144.9129181,-37.7951584],[144.9129486,-37.7951393],[144.9138641,-37.7947578],[144.9149628,-37.7940788],[144.9163818,-37.79319],[144.9171906,-37.7926979],[144.9198151,-37.791069],[144.9204407,-37.7906685],[144.920639,-37.7905388],[144.9217072,-37.7898788]]]}},{"type":"Feature","properties":{"SA2_NAME":"Melbourne","polygonId":53,"SA3_NAME":"Melbourne City","AREASQKM":2.369,"fillColor":"#1F9F88","strokeColor":"#1F9F88","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9648743,-37.8068695],[144.9651031,-37.8068886],[144.9658508,-37.8069687],[144.9673309,-37.8071289],[144.9680328,-37.8071976],[144.9688416,-37.8072891],[144.970932,-37.8075104],[144.971283,-37.8075485],[144.9713593,-37.8077202],[144.9716644,-37.8083992],[144.9721375,-37.8093987],[144.9723816,-37.8099174],[144.9724731,-37.8101082],[144.97258,-37.8103676],[144.9727325,-37.8106804],[144.9730377,-37.811348],[144.9734802,-37.8123283],[144.9736176,-37.8125992],[144.9739532,-37.8133087],[144.9740906,-37.8136406],[144.9743958,-37.8143005],[144.9744415,-37.8143692],[144.9745483,-37.8146172],[144.9746399,-37.8148308],[144.9748535,-37.8152809],[144.9747314,-37.8153076],[144.9736328,-37.8156281],[144.9723816,-37.8159981],[144.9703369,-37.8166084],[144.9698944,-37.8167305],[144.9693146,-37.8168983],[144.9674225,-37.8174477],[144.9682465,-37.8192177],[144.9679718,-37.8192406],[144.9671631,-37.8193283],[144.9664001,-37.8194504],[144.9663086,-37.819458],[144.9653778,-37.8196106],[144.9647675,-37.8197098],[144.9644165,-37.8197594],[144.9636688,-37.8199196],[144.9630127,-37.8200989],[144.96138,-37.8205109],[144.9606171,-37.8207474],[144.9599915,-37.8210373],[144.9590302,-37.8215103],[144.9580688,-37.8219681],[144.95784,-37.8220787],[144.9569092,-37.8225899],[144.9559784,-37.8230476],[144.955719,-37.8225098],[144.9553528,-37.8216896],[144.9551392,-37.8212585],[144.9550629,-37.8210907],[144.9546204,-37.8200874],[144.9543915,-37.8195992],[144.9541321,-37.8190575],[144.9539032,-37.8185501],[144.9536896,-37.8180809],[144.9532318,-37.8170891],[144.9527893,-37.8161087],[144.9523315,-37.8151283],[144.951889,-37.8141479],[144.9517975,-37.8139687],[144.9516296,-37.8136177],[144.9514313,-37.8131599],[144.951889,-37.8130302],[144.9526672,-37.812809],[144.9530792,-37.8126907],[144.9533234,-37.8126183],[144.9539185,-37.812458],[144.9542694,-37.8123589],[144.9549408,-37.8121681],[144.9564362,-37.8117485],[144.9560394,-37.8109093],[144.9559326,-37.8106689],[144.9554596,-37.8096504],[144.9553833,-37.8094788],[144.9555817,-37.8082695],[144.9556732,-37.8077202],[144.9559784,-37.8058701],[144.9571075,-37.8059998],[144.958252,-37.8061409],[144.9584503,-37.8061409],[144.9595032,-37.8062897],[144.9599304,-37.8063278],[144.9608002,-37.8064308],[144.9614105,-37.806488],[144.9618378,-37.8065376],[144.9624481,-37.8065987],[144.9628906,-37.8066483],[144.9633636,-37.8066978],[144.9643707,-37.8068085],[144.9648743,-37.8068695]]]}},{"type":"Feature","properties":{"SA2_NAME":"Moonee Ponds","polygonId":47,"SA3_NAME":"Essendon","AREASQKM":4.3551,"fillColor":"#21A685","strokeColor":"#21A685","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9048309,-37.7625885],[144.9049988,-37.7616997],[144.9037323,-37.7603378],[144.9038086,-37.7599373],[144.9043884,-37.7600098],[144.9044495,-37.7598305],[144.9047394,-37.7598686],[144.9047089,-37.7600098],[144.9047394,-37.7600479],[144.905304,-37.7601204],[144.9052429,-37.7604599],[144.9064026,-37.7605896],[144.9069824,-37.7606506],[144.907074,-37.7601509],[144.9072723,-37.7601776],[144.9072571,-37.7603188],[144.9075928,-37.7603607],[144.9075317,-37.7606201],[144.9075317,-37.7607079],[144.9086304,-37.7608185],[144.9091797,-37.7608795],[144.909256,-37.7605209],[144.9097137,-37.7605591],[144.90979,-37.7605705],[144.9098206,-37.7604408],[144.9100494,-37.7604675],[144.910202,-37.760479],[144.9103851,-37.7605095],[144.9104309,-37.7605209],[144.9109192,-37.7605705],[144.9109955,-37.7605782],[144.9115906,-37.7606583],[144.9116364,-37.7604294],[144.9132233,-37.7606277],[144.9132538,-37.7606697],[144.9133148,-37.7606697],[144.9132996,-37.7608109],[144.9140015,-37.7608871],[144.9139709,-37.7609901],[144.9143219,-37.7610283],[144.9143219,-37.7609978],[144.9145813,-37.7610207],[144.9146423,-37.7607498],[144.9148712,-37.7607803],[144.9148407,-37.7609482],[144.9151154,-37.7609787],[144.9151306,-37.7609177],[144.9153442,-37.7609482],[144.9153595,-37.7609177],[144.9155731,-37.7609482],[144.9155884,-37.7608986],[144.915863,-37.7609482],[144.9158173,-37.7611084],[144.9159698,-37.7611275],[144.9160309,-37.7607689],[144.9160614,-37.7606583],[144.916687,-37.7607193],[144.916687,-37.7607079],[144.9166718,-37.7607079],[144.9166718,-37.7607002],[144.9166718,-37.7606583],[144.9166565,-37.7606201],[144.9166565,-37.7605972],[144.9166412,-37.7605591],[144.9166412,-37.7605476],[144.9166107,-37.7604904],[144.9166107,-37.760479],[144.9166107,-37.7604675],[144.9166107,-37.7604179],[144.9165955,-37.7604103],[144.9165955,-37.7603989],[144.9165802,-37.7603607],[144.9165802,-37.7603493],[144.9165802,-37.7603378],[144.9165802,-37.7603073],[144.9165802,-37.7602882],[144.9165649,-37.7602692],[144.9165649,-37.7602692],[144.9165497,-37.7601891],[144.9165497,-37.7601776],[144.9165344,-37.7601585],[144.9165344,-37.760128],[144.9165192,-37.7601204],[144.9165192,-37.7600899],[144.9165192,-37.7600479],[144.9165039,-37.7599792],[144.9165039,-37.7599678],[144.9164886,-37.7598877],[144.9164734,-37.7598572],[144.9164734,-37.7598495],[144.9164734,-37.7598076],[144.9164734,-37.7597885],[144.9164581,-37.7597389],[144.9164429,-37.7597389],[144.9164429,-37.7597084],[144.9164429,-37.7596893],[144.9164429,-37.7596588],[144.9164276,-37.7596092],[144.9164276,-37.7595673],[144.9164124,-37.7595596],[144.9164124,-37.7595291],[144.9164124,-37.7594986],[144.9164124,-37.7594795],[144.9163971,-37.7594376],[144.9163971,-37.7594299],[144.9163971,-37.7594109],[144.9163818,-37.7593803],[144.9163818,-37.7593498],[144.9163818,-37.7593079],[144.9163818,-37.7592697],[144.9163666,-37.7592583],[144.9163666,-37.7592278],[144.9163666,-37.7592201],[144.9163666,-37.7591972],[144.9163513,-37.7591896],[144.9163513,-37.7591705],[144.9163513,-37.75914],[144.9163513,-37.759079],[144.9163513,-37.7590675],[144.9163361,-37.7590294],[144.9163361,-37.7590179],[144.9163361,-37.7589874],[144.9163361,-37.7589798],[144.9163361,-37.7589684],[144.9163208,-37.7589073],[144.9163208,-37.7588387],[144.9163055,-37.7587509],[144.9162903,-37.7586708],[144.9162903,-37.7586594],[144.9162903,-37.7586403],[144.9162903,-37.7586288],[144.9162903,-37.7585983],[144.9162903,-37.7585907],[144.9162903,-37.7585106],[144.9162903,-37.7584991],[144.9162903,-37.7584877],[144.9162445,-37.7569275],[144.9164734,-37.756958],[144.9169617,-37.757019],[144.9170532,-37.7570305],[144.9186859,-37.7572174],[144.9189911,-37.7572479],[144.9192657,-37.7572784],[144.9198151,-37.7573395],[144.9200439,-37.75737],[144.9211884,-37.7574883],[144.9226074,-37.7576485],[144.9229126,-37.757679],[144.9236908,-37.7577705],[144.9244232,-37.7578506],[144.9252014,-37.7579384],[144.9264526,-37.7580681],[144.9264526,-37.75811],[144.9276123,-37.7582397],[144.9287415,-37.758358],[144.9298248,-37.7584801],[144.9321289,-37.758728],[144.9320526,-37.7591782],[144.932663,-37.7592506],[144.9338074,-37.759388],[144.9339905,-37.7594986],[144.9340515,-37.7595596],[144.9340668,-37.7596893],[144.9340515,-37.7598076],[144.934021,-37.7598572],[144.9339294,-37.7600174],[144.9338989,-37.7601509],[144.9339294,-37.7602692],[144.9339905,-37.7603798],[144.934082,-37.760479],[144.9342194,-37.7605476],[144.9343872,-37.7605896],[144.9345398,-37.7605782],[144.9347076,-37.7605286],[144.9347839,-37.760498],[144.9352875,-37.7602081],[144.9355316,-37.760128],[144.9357758,-37.7601204],[144.9364166,-37.7601395],[144.9366608,-37.7601891],[144.9372711,-37.7603989],[144.9376678,-37.76054],[144.9379425,-37.7606392],[144.9381866,-37.7607307],[144.9383087,-37.7608109],[144.9384003,-37.7609177],[144.9384308,-37.7611008],[144.9384308,-37.761158],[144.9384155,-37.7614098],[144.9382629,-37.7627983],[144.9381561,-37.7641182],[144.9380951,-37.7649307],[144.9380798,-37.7652092],[144.9380035,-37.7662888],[144.937973,-37.7664986],[144.9378662,-37.7666893],[144.9377441,-37.7668571],[144.9377441,-37.7669106],[144.9377289,-37.7669907],[144.9376984,-37.7674904],[144.9376831,-37.7675781],[144.9377136,-37.7676697],[144.9378815,-37.7684784],[144.937851,-37.7686081],[144.937851,-37.7686272],[144.9377899,-37.7687378],[144.9376373,-37.7688789],[144.9372559,-37.7690392],[144.9370422,-37.7691307],[144.9363556,-37.7694206],[144.9361267,-37.7694893],[144.9356232,-37.7697372],[144.9354401,-37.7698898],[144.9353485,-37.7700577],[144.935318,-37.7701683],[144.9353027,-37.7702904],[144.9352112,-37.7706108],[144.9352417,-37.7707405],[144.935318,-37.7708588],[144.9354401,-37.7709503],[144.9355927,-37.771019],[144.9356689,-37.7710304],[144.9359589,-37.7710075],[144.9368896,-37.7709999],[144.9371185,-37.7709885],[144.9372253,-37.7709885],[144.9377136,-37.7709808],[144.9379425,-37.771019],[144.9381409,-37.7711182],[144.9382782,-37.7712173],[144.9383545,-37.7713394],[144.9384308,-37.7715492],[144.9384155,-37.7717209],[144.9383392,-37.7718773],[144.9378967,-37.7725105],[144.9377441,-37.7727394],[144.9376373,-37.7728386],[144.9372711,-37.7731209],[144.9368286,-37.7734604],[144.9366302,-37.7736092],[144.9365387,-37.7737083],[144.9364777,-37.7737885],[144.9357605,-37.7735786],[144.9351501,-37.7734184],[144.9349518,-37.7733803],[144.9347534,-37.7733498],[144.9345856,-37.7733307],[144.9344025,-37.7733192],[144.934021,-37.7732773],[144.9336548,-37.7732391],[144.9320831,-37.7730675],[144.9319916,-37.7730598],[144.9303284,-37.7728882],[144.9302521,-37.7728806],[144.9276428,-37.7725983],[144.9274292,-37.7725792],[144.9272614,-37.7725983],[144.9268799,-37.7726288],[144.9269257,-37.7727585],[144.9264374,-37.7728195],[144.9263153,-37.7728081],[144.9252625,-37.7726974],[144.9239197,-37.7725601],[144.9231567,-37.77248],[144.9219208,-37.7723503],[144.920639,-37.7722092],[144.9195557,-37.7720985],[144.9183502,-37.7719688],[144.9180908,-37.7719383],[144.9167328,-37.7717896],[144.9161682,-37.7717285],[144.9154816,-37.7716599],[144.9150238,-37.7715988],[144.9148102,-37.7715797],[144.913681,-37.7714577],[144.9125214,-37.771328],[144.9114227,-37.7711983],[144.9111328,-37.7711678],[144.9106598,-37.7711182],[144.9102936,-37.77108],[144.9100494,-37.7710495],[144.9091492,-37.7709503],[144.908844,-37.7709198],[144.90802,-37.7708282],[144.907486,-37.7707672],[144.9066315,-37.770668],[144.9051971,-37.7705078],[144.9040833,-37.7703781],[144.903595,-37.7703285],[144.9024963,-37.7701988],[144.9009399,-37.7700195],[144.901062,-37.769989],[144.9014282,-37.7698708],[144.9017334,-37.7697372],[144.9019318,-37.7696075],[144.9020844,-37.7694283],[144.9021912,-37.7692299],[144.9022522,-37.7689705],[144.9022675,-37.7688179],[144.9022827,-37.7686691],[144.9022064,-37.7683601],[144.9020386,-37.76754],[144.9019775,-37.7672501],[144.901947,-37.7669792],[144.901886,-37.7663879],[144.9018707,-37.7660904],[144.9018402,-37.7658501],[144.9017639,-37.7656288],[144.9016418,-37.7654381],[144.9015656,-37.7653885],[144.9021912,-37.7647285],[144.9035492,-37.7648773],[144.9036255,-37.7644806],[144.9037933,-37.7635574],[144.9039307,-37.7635803],[144.9039612,-37.7633781],[144.9037628,-37.7631302],[144.9037933,-37.7630196],[144.9035339,-37.7629776],[144.9032288,-37.7629395],[144.9033203,-37.7623978],[144.9048309,-37.7625885]]]}},{"type":"Feature","properties":{"SA2_NAME":"North Melbourne","polygonId":54,"SA3_NAME":"Melbourne City","AREASQKM":3.2492,"fillColor":"#35B779","strokeColor":"#35B779","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.936264,-37.7994576],[144.9362793,-37.7994003],[144.9363708,-37.7989273],[144.9363708,-37.7986908],[144.9362946,-37.7983208],[144.9359131,-37.7967987],[144.9358826,-37.7966309],[144.9358521,-37.7963295],[144.9358215,-37.7960205],[144.9358215,-37.7958794],[144.9358063,-37.79533],[144.9358368,-37.7950783],[144.9356689,-37.7950706],[144.9359589,-37.7933273],[144.9362335,-37.7918587],[144.9362488,-37.7917404],[144.9362488,-37.7917175],[144.9362488,-37.7916679],[144.9362488,-37.7916489],[144.9362793,-37.7915993],[144.9362793,-37.7915878],[144.9362793,-37.7915497],[144.9362793,-37.7915382],[144.9362946,-37.7915077],[144.9362946,-37.7914886],[144.9363098,-37.79142],[144.9363098,-37.7914085],[144.9363098,-37.7913895],[144.9363251,-37.7913589],[144.9363251,-37.7913475],[144.9363403,-37.7913399],[144.9363403,-37.7913208],[144.9363556,-37.7912674],[144.9363556,-37.7912598],[144.9363556,-37.7912483],[144.9363708,-37.7911873],[144.9363708,-37.7911873],[144.9363861,-37.7911491],[144.9364014,-37.7911377],[144.9364014,-37.7911186],[144.9364014,-37.7911072],[144.9364166,-37.7910576],[144.9364319,-37.7910385],[144.9364319,-37.791008],[144.9364471,-37.7910004],[144.9364624,-37.7909698],[144.9364624,-37.7909279],[144.9364777,-37.7908974],[144.9364929,-37.7908783],[144.9364929,-37.7908478],[144.9365082,-37.7908401],[144.9365082,-37.7908287],[144.9365234,-37.7907982],[144.9365234,-37.7907677],[144.9365387,-37.7907486],[144.936554,-37.7907372],[144.9365692,-37.7906876],[144.9365692,-37.7906685],[144.9365845,-37.790638],[144.9365845,-37.7906303],[144.9365997,-37.7905884],[144.936615,-37.7905807],[144.9366302,-37.7905502],[144.9366302,-37.7905273],[144.9366455,-37.7905197],[144.9366608,-37.7904892],[144.9366608,-37.7904778],[144.936676,-37.7904472],[144.9366913,-37.7904282],[144.9366913,-37.7903976],[144.9367065,-37.79039],[144.9367218,-37.7903595],[144.9367371,-37.7903404],[144.9367523,-37.7903175],[144.9367523,-37.7903099],[144.9367981,-37.7902298],[144.9367981,-37.7902184],[144.9368134,-37.7901993],[144.9368439,-37.7901497],[144.9368591,-37.7901192],[144.9368591,-37.7901077],[144.9368744,-37.7900772],[144.9368896,-37.7900696],[144.9368896,-37.7900696],[144.9368896,-37.7900581],[144.9368896,-37.7900505],[144.9369202,-37.7900276],[144.9369202,-37.7900085],[144.9369202,-37.7900009],[144.9369354,-37.7899895],[144.9369507,-37.7899704],[144.9369507,-37.789959],[144.9369507,-37.789959],[144.9369812,-37.7899284],[144.9369965,-37.7898979],[144.9370117,-37.7898903],[144.9370117,-37.7898674],[144.937027,-37.7898598],[144.9370422,-37.7898407],[144.9370422,-37.7898293],[144.9370575,-37.7898178],[144.9370728,-37.7897873],[144.9370728,-37.7897797],[144.937088,-37.7897797],[144.9371033,-37.7897491],[144.9371033,-37.7897377],[144.9371338,-37.7896996],[144.9371796,-37.7896576],[144.9371796,-37.7896385],[144.9372101,-37.7896194],[144.9372101,-37.789608],[144.9372253,-37.7895775],[144.9372406,-37.7895584],[144.9372711,-37.7895279],[144.9372711,-37.7895203],[144.9373016,-37.7894897],[144.9373169,-37.7894707],[144.9373169,-37.7894707],[144.9373322,-37.7894478],[144.9373322,-37.7894478],[144.9373627,-37.7894173],[144.9373627,-37.7894173],[144.9373932,-37.7893906],[144.9373932,-37.7893906],[144.9373932,-37.7893791],[144.9374237,-37.78936],[144.9374237,-37.7893372],[144.937439,-37.7893372],[144.937439,-37.7893181],[144.937439,-37.7893105],[144.9374695,-37.789299],[144.9374695,-37.7892799],[144.9374847,-37.7892799],[144.9375,-37.7892609],[144.9375153,-37.789238],[144.9375305,-37.7892303],[144.9375305,-37.7892189],[144.9375458,-37.7892075],[144.937561,-37.7891884],[144.9375763,-37.7891808],[144.9375916,-37.7891693],[144.9376068,-37.7891388],[144.9376373,-37.7891083],[144.9376526,-37.7891083],[144.9376526,-37.7890892],[144.9376831,-37.7890701],[144.9376984,-37.7890472],[144.9377136,-37.7890396],[144.9377289,-37.7890205],[144.9377594,-37.7889977],[144.9377594,-37.7889786],[144.9377747,-37.7889786],[144.9378052,-37.7889404],[144.9378204,-37.7889404],[144.9381866,-37.7889709],[144.938385,-37.7887878],[144.9393158,-37.7881279],[144.9403534,-37.7876091],[144.9404907,-37.7878189],[144.9408722,-37.7883606],[144.9409943,-37.7884598],[144.9417114,-37.7890396],[144.9421539,-37.7893982],[144.9428864,-37.789978],[144.9432831,-37.7902908],[144.9444427,-37.7912178],[144.9457092,-37.7922173],[144.9465027,-37.7928581],[144.9474487,-37.7936096],[144.9484253,-37.7943878],[144.9486542,-37.7945709],[144.9488678,-37.7947502],[144.9492798,-37.7950706],[144.9497986,-37.7954788],[144.9511871,-37.7965889],[144.9515839,-37.7968979],[144.9520721,-37.7972908],[144.9521027,-37.7973175],[144.952652,-37.7977486],[144.9529114,-37.7979584],[144.953598,-37.7985077],[144.9539642,-37.7987976],[144.9545135,-37.7992401],[144.9550323,-37.7996483],[144.9560852,-37.8004875],[144.9566345,-37.80093],[144.9568176,-37.8010902],[144.9570923,-37.8013687],[144.9573212,-37.801548],[144.9574432,-37.8018074],[144.9578857,-37.8027687],[144.9580536,-37.8031273],[144.9584503,-37.8040276],[144.9595032,-37.8062897],[144.9584503,-37.8061409],[144.958252,-37.8061409],[144.9571075,-37.8059998],[144.9559784,-37.8058701],[144.9556732,-37.8077202],[144.9555817,-37.8082695],[144.9553833,-37.8094788],[144.9554596,-37.8096504],[144.9559326,-37.8106689],[144.9560394,-37.8109093],[144.9564362,-37.8117485],[144.9549408,-37.8121681],[144.9542694,-37.8123589],[144.9539185,-37.812458],[144.9533234,-37.8126183],[144.9530792,-37.8126907],[144.9526672,-37.812809],[144.951889,-37.8130302],[144.9514313,-37.8131599],[144.9503174,-37.8134689],[144.9492798,-37.8125572],[144.9482422,-37.8116493],[144.9481049,-37.8115273],[144.9478149,-37.8109474],[144.9460144,-37.8116379],[144.9459686,-37.8115692],[144.9456024,-37.8111076],[144.9451904,-37.8105888],[144.9447632,-37.8100586],[144.9443359,-37.8095207],[144.9438324,-37.8088875],[144.9433594,-37.8082695],[144.9428101,-37.8075676],[144.942627,-37.8073196],[144.9420013,-37.80653],[144.9418945,-37.8063202],[144.9418335,-37.8061485],[144.9414368,-37.8058395],[144.9412994,-37.8057098],[144.9412079,-37.8055992],[144.9410248,-37.805378],[144.9394989,-37.8043404],[144.937851,-37.8030777],[144.9365234,-37.8025589],[144.9358978,-37.8022804],[144.9359741,-37.8021698],[144.9360352,-37.8020897],[144.9362488,-37.8017082],[144.936203,-37.8013191],[144.9359741,-37.8008385],[144.9358521,-37.8004494],[144.9358215,-37.7999992],[144.9358978,-37.7994804],[144.9359131,-37.799408],[144.9360352,-37.7994308],[144.936264,-37.7994576]]]}},{"type":"Feature","properties":{"SA2_NAME":"Northcote","polygonId":42,"SA3_NAME":"Darebin - South","AREASQKM":6.145,"fillColor":"#37B878","strokeColor":"#37B878","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9844666,-37.7675095],[144.9844666,-37.7673302],[144.9845123,-37.767189],[144.9847717,-37.7669792],[144.9848938,-37.7669373],[144.9851532,-37.766819],[144.9855652,-37.7664185],[144.9855499,-37.7661972],[144.9854889,-37.7660103],[144.9852142,-37.765728],[144.9848022,-37.7654076],[144.9843445,-37.7651291],[144.9842834,-37.765049],[144.9841919,-37.7649574],[144.9839783,-37.7646484],[144.9838867,-37.7641106],[144.9838257,-37.7639809],[144.9836426,-37.7638397],[144.9835205,-37.7637978],[144.983078,-37.7636604],[144.9824982,-37.7636375],[144.9822693,-37.763588],[144.9819183,-37.7633896],[144.9816895,-37.7631989],[144.9815521,-37.762989],[144.9814453,-37.7628288],[144.981369,-37.7626305],[144.981369,-37.7623787],[144.9815674,-37.7622108],[144.9818573,-37.7621384],[144.9821014,-37.7621307],[144.9824677,-37.7621574],[144.9826202,-37.7621078],[144.9828491,-37.7620506],[144.9830322,-37.7619476],[144.983139,-37.7618179],[144.9831543,-37.7615585],[144.9830322,-37.7614174],[144.9828339,-37.7612572],[144.9824982,-37.7609596],[144.9820862,-37.7606277],[144.9818573,-37.7603073],[144.9816132,-37.7599106],[144.9813843,-37.7595482],[144.9811401,-37.7591896],[144.9809418,-37.7588882],[144.9808502,-37.75877],[144.9806366,-37.7583275],[144.9804535,-37.7580376],[144.9802551,-37.7576981],[144.9802094,-37.7574196],[144.9801636,-37.7572899],[144.9806824,-37.7573509],[144.9837494,-37.7577209],[144.9844971,-37.7577972],[144.98526,-37.7578773],[144.9854126,-37.7578773],[144.9879913,-37.7581787],[144.9878082,-37.7590981],[144.9876251,-37.7600479],[144.9875031,-37.7607307],[144.987442,-37.7610779],[144.987381,-37.7613602],[144.9873657,-37.7614288],[144.992691,-37.7620506],[144.9927521,-37.7617989],[144.993454,-37.761879],[144.994339,-37.7619781],[144.9950104,-37.7620583],[144.995224,-37.7620888],[144.9956665,-37.7621384],[144.9963531,-37.7622185],[144.9969025,-37.7622795],[144.9977112,-37.7624397],[144.998764,-37.762558],[144.9992828,-37.762619],[144.9993439,-37.7626305],[144.9999084,-37.7626877],[144.9998016,-37.7632599],[145.0003052,-37.7633095],[145.0004272,-37.7633209],[145.0010223,-37.7633896],[145.0018616,-37.7634773],[145.0023193,-37.7635307],[145.0027924,-37.763588],[145.0032196,-37.7636299],[145.0042419,-37.7637482],[145.0053711,-37.7638702],[145.006546,-37.7639999],[145.0075073,-37.7641106],[145.0087585,-37.7642479],[145.0104523,-37.7644272],[145.0122528,-37.7646179],[145.015976,-37.7650185],[145.0170288,-37.7651291],[145.0168762,-37.7660179],[145.0166931,-37.7670975],[145.0177917,-37.7672081],[145.0176239,-37.7681885],[145.0175323,-37.7687073],[145.0174103,-37.7687492],[145.0170135,-37.7687073],[145.0169525,-37.7686501],[145.016861,-37.7692986],[145.0167694,-37.7698402],[145.0167389,-37.7700195],[145.0166626,-37.7704887],[145.0166016,-37.7708282],[145.0165863,-37.7709274],[145.01651,-37.7713699],[145.0164948,-37.7714081],[145.0164795,-37.7715378],[145.0164642,-37.7716179],[145.0164185,-37.7719078],[145.0163574,-37.7723083],[145.0162811,-37.7727585],[145.0162659,-37.7728081],[145.0162659,-37.7728195],[145.0162506,-37.7729073],[145.0162048,-37.7732086],[145.0161133,-37.7737198],[145.016098,-37.7738304],[145.0160675,-37.7740593],[145.015564,-37.7739983],[145.015564,-37.7740898],[145.0152588,-37.7757874],[145.0152435,-37.7758789],[145.0152435,-37.7759705],[145.0149689,-37.7773285],[145.0147247,-37.7786407],[145.0158539,-37.7787704],[145.0157776,-37.7791672],[145.0151978,-37.7791672],[145.0151672,-37.7793808],[145.0149231,-37.7807808],[145.0149231,-37.7808685],[145.0149078,-37.7809601],[145.0148315,-37.7813187],[145.0147247,-37.7820396],[145.0145874,-37.7828674],[145.0144958,-37.78339],[145.0143738,-37.7833595],[145.0143738,-37.7833786],[145.0143738,-37.7833672],[145.0142975,-37.7838287],[145.0128021,-37.7841072],[145.0125732,-37.7841492],[145.0123138,-37.7841873],[145.0122528,-37.7841873],[145.0120697,-37.7842102],[145.0118103,-37.7842293],[145.0115662,-37.7842407],[145.0113068,-37.7842407],[145.0110626,-37.7842293],[145.010849,-37.7842178],[145.0108032,-37.7842178],[145.0103607,-37.7841873],[145.0101929,-37.7841682],[145.0100403,-37.7841492],[145.009613,-37.7840691],[145.0093689,-37.7840309],[145.00914,-37.7840004],[145.0088959,-37.7839699],[145.008667,-37.7839508],[145.0083923,-37.7839279],[145.0081329,-37.7839088],[145.0078583,-37.7838974],[145.0075684,-37.7838974],[145.0072937,-37.7838974],[145.0069885,-37.7839203],[145.0066833,-37.7839394],[145.0063782,-37.7839584],[145.006073,-37.7840004],[145.0059204,-37.7840195],[145.0057831,-37.7840385],[145.0054932,-37.7840881],[145.005188,-37.7841377],[145.0047913,-37.7842293],[145.0042114,-37.784359],[145.0039978,-37.7840691],[145.0037231,-37.7837296],[145.0035095,-37.7834778],[145.0034027,-37.7833672],[145.0031433,-37.7832184],[145.0027771,-37.7830505],[145.0026093,-37.7830009],[145.0022888,-37.7829895],[145.0018005,-37.7830582],[145.0016785,-37.7831306],[145.0014191,-37.7833786],[145.0011444,-37.7837181],[145.0009308,-37.7839394],[145.0007935,-37.7841072],[145.0005798,-37.7843208],[145.0005341,-37.7843704],[145.000351,-37.7845573],[144.9999237,-37.7848396],[144.9995117,-37.7851295],[144.9989777,-37.785408],[144.9987335,-37.7854691],[144.9985199,-37.7855377],[144.9982452,-37.7856102],[144.997818,-37.7856293],[144.9975281,-37.7855682],[144.9971924,-37.7854576],[144.9964447,-37.7852402],[144.9963837,-37.7851982],[144.9963531,-37.7851906],[144.9962158,-37.7851181],[144.996048,-37.7850189],[144.9958191,-37.7848396],[144.9956207,-37.7847099],[144.9955902,-37.7846909],[144.9952393,-37.7844505],[144.994751,-37.7840004],[144.9945526,-37.7838593],[144.9941711,-37.7835274],[144.9936829,-37.7832298],[144.9933014,-37.7830505],[144.9931793,-37.7830086],[144.9925842,-37.7828484],[144.9923706,-37.7827301],[144.9922333,-37.7826805],[144.9921112,-37.7826309],[144.9920044,-37.7825279],[144.9919586,-37.7823486],[144.9919586,-37.7820091],[144.9918365,-37.7815781],[144.991806,-37.7812195],[144.9918213,-37.7810593],[144.9918823,-37.7809486],[144.9919739,-37.7807007],[144.9919891,-37.780529],[144.9919891,-37.780468],[144.9918671,-37.7802391],[144.9917603,-37.7801476],[144.9917145,-37.7801208],[144.9914398,-37.7800484],[144.9912109,-37.7800179],[144.9908447,-37.7799683],[144.9906616,-37.7799377],[144.9903564,-37.7798386],[144.990097,-37.7796478],[144.9900208,-37.7795296],[144.9899597,-37.7793274],[144.9899292,-37.7792587],[144.9899139,-37.7790375],[144.9898834,-37.7785301],[144.9898529,-37.7784195],[144.9898529,-37.778389],[144.9898529,-37.7782898],[144.9898224,-37.7781601],[144.9897614,-37.7779694],[144.9897308,-37.7778702],[144.9896393,-37.777729],[144.9895172,-37.7775383],[144.9894562,-37.7774696],[144.9893951,-37.7773781],[144.989212,-37.7772408],[144.9891052,-37.7771492],[144.9890594,-37.7771072],[144.9888,-37.7769203],[144.9886932,-37.7767906],[144.9885712,-37.7765503],[144.9885101,-37.7763977],[144.9884796,-37.7762184],[144.9884796,-37.7760582],[144.9885559,-37.7758598],[144.9886322,-37.7757072],[144.9886627,-37.7753372],[144.9885864,-37.7751579],[144.9885101,-37.7750778],[144.9882355,-37.774929],[144.9879608,-37.77491],[144.9875793,-37.7749176],[144.9873657,-37.7748604],[144.9872437,-37.7747498],[144.9870911,-37.7746582],[144.9868622,-37.7743683],[144.9868317,-37.773838],[144.9868011,-37.7737083],[144.9866333,-37.773468],[144.9864502,-37.7732277],[144.9861603,-37.7729301],[144.9857788,-37.7725983],[144.9855347,-37.7723579],[144.9854279,-37.7722473],[144.9850311,-37.7719002],[144.9848633,-37.7716789],[144.9845123,-37.7713394],[144.9844513,-37.7712288],[144.9842529,-37.7707405],[144.9841919,-37.7703285],[144.9841614,-37.7700996],[144.9841461,-37.7697983],[144.9842072,-37.7696609],[144.9842224,-37.769558],[144.9842224,-37.7694206],[144.9842529,-37.7691498],[144.9843597,-37.7685089],[144.9844055,-37.7681808],[144.9844513,-37.7677383],[144.9844666,-37.7675095]]]}},{"type":"Feature","properties":{"SA2_NAME":"Parkville","polygonId":55,"SA3_NAME":"Melbourne City","AREASQKM":4.0492,"fillColor":"#46C06F","strokeColor":"#46C06F","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9389496,-37.7815704],[144.9387207,-37.7808495],[144.9377136,-37.7791405],[144.9370728,-37.7777672],[144.9373322,-37.7778091],[144.9379425,-37.7778893],[144.9378204,-37.7775803],[144.9377289,-37.7773476],[144.9376526,-37.7771797],[144.9376984,-37.7771606],[144.9377747,-37.7770996],[144.9378357,-37.7770386],[144.937912,-37.7769699],[144.9380188,-37.7768593],[144.9381256,-37.7767372],[144.9382019,-37.7765884],[144.9382324,-37.7764778],[144.9382935,-37.7763786],[144.9383392,-37.77631],[144.9383545,-37.7762794],[144.9384003,-37.7762108],[144.9384918,-37.7761192],[144.9385223,-37.7759972],[144.9385834,-37.7757874],[144.9386139,-37.7757072],[144.9386292,-37.7756195],[144.9387512,-37.7754402],[144.9391632,-37.7754974],[144.9398041,-37.7755775],[144.9405975,-37.7756691],[144.9407959,-37.7756882],[144.9421844,-37.7758598],[144.9427032,-37.7759285],[144.9430847,-37.7759705],[144.9451294,-37.7762184],[144.9470367,-37.7764473],[144.9478912,-37.7765503],[144.9494019,-37.7767296],[144.9494324,-37.7767372],[144.949646,-37.7767601],[144.9502869,-37.7768402],[144.9516602,-37.7770081],[144.9523926,-37.7770882],[144.9531403,-37.7771873],[144.9541626,-37.7773094],[144.9551239,-37.77742],[144.9564514,-37.7775879],[144.9580841,-37.7777786],[144.959259,-37.7779198],[144.9598999,-37.7779999],[144.9602203,-37.778038],[144.9598999,-37.7805176],[144.9597473,-37.7817307],[144.959671,-37.7824173],[144.9595337,-37.7834778],[144.9593811,-37.7847176],[144.9592438,-37.7859383],[144.9592133,-37.7862206],[144.9590912,-37.7871284],[144.9590302,-37.7877007],[144.9588776,-37.7889481],[144.9587402,-37.7898674],[144.9588928,-37.7898903],[144.9590302,-37.7899208],[144.9591675,-37.789978],[144.9592743,-37.7900505],[144.9593201,-37.7901306],[144.9593811,-37.7902603],[144.9594727,-37.7903976],[144.9595642,-37.7905388],[144.959671,-37.7906685],[144.9597931,-37.7907982],[144.9599152,-37.7909584],[144.960022,-37.791069],[144.960083,-37.7911072],[144.9601898,-37.7911987],[144.9603119,-37.7912979],[144.9604797,-37.79142],[144.9606323,-37.7915077],[144.9607697,-37.7915878],[144.960968,-37.7916794],[144.9610596,-37.791729],[144.9612274,-37.79179],[144.96138,-37.7918396],[144.9615631,-37.7918892],[144.9616699,-37.7918892],[144.9620209,-37.7919083],[144.9625244,-37.7919884],[144.9628601,-37.7920685],[144.9633026,-37.7922401],[144.9633331,-37.7922478],[144.9634705,-37.7923279],[144.963623,-37.7924004],[144.9637451,-37.7924881],[144.9638824,-37.7925797],[144.963974,-37.7926483],[144.9641113,-37.7927284],[144.9640808,-37.7927399],[144.9642334,-37.7928772],[144.964386,-37.7930489],[144.9644928,-37.7931595],[144.9644928,-37.7931709],[144.9646149,-37.7933388],[144.9647064,-37.793499],[144.9647675,-37.7936172],[144.9648285,-37.7937508],[144.9648895,-37.7939301],[144.96492,-37.7940598],[144.9649506,-37.794239],[144.9649506,-37.7943802],[144.9649658,-37.7945595],[144.9647217,-37.7961578],[144.9645996,-37.7968407],[144.9643097,-37.7984772],[144.9642792,-37.7986298],[144.9642029,-37.7991104],[144.9639587,-37.8004189],[144.9624939,-37.8002586],[144.9610138,-37.8001099],[144.9598999,-37.7999802],[144.9588165,-37.7998581],[144.95755,-37.7997093],[144.9574432,-37.8005791],[144.9573212,-37.801548],[144.9570923,-37.8013687],[144.9568176,-37.8010902],[144.9566345,-37.80093],[144.9560852,-37.8004875],[144.9550323,-37.7996483],[144.9545135,-37.7992401],[144.9539642,-37.7987976],[144.953598,-37.7985077],[144.9529114,-37.7979584],[144.952652,-37.7977486],[144.9521027,-37.7973175],[144.9520721,-37.7972908],[144.9515839,-37.7968979],[144.9511871,-37.7965889],[144.9497986,-37.7954788],[144.9492798,-37.7950706],[144.9488678,-37.7947502],[144.9486542,-37.7945709],[144.9484253,-37.7943878],[144.9474487,-37.7936096],[144.9465027,-37.7928581],[144.9457092,-37.7922173],[144.9444427,-37.7912178],[144.9432831,-37.7902908],[144.9428864,-37.789978],[144.9421539,-37.7893982],[144.9417114,-37.7890396],[144.9409943,-37.7884598],[144.9408722,-37.7883606],[144.9404907,-37.7878189],[144.9403534,-37.7876091],[144.9400635,-37.7872009],[144.9399109,-37.7870102],[144.9402008,-37.7868309],[144.9402771,-37.7866592],[144.9402618,-37.786438],[144.9401703,-37.7860985],[144.9398956,-37.7855492],[144.939621,-37.7849388],[144.9394836,-37.7843399],[144.93927,-37.7833977],[144.9391632,-37.7825775],[144.9390106,-37.7817688],[144.9389496,-37.7815704]]]}},{"type":"Feature","properties":{"SA2_NAME":"Pascoe Vale South","polygonId":40,"SA3_NAME":"Brunswick - Coburg","AREASQKM":2.9887,"fillColor":"#48C16E","strokeColor":"#48C16E","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9326324,-37.74226],[144.9324951,-37.74226],[144.9319458,-37.7422676],[144.9318237,-37.7422295],[144.9316406,-37.7421608],[144.9315338,-37.7420578],[144.9302216,-37.7403297],[144.9300995,-37.7401772],[144.9299622,-37.7399673],[144.9299469,-37.7397995],[144.9299622,-37.7386208],[144.9299622,-37.7381783],[144.9298706,-37.7379494],[144.9297943,-37.7378807],[144.9296722,-37.7378387],[144.9293671,-37.7377701],[144.9291992,-37.7377281],[144.9289398,-37.7376289],[144.9288483,-37.7375107],[144.928833,-37.7373886],[144.9288025,-37.7371597],[144.9286041,-37.7355881],[144.9285431,-37.7352791],[144.9289398,-37.73526],[144.9290619,-37.7352791],[144.9290009,-37.7348976],[144.928772,-37.7336197],[144.9288635,-37.7336273],[144.9290466,-37.7336578],[144.9293976,-37.7336998],[144.9305725,-37.7338486],[144.9310913,-37.7339172],[144.9332123,-37.734169],[144.9341888,-37.7342873],[144.9351959,-37.7344093],[144.9378815,-37.7347298],[144.939209,-37.73489],[144.9411621,-37.7351189],[144.9427795,-37.7353172],[144.9447021,-37.7355499],[144.9452667,-37.7356071],[144.9455109,-37.7356377],[144.9468536,-37.7357788],[144.947937,-37.7358894],[144.9490509,-37.7360001],[144.948761,-37.737648],[144.9484711,-37.7394981],[144.9478302,-37.7394409],[144.9475098,-37.7412109],[144.9472046,-37.7430077],[144.946991,-37.7443008],[144.9468994,-37.7447701],[144.9465637,-37.7467804],[144.9470673,-37.7468491],[144.9472504,-37.7468681],[144.9472504,-37.7469101],[144.9469604,-37.7484474],[144.946701,-37.7497177],[144.9463806,-37.7496796],[144.9462433,-37.7505875],[144.9460754,-37.7514305],[144.9457397,-37.7532692],[144.9446106,-37.7531281],[144.9434204,-37.7529984],[144.9424896,-37.7528877],[144.9419556,-37.7528305],[144.9408112,-37.7526894],[144.9387207,-37.752449],[144.9382324,-37.752388],[144.9378967,-37.7523499],[144.9376678,-37.7523308],[144.937561,-37.7523193],[144.9372406,-37.7522774],[144.9365234,-37.7521973],[144.9360504,-37.75214],[144.9351807,-37.7520409],[144.9345703,-37.7519608],[144.9343109,-37.7519302],[144.9338531,-37.7518806],[144.9333649,-37.7518196],[144.9320526,-37.7516708],[144.931076,-37.7515488],[144.9301147,-37.7514381],[144.9294891,-37.7513695],[144.9291534,-37.7513275],[144.9284973,-37.7512474],[144.9277802,-37.7511673],[144.9271393,-37.7510872],[144.9269409,-37.7510681],[144.9269867,-37.7510376],[144.9270325,-37.750988],[144.9270935,-37.7509384],[144.9271088,-37.7508583],[144.9272003,-37.7507172],[144.9272614,-37.7505989],[144.9273224,-37.7505302],[144.9273529,-37.7504692],[144.9273987,-37.7503891],[144.9274445,-37.7503204],[144.9274597,-37.7502785],[144.927475,-37.7502174],[144.927475,-37.7501183],[144.927475,-37.7499809],[144.9274597,-37.7498474],[144.9274292,-37.7497673],[144.9273987,-37.7496796],[144.9273529,-37.7495995],[144.9273071,-37.7495003],[144.9273529,-37.7494087],[144.9273987,-37.7492676],[144.9274902,-37.7491608],[144.9276276,-37.7490387],[144.9277191,-37.7489891],[144.9278717,-37.74897],[144.9280396,-37.74897],[144.9281769,-37.74897],[144.9282837,-37.7489281],[144.92836,-37.748848],[144.9283905,-37.7487907],[144.9284515,-37.7486992],[144.9285126,-37.7486076],[144.9285736,-37.7485008],[144.9286194,-37.7483978],[144.9286499,-37.7483101],[144.9286804,-37.7482109],[144.9287109,-37.7481003],[144.9287872,-37.7479706],[144.9289093,-37.7478485],[144.9290314,-37.7477379],[144.9291229,-37.7476692],[144.9291992,-37.7475891],[144.9291992,-37.7475471],[144.9291992,-37.7474709],[144.929184,-37.7473907],[144.9291229,-37.7473297],[144.9289703,-37.7473297],[144.9287109,-37.7473297],[144.9285126,-37.7472878],[144.92836,-37.7472],[144.928299,-37.7471275],[144.9282837,-37.7470703],[144.9282684,-37.7469902],[144.9282684,-37.7468987],[144.9282837,-37.746788],[144.9282837,-37.7466507],[144.9283295,-37.7464676],[144.9283295,-37.7463684],[144.9283447,-37.7462387],[144.92836,-37.746048],[144.9283752,-37.7459793],[144.9283905,-37.7458801],[144.9285431,-37.7457085],[144.928772,-37.7455597],[144.9291534,-37.7454185],[144.9294128,-37.745369],[144.9296722,-37.745388],[144.9303436,-37.7454987],[144.9307709,-37.7455406],[144.9311371,-37.7455482],[144.9315643,-37.7455177],[144.9317627,-37.7454376],[144.9318542,-37.7454185],[144.9320068,-37.745369],[144.932312,-37.7454109],[144.9326019,-37.7454605],[144.9328308,-37.7454605],[144.9329681,-37.7454109],[144.9330597,-37.7453079],[144.9331055,-37.7451897],[144.9331207,-37.7451096],[144.9331512,-37.745018],[144.9331818,-37.7449188],[144.9332123,-37.7448883],[144.9332428,-37.7448387],[144.9333649,-37.7447701],[144.9335175,-37.7446976],[144.9338531,-37.7445908],[144.9339447,-37.7444687],[144.9342651,-37.7444191],[144.9344788,-37.7443581],[144.9346313,-37.7442398],[144.9347229,-37.7440491],[144.9347229,-37.7439194],[144.9345703,-37.7437096],[144.934021,-37.7431679],[144.9339294,-37.7430878],[144.933609,-37.7426109],[144.9334869,-37.7424393],[144.9333344,-37.7423477],[144.9331818,-37.7422791],[144.9330292,-37.7422485],[144.9326324,-37.74226]]]}},{"type":"Feature","properties":{"SA2_NAME":"Port Melbourne","polygonId":61,"SA3_NAME":"Port Phillip","AREASQKM":2.7894,"fillColor":"#54C568","strokeColor":"#54C568","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9169006,-37.8365402],[144.9171906,-37.8364792],[144.9198608,-37.835968],[144.9205933,-37.8358307],[144.9221497,-37.8355293],[144.9224243,-37.8354797],[144.9248199,-37.8350105],[144.9249725,-37.83498],[144.9264679,-37.8346901],[144.9275665,-37.8344803],[144.9296417,-37.8340683],[144.9309387,-37.8338203],[144.9327545,-37.8334579],[144.9351196,-37.8330193],[144.9364471,-37.8327675],[144.9374542,-37.8325806],[144.9382782,-37.8324089],[144.9385834,-37.8323593],[144.9400787,-37.832058],[144.9411774,-37.8318481],[144.9416504,-37.831749],[144.9422913,-37.8316307],[144.9441833,-37.8312607],[144.9442139,-37.8312607],[144.9444427,-37.8312607],[144.9456787,-37.8305588],[144.946167,-37.8309784],[144.9464264,-37.8311501],[144.9466858,-37.8313789],[144.9470673,-37.8317108],[144.9474335,-37.8320389],[144.9479523,-37.832489],[144.9487762,-37.8332291],[144.949646,-37.8339996],[144.9497528,-37.8340874],[144.9493561,-37.8349495],[144.9488831,-37.835968],[144.9488373,-37.8360901],[144.9487915,-37.8362007],[144.9485168,-37.83675],[144.9484711,-37.8368492],[144.9480743,-37.8376999],[144.9479828,-37.8378983],[144.9474792,-37.8389702],[144.9468994,-37.8401985],[144.9465179,-37.8410072],[144.9455719,-37.8430405],[144.9449005,-37.8437576],[144.9442749,-37.844429],[144.9440002,-37.8447304],[144.9434662,-37.8453102],[144.9432678,-37.84552],[144.942688,-37.8460884],[144.942215,-37.8459473],[144.9419403,-37.8458405],[144.9417572,-37.8457985],[144.9412842,-37.8456001],[144.9410858,-37.8455696],[144.9409637,-37.84552],[144.9406433,-37.8454285],[144.9404297,-37.8453674],[144.940094,-37.8452377],[144.9399261,-37.8451805],[144.9398804,-37.8451195],[144.9397888,-37.8449478],[144.9396973,-37.8447876],[144.9392853,-37.8445206],[144.9390869,-37.8443794],[144.9389648,-37.8443184],[144.938797,-37.8442688],[144.9386444,-37.8442078],[144.9381409,-37.8439484],[144.9380035,-37.8438988],[144.9375916,-37.8437195],[144.9375153,-37.8437805],[144.9374695,-37.8437576],[144.9373474,-37.8438797],[144.9370728,-37.843689],[144.9371033,-37.8436584],[144.9370422,-37.8436089],[144.9371185,-37.8435478],[144.9371185,-37.8433495],[144.9370728,-37.8432808],[144.9365234,-37.8429794],[144.936203,-37.8428078],[144.9360504,-37.84272],[144.9358521,-37.8426476],[144.9355927,-37.8425407],[144.935257,-37.8425102],[144.9349213,-37.8424072],[144.9347229,-37.84235],[144.9344635,-37.8423004],[144.9342804,-37.8422394],[144.934082,-37.8422089],[144.9339905,-37.8421974],[144.9333496,-37.8438301],[144.9318848,-37.8432884],[144.9315338,-37.8443489],[144.9305878,-37.847168],[144.9299927,-37.8473587],[144.9298401,-37.8473206],[144.9298248,-37.84729],[144.9309998,-37.8438683],[144.9312592,-37.8430099],[144.930542,-37.8428574],[144.9307251,-37.8423004],[144.9303894,-37.8422279],[144.929184,-37.8419685],[144.9292908,-37.841629],[144.9279175,-37.8413277],[144.9271545,-37.84132],[144.9258423,-37.8451195],[144.9252319,-37.8449783],[144.9269104,-37.8400307],[144.9267273,-37.8400002],[144.9258423,-37.8398399],[144.9249268,-37.8400879],[144.9242706,-37.8401604],[144.9238739,-37.8399887],[144.9234619,-37.8398399],[144.9233704,-37.8397102],[144.9225311,-37.8396988],[144.9217834,-37.8396606],[144.9210968,-37.8396492],[144.9204102,-37.8396301],[144.9197845,-37.8396492],[144.9190216,-37.8396606],[144.9185181,-37.8396797],[144.9183807,-37.8397408],[144.9181061,-37.8398285],[144.9172821,-37.8400803],[144.9165802,-37.8402977],[144.9158936,-37.8406372],[144.9157257,-37.8406181],[144.9157104,-37.8406296],[144.9155121,-37.8407097],[144.9152374,-37.8408203],[144.9149323,-37.8409996],[144.914856,-37.8410378],[144.9144592,-37.8413086],[144.9136963,-37.8417778],[144.9135895,-37.8418274],[144.9133911,-37.8419609],[144.9133301,-37.8420792],[144.9131927,-37.8422775],[144.9129333,-37.841938],[144.9130096,-37.8418999],[144.9127045,-37.8415108],[144.9124603,-37.8409882],[144.9152374,-37.8395004],[144.9152527,-37.8394394],[144.9149933,-37.8387184],[144.9153748,-37.8386307],[144.9154205,-37.8386192],[144.9151764,-37.8379173],[144.9149017,-37.8370209],[144.9148407,-37.8369408],[144.9169006,-37.8365402]]]}},{"type":"Feature","properties":{"SA2_NAME":"Port Melbourne Industrial","polygonId":62,"SA3_NAME":"Port Phillip","AREASQKM":6.8694,"fillColor":"#54C568","strokeColor":"#54C568","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9016571,-37.8260803],[144.9026337,-37.8253288],[144.9034729,-37.8246994],[144.9042206,-37.8241692],[144.9054108,-37.82304],[144.9055634,-37.8228798],[144.9070282,-37.8232994],[144.9082336,-37.8227272],[144.9095154,-37.8222275],[144.9098511,-37.8220406],[144.9101105,-37.8219872],[144.9104614,-37.8218307],[144.9109802,-37.8217201],[144.9113312,-37.8216095],[144.9114532,-37.8216209],[144.9116821,-37.8214874],[144.9119415,-37.8214302],[144.9120026,-37.8214378],[144.9128723,-37.8211098],[144.9128571,-37.8210373],[144.9157867,-37.82061],[144.9173889,-37.8203773],[144.9197693,-37.8200302],[144.9203644,-37.8200302],[144.9247894,-37.8199806],[144.9251251,-37.8200073],[144.9251404,-37.8199806],[144.9255524,-37.8200188],[144.9255524,-37.8200607],[144.9263458,-37.8201408],[144.9263611,-37.8201103],[144.9268036,-37.8201599],[144.9268036,-37.8201904],[144.9269257,-37.8202095],[144.9269409,-37.820179],[144.9271393,-37.8201981],[144.9271393,-37.8202286],[144.9279785,-37.8203201],[144.9279633,-37.8204002],[144.9309387,-37.8207207],[144.9309692,-37.8206406],[144.931427,-37.8206902],[144.9314117,-37.8207893],[144.9318237,-37.8208275],[144.9314728,-37.8217888],[144.9327087,-37.8220482],[144.9364929,-37.8228378],[144.9367828,-37.8228989],[144.9371338,-37.8229408],[144.937851,-37.8230896],[144.9376984,-37.8236694],[144.9395447,-37.8252602],[144.9397736,-37.8254585],[144.9400787,-37.8257294],[144.9403381,-37.8257294],[144.9405212,-37.8257294],[144.9414368,-37.8257904],[144.941391,-37.8259773],[144.9412994,-37.8260689],[144.9411621,-37.8261185],[144.9410248,-37.8261795],[144.9407959,-37.8263397],[144.9408112,-37.8263588],[144.941864,-37.8272705],[144.9425201,-37.8278275],[144.9438629,-37.8289795],[144.944809,-37.8298073],[144.9450989,-37.8300591],[144.9456787,-37.8305588],[144.9444427,-37.8312607],[144.9442139,-37.8312607],[144.9441833,-37.8312607],[144.9422913,-37.8316307],[144.9416504,-37.831749],[144.9411774,-37.8318481],[144.9400787,-37.832058],[144.9385834,-37.8323593],[144.9382782,-37.8324089],[144.9374542,-37.8325806],[144.9364471,-37.8327675],[144.9351196,-37.8330193],[144.9327545,-37.8334579],[144.9309387,-37.8338203],[144.9296417,-37.8340683],[144.9275665,-37.8344803],[144.9264679,-37.8346901],[144.9249725,-37.83498],[144.9248199,-37.8350105],[144.9224243,-37.8354797],[144.9221497,-37.8355293],[144.9205933,-37.8358307],[144.9198608,-37.835968],[144.9171906,-37.8364792],[144.9169006,-37.8365402],[144.9148407,-37.8369408],[144.9149017,-37.8370209],[144.9151764,-37.8379173],[144.9154205,-37.8386192],[144.9153748,-37.8386307],[144.9149933,-37.8387184],[144.9152527,-37.8394394],[144.9152374,-37.8395004],[144.9124603,-37.8409882],[144.9127045,-37.8415108],[144.9130096,-37.8418999],[144.9129333,-37.841938],[144.9131927,-37.8422775],[144.9133301,-37.8420792],[144.9133759,-37.8422508],[144.913681,-37.8428307],[144.914032,-37.843338],[144.914093,-37.8434105],[144.9141846,-37.8435783],[144.9141846,-37.84375],[144.9141846,-37.8439407],[144.9142609,-37.8441086],[144.9143829,-37.8441887],[144.9144745,-37.8442078],[144.9145813,-37.8442383],[144.9147034,-37.8443184],[144.9147034,-37.8444405],[144.9145508,-37.8445091],[144.9143524,-37.8446503],[144.914032,-37.8448181],[144.9138031,-37.8449478],[144.9135132,-37.8450775],[144.9133453,-37.84515],[144.9133606,-37.8451576],[144.9131927,-37.8452377],[144.9129944,-37.8453484],[144.9128113,-37.8453979],[144.912735,-37.8454704],[144.912674,-37.8455887],[144.9126129,-37.8456497],[144.9125671,-37.845829],[144.9127045,-37.8460579],[144.9129639,-37.8463783],[144.9133911,-37.8469391],[144.9135284,-37.8470573],[144.9138336,-37.8474808],[144.9141693,-37.8479805],[144.9143372,-37.8482094],[144.9144897,-37.8484192],[144.914505,-37.8484802],[144.9144592,-37.8485909],[144.9140625,-37.8488007],[144.9138336,-37.8488998],[144.91362,-37.8490105],[144.9134216,-37.8490906],[144.9133301,-37.8491478],[144.9131317,-37.8492203],[144.9129791,-37.8492775],[144.912674,-37.8494301],[144.9125519,-37.8494186],[144.9124908,-37.8494492],[144.9120941,-37.8489304],[144.9119415,-37.848999],[144.9103851,-37.8469391],[144.9088287,-37.8448677],[144.9085846,-37.8449898],[144.9085388,-37.8449898],[144.9085236,-37.8449783],[144.9082489,-37.8445206],[144.9078369,-37.8432007],[144.9075928,-37.8432579],[144.9074707,-37.8432007],[144.906723,-37.8419609],[144.9065704,-37.8420105],[144.9065399,-37.8420105],[144.9064026,-37.8417778],[144.9064331,-37.8417282],[144.9061279,-37.8417091],[144.9062042,-37.8412781],[144.9064789,-37.8413086],[144.9064941,-37.8411903],[144.9061127,-37.840538],[144.9059906,-37.84058],[144.9057312,-37.8401489],[144.9055634,-37.8401985],[144.9055634,-37.840168],[144.905426,-37.8401794],[144.905304,-37.8402176],[144.9049072,-37.8403206],[144.9046783,-37.8404007],[144.9039764,-37.8407097],[144.9035797,-37.8409081],[144.9033966,-37.8411484],[144.9032898,-37.8412285],[144.9032135,-37.8412971],[144.9032135,-37.8413887],[144.9032745,-37.8415985],[144.9034882,-37.8419304],[144.9038239,-37.8425674],[144.9041748,-37.8431702],[144.9043121,-37.8434677],[144.9044189,-37.8436508],[144.9046173,-37.8438492],[144.9046326,-37.8439178],[144.9047546,-37.844059],[144.9048615,-37.8442307],[144.904953,-37.8444786],[144.9050598,-37.8446884],[144.9051514,-37.8448105],[144.9052734,-37.8450089],[144.9055481,-37.8455009],[144.905777,-37.8458672],[144.9058533,-37.8460388],[144.9062042,-37.8466606],[144.9063263,-37.8467903],[144.9063416,-37.8469009],[144.9062805,-37.8469772],[144.9057312,-37.8473282],[144.9055786,-37.8474388],[144.9054871,-37.847538],[144.9055023,-37.8476601],[144.9056396,-37.8478203],[144.9057922,-37.8479004],[144.9059296,-37.8481102],[144.9064484,-37.848629],[144.9069977,-37.8491592],[144.9072418,-37.8494301],[144.9072418,-37.8494987],[144.9072113,-37.8495178],[144.907135,-37.8494797],[144.9068604,-37.8492393],[144.9064331,-37.8487701],[144.9060974,-37.8484497],[144.9056396,-37.8480072],[144.9051666,-37.847538],[144.9048157,-37.8471603],[144.9044037,-37.8467674],[144.9039917,-37.8463478],[144.9036407,-37.8460197],[144.9034576,-37.8458176],[144.903183,-37.8455582],[144.9023132,-37.8446274],[144.9020844,-37.8443909],[144.9019623,-37.8441505],[144.9016113,-37.8436394],[144.9009247,-37.8426971],[144.9008331,-37.8425903],[144.9002991,-37.8423576],[144.9001923,-37.8421707],[144.9000244,-37.8419991],[144.8999023,-37.8418007],[144.899704,-37.8415375],[144.8996582,-37.8414078],[144.8995972,-37.8412895],[144.8994904,-37.8411598],[144.8993225,-37.8410988],[144.8993835,-37.8409691],[144.8993683,-37.8407974],[144.8992615,-37.840519],[144.8991547,-37.8403893],[144.8983612,-37.841198],[144.8981171,-37.8407707],[144.897644,-37.8397408],[144.8974304,-37.8390198],[144.8972015,-37.8383408],[144.89711,-37.8375206],[144.8970795,-37.836338],[144.89711,-37.8349495],[144.89711,-37.8336792],[144.8971252,-37.8328094],[144.8971405,-37.8326302],[144.8972321,-37.8320198],[144.8973846,-37.8314095],[144.8976898,-37.8307877],[144.8983612,-37.829689],[144.89888,-37.8288689],[144.8996429,-37.8279305],[144.9005432,-37.8270683],[144.9016571,-37.8260803]]]}},{"type":"Feature","properties":{"SA2_NAME":"Prahran - Windsor","polygonId":67,"SA3_NAME":"Stonnington - West","AREASQKM":2.9054,"fillColor":"#56C667","strokeColor":"#56C667","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[145.00914,-37.8488693],[145.009201,-37.8488808],[145.0097809,-37.8489494],[145.0103607,-37.8490295],[145.0122833,-37.8492699],[145.0123138,-37.8492775],[145.0122986,-37.849369],[145.0122223,-37.8498688],[145.0121613,-37.8502274],[145.0120239,-37.8511696],[145.0119324,-37.851799],[145.0119171,-37.8518791],[145.0117493,-37.8529472],[145.0116577,-37.8535805],[145.0116119,-37.8539085],[145.0115509,-37.8543091],[145.0114899,-37.8546906],[145.0112457,-37.85606],[145.0109711,-37.8576508],[145.0109406,-37.8577805],[145.0108795,-37.85812],[145.0108643,-37.8582001],[145.0106964,-37.8591805],[145.0105133,-37.860218],[145.0101166,-37.8601685],[145.0095825,-37.8600998],[145.0093842,-37.8600693],[145.0088806,-37.8600006],[145.0087128,-37.8599777],[145.0083313,-37.8599281],[145.0078583,-37.8598709],[145.0070343,-37.8597603],[145.0068207,-37.8597298],[145.0059357,-37.8596077],[145.0056915,-37.8595772],[145.0051575,-37.8595085],[145.0048676,-37.8594704],[145.0041504,-37.8593674],[145.0040436,-37.8593597],[145.0028534,-37.8591995],[145.001358,-37.8589973],[145.0009918,-37.8589478],[145.0006256,-37.8588982],[145.0002441,-37.8588486],[144.9999237,-37.8588104],[144.999649,-37.8587685],[144.9993286,-37.8587189],[144.9986267,-37.8586273],[144.9981689,-37.8585701],[144.9980927,-37.8585587],[144.9973907,-37.8584595],[144.9967957,-37.8583794],[144.9958954,-37.8582573],[144.9953156,-37.8581772],[144.9937897,-37.8579788],[144.9932709,-37.8578987],[144.9929962,-37.8578491],[144.9927521,-37.8577995],[144.9924927,-37.8577194],[144.9922638,-37.8576393],[144.9920807,-37.8575706],[144.9919434,-37.8575096],[144.9918213,-37.85746],[144.9916077,-37.857338],[144.9909668,-37.8569603],[144.9908142,-37.8568687],[144.9906616,-37.8568001],[144.9904938,-37.8567276],[144.9903412,-37.8566589],[144.9901123,-37.8565903],[144.9898834,-37.8565292],[144.9896698,-37.8564873],[144.9876709,-37.8562279],[144.9865723,-37.8560791],[144.9859009,-37.8559875],[144.9854431,-37.8559303],[144.9833221,-37.855648],[144.9834595,-37.8547592],[144.98349,-37.8546791],[144.9835815,-37.8541298],[144.9837036,-37.8535004],[144.9838257,-37.8527489],[144.9839478,-37.8520699],[144.9840698,-37.8513603],[144.9840698,-37.8513184],[144.9841919,-37.8506584],[144.9843292,-37.8498383],[144.9845734,-37.8483391],[144.9847107,-37.8474083],[144.9847412,-37.8472481],[144.9847717,-37.8470497],[144.9849396,-37.8461189],[144.9850159,-37.8456802],[144.9860382,-37.8458099],[144.9869385,-37.8459282],[144.98703,-37.8459396],[144.9877167,-37.8460274],[144.9880219,-37.8460693],[144.9881592,-37.8460884],[144.9885559,-37.846138],[144.9887543,-37.8461685],[144.9893799,-37.8462486],[144.9895935,-37.8462677],[144.9900665,-37.8463287],[144.9904633,-37.8463898],[144.9914703,-37.8465195],[144.9917297,-37.84655],[144.9923401,-37.8466301],[144.99263,-37.8466682],[144.992981,-37.8467102],[144.9932709,-37.8467484],[144.9941254,-37.846859],[144.994751,-37.8469391],[144.9949951,-37.8469772],[144.9962311,-37.8471489],[144.9967194,-37.8472176],[144.9975433,-37.8473282],[144.9979095,-37.8473778],[144.998642,-37.8474808],[144.9989929,-37.8475189],[144.9993896,-37.84758],[145.0004425,-37.8477173],[145.0012054,-37.8478279],[145.0017548,-37.8479004],[145.0024109,-37.8479881],[145.0031738,-37.8480988],[145.0037689,-37.8481789],[145.0044556,-37.848259],[145.0053101,-37.8483696],[145.0062256,-37.8484879],[145.0067749,-37.8485603],[145.0071564,-37.8486099],[145.0074158,-37.8486481],[145.0078583,-37.8486977],[145.0086975,-37.8488083],[145.00914,-37.8488693]]]}},{"type":"Feature","properties":{"SA2_NAME":"Richmond (Vic.)","polygonId":75,"SA3_NAME":"Yarra","AREASQKM":6.2125,"fillColor":"#62CB5F","strokeColor":"#62CB5F","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9909363,-37.8120308],[144.9909363,-37.8120193],[144.9910736,-37.8112488],[144.9911194,-37.8109398],[144.9911804,-37.8106194],[144.9913483,-37.8097305],[144.9919739,-37.8097191],[144.9923706,-37.8097191],[144.9925995,-37.8097382],[144.9928436,-37.8097572],[144.9937744,-37.8098488],[144.9938507,-37.8098602],[144.9945374,-37.8099289],[144.9952545,-37.810009],[144.9960327,-37.8100891],[144.9965668,-37.8101387],[144.9971619,-37.8102074],[144.997757,-37.8102684],[144.9983521,-37.8103294],[144.9990692,-37.8103981],[144.9995422,-37.8104477],[145.0006409,-37.8105583],[145.0023193,-37.81073],[145.0029449,-37.8107986],[145.0041199,-37.8109093],[145.0046844,-37.8109703],[145.0051117,-37.8110085],[145.0054626,-37.811039],[145.0062714,-37.8111191],[145.0064087,-37.8111305],[145.0070801,-37.8111992],[145.0073547,-37.8112297],[145.0084839,-37.8113403],[145.0096436,-37.8114471],[145.0097656,-37.8114395],[145.0101013,-37.8113976],[145.012207,-37.8116302],[145.0130005,-37.8117104],[145.0133057,-37.8117905],[145.0141449,-37.8120003],[145.0150757,-37.8120995],[145.0153809,-37.8121376],[145.0153961,-37.8121376],[145.0153503,-37.8122597],[145.015274,-37.8125305],[145.0151672,-37.8128586],[145.0150604,-37.8132477],[145.0149994,-37.8135185],[145.0149384,-37.8137589],[145.0149231,-37.8137779],[145.0148315,-37.8140602],[145.0147095,-37.81427],[145.0146179,-37.8144379],[145.0146027,-37.8144798],[145.0145111,-37.8146896],[145.0144501,-37.8148804],[145.0144196,-37.8151588],[145.0143738,-37.8154373],[145.0143738,-37.8154793],[145.0143738,-37.8155289],[145.0143738,-37.8155708],[145.0143738,-37.8156204],[145.0143738,-37.8157005],[145.014389,-37.8157387],[145.014389,-37.8158073],[145.0143738,-37.8159485],[145.0143738,-37.815979],[145.0143738,-37.8160172],[145.0143738,-37.81604],[145.0143738,-37.8160591],[145.0143738,-37.8160973],[145.0143738,-37.8161583],[145.0143738,-37.8161774],[145.014389,-37.8163185],[145.014389,-37.8164978],[145.0144196,-37.8166008],[145.0144501,-37.8168907],[145.0144958,-37.8172874],[145.0145111,-37.817379],[145.0145111,-37.8174095],[145.0145264,-37.8174286],[145.0145416,-37.8174896],[145.0145416,-37.8175392],[145.0145721,-37.8176003],[145.0146027,-37.8177185],[145.0146332,-37.8177795],[145.0146484,-37.8178596],[145.0146637,-37.8178978],[145.014679,-37.8179398],[145.014679,-37.8179703],[145.014679,-37.8179893],[145.0147095,-37.8180275],[145.01474,-37.8181076],[145.0147552,-37.8181686],[145.0147705,-37.8182182],[145.0147705,-37.8182907],[145.0147858,-37.8182983],[145.0147858,-37.8183098],[145.0147858,-37.8183708],[145.0147858,-37.8183975],[145.014801,-37.8184776],[145.0148163,-37.8185577],[145.0148315,-37.8186188],[145.0148468,-37.8187599],[145.0148621,-37.8188286],[145.0148621,-37.8188782],[145.0148773,-37.8189278],[145.0149078,-37.8190079],[145.0149384,-37.8191185],[145.0150146,-37.8194008],[145.0150299,-37.8194389],[145.0150299,-37.8194885],[145.0150299,-37.819519],[145.0150452,-37.8195572],[145.0150604,-37.8195877],[145.0150757,-37.8196297],[145.0151062,-37.8196983],[145.0151367,-37.8197594],[145.0151367,-37.8197708],[145.0152435,-37.8200989],[145.0152588,-37.8201675],[145.0153046,-37.8202705],[145.0154419,-37.8206291],[145.0154419,-37.8206406],[145.0154572,-37.8206673],[145.0155029,-37.820858],[145.0155334,-37.8209572],[145.015564,-37.8210487],[145.0156097,-37.8211899],[145.0156403,-37.8212585],[145.0157013,-37.8214874],[145.0157166,-37.8215179],[145.0157318,-37.8215485],[145.0157318,-37.8215599],[145.0157318,-37.8215675],[145.0157318,-37.8215904],[145.0157318,-37.8216286],[145.0157318,-37.8216476],[145.0157623,-37.8217697],[145.0157928,-37.821888],[145.0157928,-37.8220596],[145.0158081,-37.8221779],[145.0158081,-37.8222084],[145.0158234,-37.822258],[145.0158234,-37.8222694],[145.0158234,-37.8222809],[145.0158234,-37.8222885],[145.0158234,-37.8223],[145.0158234,-37.8223076],[145.0158234,-37.8223686],[145.0158386,-37.8223877],[145.0158386,-37.8224106],[145.0158386,-37.8224297],[145.0158386,-37.8224487],[145.0158539,-37.8224907],[145.0158691,-37.8225784],[145.0158691,-37.8225975],[145.0158691,-37.822628],[145.0158997,-37.8227882],[145.0158997,-37.8228607],[145.0159149,-37.8228989],[145.0159302,-37.822998],[145.0159302,-37.8230591],[145.0159302,-37.8230705],[145.0159302,-37.8230896],[145.0159302,-37.8231201],[145.0159302,-37.8231392],[145.0159454,-37.8231888],[145.0159607,-37.8232384],[145.0159607,-37.8232498],[145.0159607,-37.823288],[145.0159607,-37.8233109],[145.0160217,-37.8236885],[145.0160217,-37.8238106],[145.0160217,-37.8238373],[145.016037,-37.8239479],[145.0160522,-37.8240585],[145.0160522,-37.8240891],[145.0160675,-37.8241501],[145.0160675,-37.8242073],[145.0160828,-37.8243408],[145.016098,-37.824398],[145.0161133,-37.8244591],[145.0161285,-37.8244972],[145.0161285,-37.8245087],[145.0161591,-37.8245697],[145.0162354,-37.824688],[145.0162506,-37.8247108],[145.0163727,-37.8248787],[145.0164795,-37.8250198],[145.01651,-37.8250809],[145.0165405,-37.8251076],[145.016571,-37.8251495],[145.0166016,-37.8251686],[145.0166321,-37.8252106],[145.0166779,-37.8252487],[145.0167389,-37.8253174],[145.016861,-37.825428],[145.0170441,-37.8255806],[145.0172424,-37.8257179],[145.0173035,-37.8257675],[145.0173187,-37.8257904],[145.0174103,-37.8258476],[145.0174561,-37.8258781],[145.0175323,-37.8259277],[145.0177002,-37.8260193],[145.0177307,-37.8260307],[145.0177307,-37.8260307],[145.0177612,-37.8260498],[145.0177765,-37.8260498],[145.0177765,-37.8260574],[145.0178528,-37.826088],[145.0178833,-37.8260994],[145.0179138,-37.8261108],[145.0179291,-37.8261108],[145.0179901,-37.8261299],[145.0180206,-37.826149],[145.0181427,-37.8261681],[145.0181732,-37.8261795],[145.0182495,-37.8261986],[145.0183105,-37.82621],[145.0183411,-37.82621],[145.0183563,-37.82621],[145.0183716,-37.82621],[145.0184326,-37.82621],[145.0185242,-37.8261909],[145.0185394,-37.8261909],[145.0185699,-37.8261795],[145.0186462,-37.8261604],[145.0187531,-37.8261185],[145.0187683,-37.8261108],[145.0187988,-37.826088],[145.0188751,-37.8260574],[145.0189209,-37.8260384],[145.0189514,-37.8260307],[145.019104,-37.8259583],[145.0191803,-37.8259277],[145.0192108,-37.8259087],[145.0193939,-37.8258286],[145.0195923,-37.8257179],[145.0196228,-37.8256989],[145.0196533,-37.8256874],[145.0197601,-37.8256302],[145.0198822,-37.8255577],[145.0199432,-37.8255272],[145.02005,-37.8254776],[145.0201111,-37.8254395],[145.0201569,-37.825428],[145.0201874,-37.8254089],[145.0202484,-37.8253899],[145.0202789,-37.8253784],[145.0203552,-37.8253593],[145.0204315,-37.8253288],[145.0204468,-37.8253288],[145.0204773,-37.8253174],[145.0206146,-37.8252602],[145.0206604,-37.8252487],[145.0207214,-37.8252296],[145.0207672,-37.8252182],[145.020813,-37.8252106],[145.0210114,-37.8251686],[145.0211639,-37.8251572],[145.0213318,-37.8251801],[145.0214233,-37.8252296],[145.0218201,-37.8254204],[145.0218506,-37.8254509],[145.0219421,-37.8255081],[145.0219574,-37.8255196],[145.0219727,-37.8255272],[145.0220032,-37.8255501],[145.0220642,-37.8256607],[145.0221558,-37.825798],[145.022171,-37.8258286],[145.0221863,-37.8258476],[145.0222626,-37.8259773],[145.0222626,-37.8259888],[145.0223236,-37.826088],[145.0223389,-37.8261108],[145.0223694,-37.8261795],[145.0223999,-37.8262177],[145.0223999,-37.8262291],[145.0224304,-37.8262596],[145.0224609,-37.8263397],[145.0224762,-37.8263779],[145.0224762,-37.8263893],[145.0224915,-37.8264389],[145.0225067,-37.826519],[145.0225067,-37.8265305],[145.0225067,-37.8265381],[145.0225067,-37.8265495],[145.022522,-37.8265686],[145.022522,-37.8266602],[145.022522,-37.8266983],[145.022522,-37.8267174],[145.0225372,-37.8267593],[145.0225372,-37.8267975],[145.022583,-37.8269691],[145.0226135,-37.8270302],[145.0226898,-37.8272781],[145.0227203,-37.8273773],[145.0228271,-37.8276291],[145.0228577,-37.8276901],[145.0228729,-37.8277206],[145.022934,-37.8277893],[145.022934,-37.8278008],[145.0229492,-37.8278084],[145.0229645,-37.8278389],[145.0229797,-37.8278503],[145.0229797,-37.827858],[145.0229797,-37.8278694],[145.0230103,-37.8279076],[145.0230103,-37.827919],[145.0230255,-37.8279381],[145.023056,-37.82798],[145.0230713,-37.8279991],[145.0230865,-37.8280106],[145.0231323,-37.8280373],[145.0231628,-37.8280678],[145.0231628,-37.8280678],[145.0231781,-37.8280792],[145.0231934,-37.8280907],[145.0233154,-37.8281403],[145.0233917,-37.8281898],[145.0234375,-37.8282089],[145.0235138,-37.8282394],[145.0235748,-37.82827],[145.0235901,-37.8282776],[145.0236969,-37.8283386],[145.0237427,-37.8283577],[145.0237732,-37.8283806],[145.0238647,-37.8284187],[145.0239105,-37.8284302],[145.0239868,-37.8284798],[145.0240173,-37.8284988],[145.0241089,-37.8285408],[145.0246735,-37.8288879],[145.0247498,-37.8289375],[145.024765,-37.828949],[145.0247803,-37.8289604],[145.0248413,-37.8289909],[145.0249329,-37.8290482],[145.0250244,-37.8290901],[145.0251007,-37.8291283],[145.0252838,-37.8292198],[145.0254517,-37.8292999],[145.0259552,-37.8295288],[145.0259857,-37.8295403],[145.0260468,-37.8295708],[145.0260925,-37.8295898],[145.0261383,-37.8296089],[145.0261688,-37.829628],[145.0263519,-37.8297195],[145.0265198,-37.8298073],[145.0266418,-37.8298607],[145.0267639,-37.8299408],[145.0268402,-37.8299789],[145.0269165,-37.8300285],[145.0270538,-37.8301086],[145.0271301,-37.8301582],[145.0271912,-37.8301888],[145.0273438,-37.8302803],[145.0273895,-37.8303108],[145.0277252,-37.8305397],[145.0279694,-37.830719],[145.0280304,-37.8307495],[145.0280609,-37.83078],[145.028183,-37.8308792],[145.0281982,-37.8308907],[145.0282135,-37.8309097],[145.0282288,-37.8309288],[145.0282898,-37.8309784],[145.0282898,-37.8309898],[145.0283203,-37.8310089],[145.0283356,-37.8310394],[145.0283356,-37.8310394],[145.0283356,-37.8310509],[145.0283508,-37.831089],[145.0283508,-37.8311386],[145.0283508,-37.8311501],[145.0283508,-37.8311691],[145.0283508,-37.8311996],[145.0283508,-37.8312073],[145.0282898,-37.8313179],[145.0282288,-37.83144],[145.0281372,-37.8315506],[145.0281219,-37.8315582],[145.0279236,-37.8318176],[145.0278625,-37.8318672],[145.0277405,-37.8320274],[145.0275269,-37.8322296],[145.027298,-37.832489],[145.0270691,-37.8327293],[145.0270233,-37.8327675],[145.0269623,-37.8328209],[145.0269318,-37.8328476],[145.026886,-37.8328896],[145.0268402,-37.8329201],[145.0268402,-37.8329277],[145.0267029,-37.8330498],[145.0265045,-37.8332291],[145.026413,-37.8333092],[145.0263367,-37.8333702],[145.0263214,-37.8333893],[145.0262451,-37.8334503],[145.0261536,-37.833519],[145.025589,-37.8339272],[145.0253601,-37.8341103],[145.0252991,-37.8341599],[145.0252686,-37.8341789],[145.025238,-37.834198],[145.0252075,-37.8342094],[145.0251617,-37.8342285],[145.0251312,-37.8342476],[145.0249939,-37.8343201],[145.0249329,-37.8343506],[145.0248718,-37.8343773],[145.0247955,-37.8344078],[145.0246735,-37.8344574],[145.0246124,-37.8344879],[145.0245514,-37.8344994],[145.0244293,-37.8344879],[145.0239563,-37.8344307],[145.0235596,-37.8343697],[145.0232086,-37.8342896],[145.0229034,-37.8341675],[145.0226898,-37.8339996],[145.022522,-37.8337402],[145.0224304,-37.8334999],[145.0223694,-37.83321],[145.0222931,-37.8329773],[145.0222015,-37.8327675],[145.022171,-37.8326797],[145.0217133,-37.8323402],[145.0211639,-37.8321304],[145.0209961,-37.832058],[145.0207214,-37.8319893],[145.0202789,-37.8318787],[145.0200806,-37.8318176],[145.0198059,-37.8317375],[145.0194244,-37.8316574],[145.019165,-37.8316193],[145.0189056,-37.8316193],[145.0185699,-37.8316498],[145.0183105,-37.8317108],[145.0179596,-37.8318596],[145.0175629,-37.8320389],[145.0172729,-37.8321609],[145.0170288,-37.8322372],[145.0168152,-37.8322487],[145.0166473,-37.8322105],[145.0163422,-37.8320084],[145.016098,-37.8318901],[145.015686,-37.8316879],[145.0154114,-37.8315392],[145.0151215,-37.8313484],[145.01474,-37.8311386],[145.0143738,-37.8309402],[145.0141907,-37.8308601],[145.0139313,-37.8307495],[145.0137329,-37.8306999],[145.0134583,-37.8306198],[145.0131378,-37.8305397],[145.0129089,-37.8304977],[145.0127106,-37.8305092],[145.012619,-37.8305206],[145.0125122,-37.8305397],[145.0122833,-37.8306007],[145.0119629,-37.8307381],[145.0113831,-37.8310585],[145.0110168,-37.8312798],[145.0108337,-37.831459],[145.0106812,-37.8316879],[145.0106201,-37.8319397],[145.0105591,-37.8323898],[145.0105133,-37.8326607],[145.0104523,-37.8328705],[145.0102997,-37.8330688],[145.0100708,-37.8332672],[145.0098724,-37.8334198],[145.0096893,-37.833519],[145.0095367,-37.8335381],[145.0093384,-37.8335075],[145.00914,-37.8334389],[145.0090027,-37.8333282],[145.0088654,-37.833168],[145.0086212,-37.8327484],[145.0084991,-37.8325386],[145.0083618,-37.8323708],[145.0081635,-37.8321991],[145.0079041,-37.8320198],[145.0076752,-37.8318672],[145.007431,-37.8317909],[145.0071716,-37.8317299],[145.0067596,-37.8316574],[145.0064392,-37.8315697],[145.0062714,-37.8315277],[145.0061493,-37.8314896],[145.0061188,-37.8314705],[145.0057831,-37.8313599],[145.0054474,-37.8312607],[145.0051575,-37.8311882],[145.0048828,-37.8311691],[145.0045929,-37.8311691],[145.004364,-37.8312187],[145.0041199,-37.8313293],[145.003952,-37.83144],[145.00383,-37.8315697],[145.0037842,-37.8317795],[145.0038605,-37.832119],[145.0040283,-37.8326302],[145.0041504,-37.8330078],[145.0042419,-37.8333702],[145.0042572,-37.8336983],[145.0042419,-37.83395],[145.0041809,-37.8341675],[145.0040588,-37.8343086],[145.003891,-37.8344193],[145.0036621,-37.8344803],[145.0033417,-37.8345108],[145.0030212,-37.8344307],[145.0028839,-37.8342781],[145.0027313,-37.8341293],[145.002533,-37.8339806],[145.0021057,-37.8337898],[145.0014954,-37.8335991],[145.0010529,-37.8334885],[145.0006714,-37.8334579],[145.000351,-37.833519],[144.999939,-37.8336906],[144.9997406,-37.8337593],[144.9995117,-37.8338394],[144.9992065,-37.8339195],[144.9987335,-37.8339806],[144.9979706,-37.8340988],[144.9973602,-37.8342209],[144.996933,-37.8342705],[144.9966736,-37.8342972],[144.996582,-37.8342896],[144.9964142,-37.8342705],[144.9960632,-37.8342094],[144.995575,-37.8340302],[144.9949036,-37.8337898],[144.994339,-37.8335991],[144.9934235,-37.8334007],[144.9932709,-37.8333702],[144.9931793,-37.8333702],[144.993103,-37.8333588],[144.993042,-37.8333473],[144.992981,-37.8333473],[144.9927216,-37.8333206],[144.9924927,-37.8333092],[144.9922638,-37.8332787],[144.9920654,-37.8332672],[144.9918518,-37.8332481],[144.9916534,-37.8332176],[144.9914703,-37.8331795],[144.9913635,-37.833149],[144.9911957,-37.8330803],[144.9911346,-37.8330498],[144.9909058,-37.8328972],[144.9906311,-37.8325882],[144.9905701,-37.8325195],[144.9904938,-37.8323975],[144.9904327,-37.8323288],[144.990387,-37.8322296],[144.9903412,-37.8321304],[144.9902496,-37.8320198],[144.9901428,-37.8318596],[144.990036,-37.8317375],[144.9898529,-37.8315086],[144.9896698,-37.8312798],[144.9896088,-37.8311882],[144.9893951,-37.8309898],[144.9888153,-37.8303986],[144.9886017,-37.8301697],[144.9883728,-37.8299599],[144.987915,-37.8296204],[144.9879913,-37.829258],[144.9880524,-37.8289375],[144.9881287,-37.8285484],[144.9882355,-37.8279572],[144.988327,-37.8274994],[144.9883423,-37.8273697],[144.9884491,-37.8267899],[144.9886932,-37.8252983],[144.9887238,-37.8252373],[144.9888306,-37.8246193],[144.9889374,-37.8240395],[144.9890289,-37.8233986],[144.98909,-37.8231087],[144.9891357,-37.8227997],[144.9893341,-37.8216476],[144.989563,-37.8202782],[144.9896851,-37.8195572],[144.9897156,-37.8193779],[144.9897156,-37.8193398],[144.9897614,-37.8190575],[144.9898834,-37.818409],[144.9899597,-37.8178902],[144.9899902,-37.817688],[144.9900055,-37.8175507],[144.9900208,-37.8172798],[144.9900665,-37.8169594],[144.9900818,-37.8168678],[144.9902039,-37.8162575],[144.9902802,-37.8157883],[144.990448,-37.8148079],[144.9904785,-37.8146782],[144.9906311,-37.8137703],[144.9906616,-37.813549],[144.9907837,-37.81287],[144.99086,-37.8124199],[144.9909363,-37.8120308]]]}},{"type":"Feature","properties":{"SA2_NAME":"South Melbourne","polygonId":63,"SA3_NAME":"Port Phillip","AREASQKM":2.4948,"fillColor":"#86D549","strokeColor":"#86D549","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.949646,-37.8339996],[144.9487762,-37.8332291],[144.9479523,-37.832489],[144.9474335,-37.8320389],[144.9470673,-37.8317108],[144.9466858,-37.8313789],[144.9464264,-37.8311501],[144.946167,-37.8309784],[144.9456787,-37.8305588],[144.9450989,-37.8300591],[144.944809,-37.8298073],[144.9438629,-37.8289795],[144.9425201,-37.8278275],[144.941864,-37.8272705],[144.9408112,-37.8263588],[144.9407959,-37.8263397],[144.9410248,-37.8261795],[144.9411621,-37.8261185],[144.9412994,-37.8260689],[144.941391,-37.8259773],[144.9414368,-37.8257904],[144.9422913,-37.8258705],[144.9429626,-37.8259583],[144.9445801,-37.8262405],[144.9449921,-37.8263092],[144.945694,-37.8264008],[144.9461212,-37.8264503],[144.9465332,-37.826519],[144.9468689,-37.8265877],[144.9470215,-37.8266296],[144.9472504,-37.8266792],[144.9474945,-37.8267479],[144.9475861,-37.8267403],[144.9477234,-37.8267403],[144.9478607,-37.8267479],[144.9483032,-37.8268394],[144.9485779,-37.8268776],[144.9490204,-37.8269501],[144.9496002,-37.8270378],[144.950119,-37.8271179],[144.9512329,-37.8273201],[144.9518585,-37.8274193],[144.952179,-37.8274689],[144.9524841,-37.8275108],[144.9529724,-37.8275986],[144.9534149,-37.8276787],[144.9535217,-37.8276978],[144.9539795,-37.8277893],[144.9547119,-37.8279572],[144.9549866,-37.8280182],[144.9551697,-37.8280602],[144.9555206,-37.8281288],[144.9557953,-37.8281898],[144.9561005,-37.8282585],[144.9564667,-37.8283195],[144.9570465,-37.8283997],[144.9571838,-37.8284073],[144.9572601,-37.8284187],[144.9577789,-37.8284378],[144.9582062,-37.8284378],[144.9584503,-37.8284302],[144.9590759,-37.8283806],[144.9595184,-37.8283195],[144.9597931,-37.8282585],[144.9598389,-37.8283997],[144.9599457,-37.8283806],[144.9603119,-37.8283005],[144.9607849,-37.8281784],[144.9610291,-37.8281174],[144.9611206,-37.8281097],[144.96138,-37.8280602],[144.9616241,-37.8280602],[144.9617004,-37.8280792],[144.961853,-37.8280983],[144.9619751,-37.8281403],[144.9620514,-37.8281708],[144.9622803,-37.8282509],[144.9627228,-37.8285904],[144.9627838,-37.8285675],[144.9631805,-37.8288002],[144.9638367,-37.8294601],[144.9642029,-37.8298302],[144.964859,-37.8304977],[144.9651489,-37.83078],[144.9658356,-37.8314781],[144.9673462,-37.8310394],[144.9682922,-37.8307571],[144.9694061,-37.8304405],[144.9702148,-37.8302078],[144.9704132,-37.8301506],[144.9713135,-37.8298874],[144.9713287,-37.8301582],[144.9713287,-37.8304291],[144.9713593,-37.8306808],[144.9713593,-37.8307495],[144.9713898,-37.8310699],[144.971405,-37.8312187],[144.9714355,-37.8313789],[144.9714813,-37.8315277],[144.9715271,-37.8316803],[144.9715729,-37.8318405],[144.9716492,-37.8319778],[144.9717102,-37.8321304],[144.9717865,-37.8322792],[144.9716034,-37.8323288],[144.9716339,-37.832428],[144.9716644,-37.8325195],[144.9716949,-37.8326187],[144.9717102,-37.8327179],[144.9717407,-37.83284],[144.9717407,-37.8329697],[144.971756,-37.8330879],[144.971756,-37.8332901],[144.9717255,-37.8335304],[144.9717102,-37.8336678],[144.9716339,-37.8339081],[144.9716797,-37.834259],[144.9710693,-37.8351288],[144.970932,-37.8353195],[144.9707642,-37.8354988],[144.9706421,-37.8356285],[144.9705963,-37.8356781],[144.9703979,-37.8358688],[144.9701996,-37.8360405],[144.969986,-37.8362083],[144.9697723,-37.8363686],[144.9695435,-37.8365288],[144.9693146,-37.8366699],[144.969101,-37.8367805],[144.9688721,-37.8368988],[144.9686432,-37.8370094],[144.9684601,-37.8370895],[144.9682617,-37.8371696],[144.9680939,-37.8372383],[144.9678802,-37.8373108],[144.9676514,-37.8373795],[144.9667206,-37.8376579],[144.9658661,-37.8379707],[144.9657135,-37.8380394],[144.9655914,-37.838089],[144.965271,-37.8382072],[144.964859,-37.8383904],[144.9642639,-37.8386688],[144.9640045,-37.8387985],[144.9633789,-37.8391075],[144.9631348,-37.8392296],[144.9628754,-37.8393784],[144.9626312,-37.8395309],[144.9623718,-37.8396797],[144.9621277,-37.8398285],[144.9618835,-37.8399887],[144.9616394,-37.8401489],[144.9613953,-37.8403206],[144.9611969,-37.8404694],[144.9608002,-37.8407898],[144.9604492,-37.8410797],[144.9597321,-37.8416977],[144.9595032,-37.8418999],[144.959198,-37.8421593],[144.9586792,-37.8410492],[144.9581604,-37.8399773],[144.957901,-37.8393898],[144.9576263,-37.8387985],[144.9571686,-37.8378181],[144.9568939,-37.8372307],[144.954422,-37.8379478],[144.9524841,-37.8385086],[144.9523926,-37.8385506],[144.952301,-37.8386078],[144.9522095,-37.8386497],[144.9521332,-37.8386993],[144.9520416,-37.838768],[144.9519501,-37.8388405],[144.951889,-37.8389091],[144.9518433,-37.8389778],[144.9517822,-37.8390503],[144.9517517,-37.8391304],[144.9517212,-37.8392296],[144.9516907,-37.8393288],[144.9516907,-37.8394089],[144.9516907,-37.839489],[144.9517059,-37.8395882],[144.9517212,-37.8396683],[144.9517517,-37.8397484],[144.9518433,-37.8399277],[144.9510803,-37.8401489],[144.95047,-37.8403282],[144.9500427,-37.8404579],[144.9492188,-37.8406906],[144.9488525,-37.8407974],[144.947052,-37.84132],[144.9465179,-37.8410072],[144.9468994,-37.8401985],[144.9474792,-37.8389702],[144.9479828,-37.8378983],[144.9480743,-37.8376999],[144.9484711,-37.8368492],[144.9485168,-37.83675],[144.9487915,-37.8362007],[144.9488373,-37.8360901],[144.9488831,-37.835968],[144.9493561,-37.8349495],[144.9497528,-37.8340874],[144.949646,-37.8339996]]]}},{"type":"Feature","properties":{"SA2_NAME":"South Yarra - East","polygonId":68,"SA3_NAME":"Stonnington - West","AREASQKM":2.5172,"fillColor":"#89D548","strokeColor":"#89D548","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9869843,-37.8360481],[144.9870148,-37.8359184],[144.9870911,-37.8354988],[144.9871063,-37.8354683],[144.9872131,-37.8349609],[144.9872589,-37.8347588],[144.987381,-37.8341408],[144.9874268,-37.8338509],[144.9875183,-37.8334084],[144.9875793,-37.8330574],[144.9877014,-37.832489],[144.9877472,-37.8322487],[144.9878387,-37.8317184],[144.987915,-37.831398],[144.9879303,-37.8313179],[144.9879303,-37.8312378],[144.9879303,-37.8311691],[144.9879303,-37.831089],[144.9879303,-37.8310089],[144.987915,-37.8309479],[144.987915,-37.8309288],[144.9878998,-37.8308487],[144.9878845,-37.8307686],[144.9878693,-37.830719],[144.9878387,-37.8306274],[144.9878082,-37.8304787],[144.987793,-37.83041],[144.987793,-37.8303185],[144.987793,-37.8302498],[144.9878235,-37.8301201],[144.9878235,-37.8300781],[144.987915,-37.82967],[144.987915,-37.8296204],[144.9883728,-37.8299599],[144.9886017,-37.8301697],[144.9888153,-37.8303986],[144.9893951,-37.8309898],[144.9896088,-37.8311882],[144.9896698,-37.8312798],[144.9898529,-37.8315086],[144.990036,-37.8317375],[144.9901428,-37.8318596],[144.9902496,-37.8320198],[144.9903412,-37.8321304],[144.990387,-37.8322296],[144.9904327,-37.8323288],[144.9904938,-37.8323975],[144.9905701,-37.8325195],[144.9906311,-37.8325882],[144.9909058,-37.8328972],[144.9911346,-37.8330498],[144.9911957,-37.8330803],[144.9913635,-37.833149],[144.9914703,-37.8331795],[144.9916534,-37.8332176],[144.9918518,-37.8332481],[144.9920654,-37.8332672],[144.9922638,-37.8332787],[144.9924927,-37.8333092],[144.9927216,-37.8333206],[144.992981,-37.8333473],[144.993042,-37.8333473],[144.993103,-37.8333588],[144.9931793,-37.8333702],[144.9932709,-37.8333702],[144.9934235,-37.8334007],[144.994339,-37.8335991],[144.9949036,-37.8337898],[144.995575,-37.8340302],[144.9960632,-37.8342094],[144.9964142,-37.8342705],[144.996582,-37.8342896],[144.9966736,-37.8342972],[144.996933,-37.8342705],[144.9973602,-37.8342209],[144.9979706,-37.8340988],[144.9987335,-37.8339806],[144.9992065,-37.8339195],[144.9995117,-37.8338394],[144.9997406,-37.8337593],[144.999939,-37.8336906],[145.000351,-37.833519],[145.0006714,-37.8334579],[145.0010529,-37.8334885],[145.0014954,-37.8335991],[145.0021057,-37.8337898],[145.002533,-37.8339806],[145.0027313,-37.8341293],[145.0028839,-37.8342781],[145.0030212,-37.8344307],[145.0033417,-37.8345108],[145.0036621,-37.8344803],[145.003891,-37.8344193],[145.0040588,-37.8343086],[145.0041809,-37.8341675],[145.0042419,-37.83395],[145.0042572,-37.8336983],[145.0042419,-37.8333702],[145.0041504,-37.8330078],[145.0040283,-37.8326302],[145.0038605,-37.832119],[145.0037842,-37.8317795],[145.00383,-37.8315697],[145.003952,-37.83144],[145.0041199,-37.8313293],[145.004364,-37.8312187],[145.0045929,-37.8311691],[145.0048828,-37.8311691],[145.0051575,-37.8311882],[145.0054474,-37.8312607],[145.0057831,-37.8313599],[145.0061188,-37.8314705],[145.0061493,-37.8314896],[145.0062714,-37.8315277],[145.0064392,-37.8315697],[145.0063629,-37.8320007],[145.0062561,-37.8324776],[145.0061188,-37.833168],[145.0061035,-37.8332787],[145.005722,-37.8353195],[145.0054321,-37.8367996],[145.0053253,-37.8373108],[145.005249,-37.8377075],[145.0050812,-37.8385391],[145.0050507,-37.8386192],[145.0049133,-37.8394203],[145.0048065,-37.8400002],[145.004715,-37.8404999],[145.0046844,-37.8405876],[145.0046692,-37.8406677],[145.0045929,-37.8410797],[145.0045471,-37.8413086],[145.0045166,-37.8414307],[145.0044708,-37.8416977],[145.0044403,-37.8417892],[145.0043793,-37.8420792],[145.0043182,-37.8424797],[145.0042572,-37.8427582],[145.0042114,-37.8429985],[145.0040741,-37.843708],[145.0040131,-37.8440094],[145.0039215,-37.8444481],[145.0039215,-37.8445206],[145.0038605,-37.84478],[145.0037689,-37.8452072],[145.0037384,-37.8453979],[145.0035706,-37.8461876],[145.003479,-37.8466606],[145.0033722,-37.8471298],[145.0032806,-37.8476105],[145.0031738,-37.8480988],[145.0024109,-37.8479881],[145.0017548,-37.8479004],[145.0012054,-37.8478279],[145.0004425,-37.8477173],[144.9993896,-37.84758],[144.9989929,-37.8475189],[144.998642,-37.8474808],[144.9979095,-37.8473778],[144.9975433,-37.8473282],[144.9967194,-37.8472176],[144.9962311,-37.8471489],[144.9949951,-37.8469772],[144.994751,-37.8469391],[144.9941254,-37.846859],[144.9932709,-37.8467484],[144.992981,-37.8467102],[144.99263,-37.8466682],[144.9923401,-37.8466301],[144.9917297,-37.84655],[144.9914703,-37.8465195],[144.9904633,-37.8463898],[144.9900665,-37.8463287],[144.9895935,-37.8462677],[144.9893799,-37.8462486],[144.9887543,-37.8461685],[144.9885559,-37.846138],[144.9881592,-37.8460884],[144.9880219,-37.8460693],[144.9877167,-37.8460274],[144.98703,-37.8459396],[144.9869385,-37.8459282],[144.9860382,-37.8458099],[144.9850159,-37.8456802],[144.9852295,-37.8446083],[144.9852905,-37.8443489],[144.9854126,-37.8437805],[144.9854126,-37.8437004],[144.9855499,-37.8430672],[144.9855652,-37.8429794],[144.9856873,-37.8423882],[144.9858398,-37.8416672],[144.9858704,-37.8414879],[144.9859772,-37.8410072],[144.986084,-37.8404694],[144.986145,-37.8401375],[144.9863129,-37.8393173],[144.9863281,-37.8392677],[144.9864502,-37.8386307],[144.9865112,-37.8383179],[144.9866028,-37.8379478],[144.9866333,-37.83778],[144.9867401,-37.8372688],[144.9867706,-37.8371086],[144.9868469,-37.8367195],[144.9869843,-37.8360481]]]}},{"type":"Feature","properties":{"SA2_NAME":"South Yarra - West","polygonId":56,"SA3_NAME":"Melbourne City","AREASQKM":1.5027,"fillColor":"#89D548","strokeColor":"#89D548","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9745331,-37.8346672],[144.9744415,-37.8345604],[144.9741821,-37.8342705],[144.9741058,-37.8341904],[144.973999,-37.8341179],[144.9736328,-37.8338776],[144.973465,-37.8337593],[144.9734039,-37.8337173],[144.9728088,-37.8332901],[144.972641,-37.8331795],[144.9725037,-37.8330574],[144.9723663,-37.8329391],[144.9722443,-37.8328094],[144.9788971,-37.8336678],[144.9799194,-37.8337975],[144.9807129,-37.8339081],[144.9812775,-37.8339806],[144.9825134,-37.8341408],[144.9833527,-37.8342476],[144.9836731,-37.8342896],[144.9837952,-37.8336678],[144.9838715,-37.8332596],[144.9840851,-37.8321991],[144.9844208,-37.8305092],[144.9844818,-37.8301392],[144.9845734,-37.8297501],[144.9846191,-37.8294601],[144.9847107,-37.828968],[144.984848,-37.8283386],[144.9850006,-37.8283882],[144.9851837,-37.8284492],[144.9853516,-37.8285294],[144.9855042,-37.8286095],[144.9856567,-37.8286972],[144.9858093,-37.8287888],[144.9859467,-37.8288994],[144.9860687,-37.82901],[144.9865417,-37.8293686],[144.9872894,-37.8300781],[144.9875488,-37.8303185],[144.9877777,-37.8305473],[144.9878387,-37.8306274],[144.9878693,-37.830719],[144.9878845,-37.8307686],[144.9878998,-37.8308487],[144.987915,-37.8309288],[144.987915,-37.8309479],[144.9879303,-37.8310089],[144.9879303,-37.831089],[144.9879303,-37.8311691],[144.9879303,-37.8312378],[144.9879303,-37.8313179],[144.987915,-37.831398],[144.9878387,-37.8317184],[144.9877472,-37.8322487],[144.9877014,-37.832489],[144.9875793,-37.8330574],[144.9875183,-37.8334084],[144.9874268,-37.8338509],[144.987381,-37.8341408],[144.9872589,-37.8347588],[144.9872131,-37.8349609],[144.9871063,-37.8354683],[144.9870911,-37.8354988],[144.9870148,-37.8359184],[144.9869843,-37.8360481],[144.9868469,-37.8367195],[144.9867706,-37.8371086],[144.9867401,-37.8372688],[144.9866333,-37.83778],[144.9866028,-37.8379478],[144.9865112,-37.8383179],[144.9864502,-37.8386307],[144.9863281,-37.8392677],[144.9863129,-37.8393173],[144.986145,-37.8401375],[144.986084,-37.8404694],[144.9859772,-37.8410072],[144.9858704,-37.8414879],[144.9858398,-37.8416672],[144.9856873,-37.8423882],[144.9855652,-37.8429794],[144.9855499,-37.8430672],[144.9854126,-37.8437004],[144.9854126,-37.8437805],[144.9852905,-37.8443489],[144.9852295,-37.8446083],[144.9850159,-37.8456802],[144.9849396,-37.8461189],[144.9847717,-37.8470497],[144.9847412,-37.8472481],[144.9847107,-37.8474083],[144.9845734,-37.8483391],[144.9843292,-37.8498383],[144.9841919,-37.8506584],[144.9830322,-37.8505096],[144.9823303,-37.8504295],[144.9806366,-37.8502083],[144.9804382,-37.849659],[144.9803314,-37.8493881],[144.9801483,-37.8488579],[144.9797211,-37.8477173],[144.9795074,-37.8471107],[144.9794159,-37.8468704],[144.9790802,-37.8459702],[144.9786835,-37.8448486],[144.9785614,-37.8445473],[144.9783936,-37.8440475],[144.9782715,-37.843708],[144.9781342,-37.8433609],[144.9779968,-37.8429909],[144.9779205,-37.8427582],[144.9778137,-37.8424797],[144.9777222,-37.8422279],[144.9775391,-37.8417282],[144.9774017,-37.8413391],[144.9772797,-37.8410187],[144.9770813,-37.8404694],[144.9769897,-37.8402176],[144.9768829,-37.8399506],[144.9767914,-37.8396797],[144.9765778,-37.8390694],[144.9764404,-37.8387184],[144.9763489,-37.8384476],[144.9762573,-37.8381996],[144.976059,-37.8376694],[144.9758606,-37.8371506],[144.9755249,-37.8362083],[144.9754791,-37.8360672],[144.9754333,-37.835968],[144.9753418,-37.8358307],[144.9751892,-37.8355675],[144.9750366,-37.8353195],[144.9749756,-37.8351974],[144.9749298,-37.8351173],[144.9748688,-37.8350487],[144.9745331,-37.8346672]]]}},{"type":"Feature","properties":{"SA2_NAME":"Southbank","polygonId":57,"SA3_NAME":"Melbourne City","AREASQKM":3.0743,"fillColor":"#89D548","strokeColor":"#89D548","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9397736,-37.8254585],[144.9395447,-37.8252602],[144.9376984,-37.8236694],[144.937851,-37.8230896],[144.9398651,-37.8235207],[144.940506,-37.823658],[144.9420013,-37.8239708],[144.9423523,-37.8241005],[144.942627,-37.8243179],[144.9430237,-37.8246078],[144.9430389,-37.8246307],[144.9433136,-37.8248291],[144.9433594,-37.8248596],[144.9434204,-37.8248978],[144.9434814,-37.8249207],[144.9435425,-37.8249474],[144.9436035,-37.8249702],[144.9436798,-37.8249779],[144.9437408,-37.8249893],[144.944458,-37.8250694],[144.9451904,-37.8251381],[144.9459991,-37.8252296],[144.9462128,-37.8252373],[144.946991,-37.8252907],[144.9472504,-37.8252983],[144.9473419,-37.8252983],[144.9475555,-37.8252907],[144.9477234,-37.8252487],[144.9478607,-37.8252296],[144.9479675,-37.8252296],[144.9480896,-37.824749],[144.9481201,-37.8245583],[144.9480896,-37.8244476],[144.9480591,-37.8243103],[144.9480286,-37.8241997],[144.9479218,-37.8237572],[144.9479218,-37.8233795],[144.948349,-37.8233681],[144.9491882,-37.8234596],[144.9498138,-37.8235283],[144.9521942,-37.823719],[144.9533234,-37.8237],[144.9543915,-37.8235474],[144.9552612,-37.8233376],[144.9559784,-37.8230476],[144.9569092,-37.8225899],[144.95784,-37.8220787],[144.9580688,-37.8219681],[144.9590302,-37.8215103],[144.9599915,-37.8210373],[144.9606171,-37.8207474],[144.96138,-37.8205109],[144.9630127,-37.8200989],[144.9636688,-37.8199196],[144.9644165,-37.8197594],[144.9647675,-37.8197098],[144.9653778,-37.8196106],[144.9663086,-37.819458],[144.9664001,-37.8194504],[144.9671631,-37.8193283],[144.9679718,-37.8192406],[144.9682465,-37.8192177],[144.9682922,-37.8193283],[144.968338,-37.8194199],[144.9684296,-37.8196182],[144.9702301,-37.8195076],[144.9716187,-37.8194084],[144.9730988,-37.8198204],[144.9746399,-37.8208885],[144.976059,-37.8225975],[144.9766388,-37.8231888],[144.9774017,-37.823288],[144.9784393,-37.8244781],[144.9793243,-37.8255081],[144.9800568,-37.8260994],[144.9811249,-37.8267975],[144.9825134,-37.8272285],[144.9839325,-37.8274689],[144.9849243,-37.8276482],[144.9850311,-37.8276787],[144.9857635,-37.8278809],[144.986496,-37.8283081],[144.9870911,-37.8288574],[144.987915,-37.82967],[144.9878235,-37.8300781],[144.9878235,-37.8301201],[144.987793,-37.8302498],[144.987793,-37.8303185],[144.987793,-37.83041],[144.9878082,-37.8304787],[144.9878387,-37.8306274],[144.9877777,-37.8305473],[144.9875488,-37.8303185],[144.9872894,-37.8300781],[144.9865417,-37.8293686],[144.9860687,-37.82901],[144.9859467,-37.8288994],[144.9858093,-37.8287888],[144.9856567,-37.8286972],[144.9855042,-37.8286095],[144.9853516,-37.8285294],[144.9851837,-37.8284492],[144.9850006,-37.8283882],[144.984848,-37.8283386],[144.9847107,-37.828968],[144.9846191,-37.8294601],[144.9845734,-37.8297501],[144.9844818,-37.8301392],[144.9844208,-37.8305092],[144.9840851,-37.8321991],[144.9838715,-37.8332596],[144.9837952,-37.8336678],[144.9836731,-37.8342896],[144.9833527,-37.8342476],[144.9825134,-37.8341408],[144.9812775,-37.8339806],[144.9807129,-37.8339081],[144.9799194,-37.8337975],[144.9788971,-37.8336678],[144.9722443,-37.8328094],[144.9721222,-37.8326797],[144.9720612,-37.8326073],[144.9719238,-37.8324394],[144.9718323,-37.8323174],[144.9717865,-37.8322792],[144.9717102,-37.8321304],[144.9716492,-37.8319778],[144.9715729,-37.8318405],[144.9715271,-37.8316803],[144.9714813,-37.8315277],[144.9714355,-37.8313789],[144.971405,-37.8312187],[144.9713898,-37.8310699],[144.9713593,-37.8307495],[144.9713593,-37.8306808],[144.9713287,-37.8304291],[144.9713287,-37.8301582],[144.9713135,-37.8298874],[144.9704132,-37.8301506],[144.9702148,-37.8302078],[144.9694061,-37.8304405],[144.9682922,-37.8307571],[144.9673462,-37.8310394],[144.9658356,-37.8314781],[144.9651489,-37.83078],[144.964859,-37.8304977],[144.9642029,-37.8298302],[144.9638367,-37.8294601],[144.9631805,-37.8288002],[144.9627838,-37.8285675],[144.9627228,-37.8285904],[144.9622803,-37.8282509],[144.9620514,-37.8281708],[144.9619751,-37.8281403],[144.961853,-37.8280983],[144.9617004,-37.8280792],[144.9616241,-37.8280602],[144.96138,-37.8280602],[144.9611206,-37.8281097],[144.9610291,-37.8281174],[144.9607849,-37.8281784],[144.9603119,-37.8283005],[144.9599457,-37.8283806],[144.9598389,-37.8283997],[144.9597931,-37.8282585],[144.9595184,-37.8283195],[144.9590759,-37.8283806],[144.9584503,-37.8284302],[144.9582062,-37.8284378],[144.9577789,-37.8284378],[144.9572601,-37.8284187],[144.9571838,-37.8284073],[144.9570465,-37.8283997],[144.9564667,-37.8283195],[144.9561005,-37.8282585],[144.9557953,-37.8281898],[144.9555206,-37.8281288],[144.9551697,-37.8280602],[144.9549866,-37.8280182],[144.9547119,-37.8279572],[144.9539795,-37.8277893],[144.9535217,-37.8276978],[144.9534149,-37.8276787],[144.9529724,-37.8275986],[144.9524841,-37.8275108],[144.952179,-37.8274689],[144.9518585,-37.8274193],[144.9512329,-37.8273201],[144.950119,-37.8271179],[144.9496002,-37.8270378],[144.9490204,-37.8269501],[144.9485779,-37.8268776],[144.9483032,-37.8268394],[144.9478607,-37.8267479],[144.9477234,-37.8267403],[144.9475861,-37.8267403],[144.9474945,-37.8267479],[144.9472504,-37.8266792],[144.9470215,-37.8266296],[144.9468689,-37.8265877],[144.9465332,-37.826519],[144.9461212,-37.8264503],[144.945694,-37.8264008],[144.9449921,-37.8263092],[144.9445801,-37.8262405],[144.9429626,-37.8259583],[144.9422913,-37.8258705],[144.9414368,-37.8257904],[144.9405212,-37.8257294],[144.9403381,-37.8257294],[144.9400787,-37.8257294],[144.9397736,-37.8254585]]]}},{"type":"Feature","properties":{"SA2_NAME":"St Kilda","polygonId":64,"SA3_NAME":"Port Phillip","AREASQKM":3.901,"fillColor":"#90D743","strokeColor":"#90D743","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9702911,-37.8607788],[144.9701691,-37.8607101],[144.9699554,-37.8605576],[144.9699402,-37.860508],[144.9698792,-37.8604393],[144.9696808,-37.8602982],[144.9692993,-37.8600998],[144.9691315,-37.8599777],[144.9687958,-37.8597374],[144.9685822,-37.8596306],[144.9686127,-37.8595772],[144.9687195,-37.8595581],[144.9688416,-37.8594704],[144.9689331,-37.8593178],[144.9689026,-37.8592987],[144.9687653,-37.8593788],[144.9685822,-37.8594894],[144.9682922,-37.8594894],[144.9680328,-37.8594475],[144.9678192,-37.8593674],[144.9676819,-37.8592186],[144.9676361,-37.8591309],[144.9675598,-37.8589897],[144.967392,-37.8588104],[144.9671631,-37.8586998],[144.9668121,-37.858429],[144.9663239,-37.8580208],[144.9659119,-37.8577385],[144.9656677,-37.8574982],[144.9662476,-37.8568077],[144.9664917,-37.8565292],[144.9668884,-37.8560371],[144.9672699,-37.8555908],[144.9680634,-37.8546371],[144.9682617,-37.8543892],[144.968399,-37.8543472],[144.9689484,-37.8541603],[144.9701691,-37.8537292],[144.9706421,-37.85355],[144.9742889,-37.8521881],[144.9743652,-37.8521805],[144.9753571,-37.8536682],[144.9754791,-37.8537788],[144.9756775,-37.8538589],[144.9758911,-37.8538895],[144.97612,-37.8538704],[144.9783325,-37.8531876],[144.9785156,-37.8530807],[144.9785309,-37.8529091],[144.9790344,-37.8527603],[144.9788513,-37.8522186],[144.9785767,-37.851429],[144.9783478,-37.8507309],[144.9794159,-37.8504906],[144.9806366,-37.8502083],[144.9823303,-37.8504295],[144.9830322,-37.8505096],[144.9841919,-37.8506584],[144.9840698,-37.8513184],[144.9840698,-37.8513603],[144.9839478,-37.8520699],[144.9838257,-37.8527489],[144.9837036,-37.8535004],[144.9835815,-37.8541298],[144.98349,-37.8546791],[144.9834595,-37.8547592],[144.9833221,-37.855648],[144.9854431,-37.8559303],[144.9859009,-37.8559875],[144.9865723,-37.8560791],[144.9876709,-37.8562279],[144.9896698,-37.8564873],[144.9898834,-37.8565292],[144.9901123,-37.8565903],[144.9903412,-37.8566589],[144.9904938,-37.8567276],[144.9906616,-37.8568001],[144.9908142,-37.8568687],[144.9909668,-37.8569603],[144.9916077,-37.857338],[144.9918213,-37.85746],[144.9919434,-37.8575096],[144.9920807,-37.8575706],[144.9922638,-37.8576393],[144.9924927,-37.8577194],[144.9927521,-37.8577995],[144.9929962,-37.8578491],[144.9932709,-37.8578987],[144.9932098,-37.8581772],[144.9930725,-37.8590775],[144.9927826,-37.8605804],[144.9927216,-37.86092],[144.99263,-37.8614998],[144.9926147,-37.8615875],[144.9920502,-37.8615189],[144.9915924,-37.8614578],[144.9915314,-37.8617706],[144.9914703,-37.8620796],[144.9914703,-37.8621597],[144.9914093,-37.8624382],[144.991333,-37.8628883],[144.9913025,-37.8630409],[144.9912567,-37.8633308],[144.9912415,-37.86343],[144.9910889,-37.8642502],[144.9909058,-37.8653183],[144.9907227,-37.8663406],[144.9906158,-37.866848],[144.990509,-37.8674583],[144.9904938,-37.8675575],[144.9903412,-37.8683586],[144.9902191,-37.8690109],[144.9902039,-37.8691673],[144.9900818,-37.8697472],[144.989975,-37.8703079],[144.9896545,-37.8703804],[144.9888611,-37.8706894],[144.9887695,-37.870739],[144.988678,-37.8707809],[144.9879913,-37.8710403],[144.9873657,-37.8712807],[144.9873199,-37.8712997],[144.9867401,-37.8715172],[144.9859619,-37.8718185],[144.9848328,-37.8722496],[144.9843292,-37.8724403],[144.9836884,-37.8726883],[144.983551,-37.8727379],[144.9830627,-37.8729286],[144.9824219,-37.8731689],[144.981369,-37.8735886],[144.9798737,-37.8741684],[144.9779663,-37.8749084],[144.9775543,-37.8750687],[144.9768677,-37.8753395],[144.9745026,-37.8762703],[144.9744873,-37.8762207],[144.9744415,-37.8760681],[144.974411,-37.8759308],[144.974411,-37.8757591],[144.974411,-37.8755989],[144.974411,-37.8754387],[144.974411,-37.8752785],[144.9744415,-37.8751106],[144.9744415,-37.8747787],[144.9744415,-37.8746185],[144.9744263,-37.8744392],[144.9743805,-37.8742676],[144.97435,-37.8740807],[144.9743195,-37.8738899],[144.9742889,-37.8736992],[144.9742737,-37.8735275],[144.9742737,-37.8735008],[144.9742432,-37.8734589],[144.9741821,-37.8733788],[144.9741211,-37.8732796],[144.9741211,-37.8732605],[144.9738007,-37.8729591],[144.9736023,-37.8726883],[144.9733124,-37.8724785],[144.9731293,-37.872509],[144.9730988,-37.8724785],[144.9732819,-37.8723602],[144.9733124,-37.8722496],[144.9732819,-37.8721275],[144.9732971,-37.8719788],[144.9733429,-37.8719482],[144.9734192,-37.8719292],[144.973465,-37.8719597],[144.9736023,-37.8720703],[144.9737701,-37.8721581],[144.9739532,-37.8723297],[144.9741211,-37.8721886],[144.9740601,-37.8721199],[144.9740601,-37.8720894],[144.9742126,-37.8720284],[144.9744415,-37.8719902],[144.9747162,-37.8719177],[144.9748688,-37.8718796],[144.975174,-37.871769],[144.975235,-37.8717384],[144.9753418,-37.8717079],[144.9754639,-37.8716087],[144.9755096,-37.8715591],[144.975647,-37.8711586],[144.9756775,-37.8710899],[144.9756775,-37.8706894],[144.9756775,-37.8705902],[144.9756317,-37.8703995],[144.9756012,-37.8702583],[144.9755096,-37.8700905],[144.9754791,-37.8700104],[144.9753723,-37.8698273],[144.9752197,-37.8696709],[144.9751434,-37.8695908],[144.9745483,-37.8688087],[144.9741974,-37.8684578],[144.9738007,-37.8679771],[144.9734497,-37.8675995],[144.973053,-37.86726],[144.9726868,-37.8669281],[144.9724274,-37.8667603],[144.9721527,-37.8665581],[144.9718018,-37.86623],[144.9715118,-37.8659706],[144.9712677,-37.8657303],[144.9710541,-37.8656082],[144.9705963,-37.8652802],[144.9703827,-37.8651009],[144.9703217,-37.8650398],[144.9700317,-37.8648491],[144.9697266,-37.8646584],[144.9696808,-37.8645782],[144.9697113,-37.8645172],[144.970108,-37.8644676],[144.9704895,-37.8644409],[144.9707336,-37.8644104],[144.9709015,-37.8643608],[144.9709167,-37.8643379],[144.9710236,-37.8637505],[144.9710846,-37.8634682],[144.9710999,-37.8633575],[144.9710999,-37.8633385],[144.9711304,-37.8632507],[144.9711304,-37.862999],[144.9711304,-37.8628502],[144.9710999,-37.8627396],[144.9710846,-37.862648],[144.9710388,-37.8625298],[144.9709625,-37.8622894],[144.9707642,-37.8618698],[144.9707031,-37.8618889],[144.9706573,-37.8618889],[144.9706421,-37.8618774],[144.9706116,-37.8618584],[144.9705963,-37.8618279],[144.9706421,-37.8617897],[144.9707336,-37.8617592],[144.9703217,-37.8608284],[144.9702911,-37.8607788]]]}},{"type":"Feature","properties":{"SA2_NAME":"St Kilda East","polygonId":65,"SA3_NAME":"Port Phillip","AREASQKM":2.4135,"fillColor":"#90D743","strokeColor":"#90D743","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9973907,-37.8584595],[144.9980927,-37.8585587],[144.9981689,-37.8585701],[144.9986267,-37.8586273],[144.9993286,-37.8587189],[144.999649,-37.8587685],[144.9999237,-37.8588104],[145.0002441,-37.8588486],[145.0006256,-37.8588982],[145.0009918,-37.8589478],[145.001358,-37.8589973],[145.0028534,-37.8591995],[145.0040436,-37.8593597],[145.0041504,-37.8593674],[145.0048676,-37.8594704],[145.0051575,-37.8595085],[145.0056915,-37.8595772],[145.0059357,-37.8596077],[145.0068207,-37.8597298],[145.0070343,-37.8597603],[145.0078583,-37.8598709],[145.0083313,-37.8599281],[145.0087128,-37.8599777],[145.0088806,-37.8600006],[145.0093842,-37.8600693],[145.0095825,-37.8600998],[145.0101166,-37.8601685],[145.0105133,-37.860218],[145.0104218,-37.8607674],[145.0103607,-37.8610497],[145.0103149,-37.8613586],[145.0102539,-37.8616982],[145.0102081,-37.8619385],[145.0101776,-37.8620872],[145.0101318,-37.8623505],[145.0100708,-37.8626099],[145.0100403,-37.8628273],[145.0100098,-37.8629379],[145.0098724,-37.863739],[145.0097809,-37.8642387],[145.0097198,-37.8645592],[145.0095978,-37.8652191],[145.0095825,-37.8652992],[145.0094604,-37.8659592],[145.0093231,-37.8667603],[145.0092926,-37.8668175],[145.0092468,-37.8670998],[145.0091553,-37.867588],[145.0075531,-37.8673897],[145.006897,-37.8673096],[145.0057068,-37.8671494],[145.0051117,-37.8670807],[145.0046082,-37.8670197],[145.0040588,-37.8669472],[145.00354,-37.8668785],[145.0027008,-37.8667793],[145.0018005,-37.8666687],[145.001709,-37.8666573],[145.0015869,-37.8666382],[145.0000305,-37.8664474],[144.9998932,-37.8671989],[144.9997406,-37.8678894],[144.9997253,-37.8679886],[144.9996033,-37.8686905],[144.9995575,-37.8688889],[144.9994354,-37.8695107],[144.999115,-37.8711395],[144.9989929,-37.8718185],[144.9988098,-37.8727608],[144.9986267,-37.8736572],[144.9985199,-37.8741608],[144.9984589,-37.8744774],[144.9983673,-37.8750191],[144.9983215,-37.8752098],[144.9981995,-37.8758698],[144.9981689,-37.8760109],[144.9980011,-37.8769073],[144.9979248,-37.8772888],[144.997757,-37.8781509],[144.9977264,-37.8782997],[144.9976196,-37.8788681],[144.997406,-37.8799782],[144.9973602,-37.8802376],[144.9973297,-37.8803596],[144.9971313,-37.8814392],[144.9970703,-37.8817902],[144.996994,-37.8821182],[144.9969635,-37.8823204],[144.9967346,-37.8834991],[144.9959412,-37.8821487],[144.9957581,-37.8818588],[144.9953918,-37.8812599],[144.995224,-37.8810196],[144.9949188,-37.8805389],[144.9946747,-37.8801384],[144.9945221,-37.879879],[144.9942932,-37.8795395],[144.9940338,-37.8791199],[144.9937439,-37.8786697],[144.9936523,-37.8785286],[144.9935913,-37.8784409],[144.9934998,-37.8782883],[144.9933014,-37.8779678],[144.993103,-37.8776398],[144.992691,-37.8769989],[144.9922333,-37.8762474],[144.9918213,-37.8755875],[144.9915771,-37.8752098],[144.991272,-37.8747177],[144.9911499,-37.8745193],[144.9908752,-37.8740807],[144.9907227,-37.8738289],[144.990509,-37.8735199],[144.9900513,-37.8727798],[144.9898529,-37.8724594],[144.9896393,-37.8721199],[144.9894409,-37.871788],[144.9887695,-37.870739],[144.9888611,-37.8706894],[144.9896545,-37.8703804],[144.989975,-37.8703079],[144.9900818,-37.8697472],[144.9902039,-37.8691673],[144.9902191,-37.8690109],[144.9903412,-37.8683586],[144.9904938,-37.8675575],[144.990509,-37.8674583],[144.9906158,-37.866848],[144.9907227,-37.8663406],[144.9909058,-37.8653183],[144.9910889,-37.8642502],[144.9912415,-37.86343],[144.9912567,-37.8633308],[144.9913025,-37.8630409],[144.991333,-37.8628883],[144.9914093,-37.8624382],[144.9914703,-37.8621597],[144.9914703,-37.8620796],[144.9915314,-37.8617706],[144.9915924,-37.8614578],[144.9920502,-37.8615189],[144.9926147,-37.8615875],[144.99263,-37.8614998],[144.9927216,-37.86092],[144.9927826,-37.8605804],[144.9930725,-37.8590775],[144.9932098,-37.8581772],[144.9932709,-37.8578987],[144.9937897,-37.8579788],[144.9953156,-37.8581772],[144.9958954,-37.8582573],[144.9967957,-37.8583794],[144.9973907,-37.8584595]]]}},{"type":"Feature","properties":{"SA2_NAME":"Thornbury","polygonId":43,"SA3_NAME":"Darebin - South","AREASQKM":4.9972,"fillColor":"#ACDC30","strokeColor":"#ACDC30","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9812622,-37.7525673],[144.981369,-37.7524872],[144.9815674,-37.7523804],[144.981781,-37.7521896],[144.9818115,-37.7520981],[144.981781,-37.7518806],[144.9817657,-37.7517509],[144.9816437,-37.7514877],[144.9815063,-37.7513504],[144.9813232,-37.7510376],[144.9812927,-37.7509499],[144.9812622,-37.7508087],[144.9812012,-37.7506981],[144.9811401,-37.7506104],[144.9809418,-37.7504387],[144.980835,-37.7502708],[144.983551,-37.7505302],[144.9835358,-37.7505989],[144.9836426,-37.7506104],[144.9843292,-37.750679],[144.9855499,-37.7507973],[144.9859314,-37.7508392],[144.9874725,-37.7509995],[144.987854,-37.7510376],[144.9880066,-37.7510376],[144.9881134,-37.751049],[144.9892426,-37.7511597],[144.990036,-37.7512474],[144.9911499,-37.751358],[144.9925842,-37.7515106],[144.9938965,-37.7516479],[144.9949188,-37.7517586],[144.9955292,-37.7516708],[144.9987183,-37.7519798],[144.9990692,-37.752018],[144.9993439,-37.7520485],[144.9996338,-37.752079],[145.0010834,-37.7522278],[145.0011139,-37.7522278],[145.0016479,-37.7522888],[145.0022125,-37.7523499],[145.0026398,-37.7523994],[145.0026703,-37.7523994],[145.0031281,-37.7524605],[145.0036621,-37.7525177],[145.0041504,-37.7525673],[145.0053101,-37.7527084],[145.0056152,-37.752739],[145.0063934,-37.7528305],[145.0075226,-37.7529602],[145.0085907,-37.7530899],[145.0087738,-37.753109],[145.0102997,-37.7532883],[145.0108948,-37.7533607],[145.0124512,-37.7535286],[145.0131073,-37.7535973],[145.0140991,-37.7537193],[145.0156555,-37.7538872],[145.0163574,-37.7539673],[145.018631,-37.7542191],[145.0188446,-37.7542381],[145.0205994,-37.7544289],[145.023056,-37.7546883],[145.0240631,-37.7547989],[145.0247803,-37.754879],[145.0258331,-37.7549973],[145.0267181,-37.7550888],[145.0285492,-37.7552872],[145.0285339,-37.7554474],[145.0301514,-37.7556076],[145.0313568,-37.7557297],[145.0314331,-37.7558098],[145.0314789,-37.7558594],[145.0315399,-37.7558899],[145.0317078,-37.7559891],[145.0317993,-37.7560501],[145.0320129,-37.7561989],[145.032135,-37.756321],[145.0322418,-37.7564507],[145.0322571,-37.7565994],[145.0322418,-37.7567787],[145.0321808,-37.7568474],[145.0321503,-37.7569084],[145.0318146,-37.7571373],[145.031723,-37.7572098],[145.031662,-37.7572479],[145.0314789,-37.75737],[145.0313721,-37.7574196],[145.0312195,-37.7574692],[145.0306549,-37.7574577],[145.0303192,-37.7574196],[145.0301514,-37.7574196],[145.0297699,-37.7574806],[145.02948,-37.7575493],[145.0293427,-37.7575989],[145.0292206,-37.7576904],[145.0290985,-37.7577896],[145.0290222,-37.7580299],[145.0290985,-37.7581787],[145.0291748,-37.7584076],[145.0293121,-37.7587395],[145.0293427,-37.7588997],[145.0294189,-37.7590904],[145.0295105,-37.7591972],[145.0295563,-37.7592506],[145.0296478,-37.7594185],[145.0297241,-37.7595978],[145.0298615,-37.7598076],[145.029953,-37.7600288],[145.0299225,-37.7602272],[145.0298004,-37.7604103],[145.0296326,-37.7605591],[145.0292511,-37.7607689],[145.029007,-37.7609177],[145.028717,-37.7611275],[145.0285492,-37.7612877],[145.0285034,-37.7613487],[145.0284119,-37.7614975],[145.0283813,-37.7616272],[145.028183,-37.7619209],[145.0279999,-37.7622986],[145.0279388,-37.7623901],[145.0279236,-37.7625084],[145.0279083,-37.7625999],[145.0278931,-37.7626801],[145.0278931,-37.7627678],[145.0278931,-37.7628784],[145.0278625,-37.7630577],[145.0278625,-37.7631607],[145.0278625,-37.7632904],[145.0278473,-37.7633781],[145.027832,-37.7634697],[145.027832,-37.763588],[145.027832,-37.7637405],[145.027832,-37.7637901],[145.0278168,-37.7638206],[145.0278778,-37.7639999],[145.0280304,-37.7640991],[145.0283508,-37.7642097],[145.0284729,-37.7642479],[145.028595,-37.7642708],[145.028717,-37.7642975],[145.0287933,-37.7643204],[145.0288696,-37.7643509],[145.0289612,-37.7643776],[145.029068,-37.7644005],[145.0291748,-37.7644386],[145.0293579,-37.7644997],[145.0294189,-37.7645302],[145.02948,-37.7645607],[145.029541,-37.7645798],[145.0296326,-37.7645988],[145.0297546,-37.7646294],[145.0298462,-37.7646599],[145.029953,-37.7646904],[145.0300598,-37.7647285],[145.0301971,-37.7647781],[145.030304,-37.7648201],[145.0304108,-37.7648506],[145.0305328,-37.7649078],[145.0306091,-37.7649574],[145.0307007,-37.7650299],[145.0307617,-37.76511],[145.0308228,-37.7651978],[145.030899,-37.7653885],[145.0309448,-37.7654991],[145.0309906,-37.7656288],[145.0310211,-37.7657585],[145.0311127,-37.7659988],[145.0311432,-37.7661095],[145.0311584,-37.7662086],[145.0311737,-37.7662888],[145.031189,-37.7663803],[145.031189,-37.766468],[145.0312042,-37.7665596],[145.031189,-37.7666283],[145.0305939,-37.7665596],[145.0285492,-37.7663498],[145.0274048,-37.7662277],[145.0264893,-37.7661285],[145.0246124,-37.7659302],[145.0215149,-37.7655983],[145.0203705,-37.76548],[145.0192413,-37.765358],[145.0181122,-37.7652397],[145.0170288,-37.7651291],[145.015976,-37.7650185],[145.0122528,-37.7646179],[145.0104523,-37.7644272],[145.0087585,-37.7642479],[145.0075073,-37.7641106],[145.006546,-37.7639999],[145.0053711,-37.7638702],[145.0042419,-37.7637482],[145.0032196,-37.7636299],[145.0027924,-37.763588],[145.0023193,-37.7635307],[145.0018616,-37.7634773],[145.0010223,-37.7633896],[145.0004272,-37.7633209],[145.0003052,-37.7633095],[144.9998016,-37.7632599],[144.9999084,-37.7626877],[144.9993439,-37.7626305],[144.9992828,-37.762619],[144.998764,-37.762558],[144.9977112,-37.7624397],[144.9969025,-37.7622795],[144.9963531,-37.7622185],[144.9956665,-37.7621384],[144.995224,-37.7620888],[144.9950104,-37.7620583],[144.994339,-37.7619781],[144.993454,-37.761879],[144.9927521,-37.7617989],[144.992691,-37.7620506],[144.9873657,-37.7614288],[144.987381,-37.7613602],[144.987442,-37.7610779],[144.9875031,-37.7607307],[144.9876251,-37.7600479],[144.9878082,-37.7590981],[144.9879913,-37.7581787],[144.9854126,-37.7578773],[144.98526,-37.7578773],[144.9844971,-37.7577972],[144.9837494,-37.7577209],[144.9806824,-37.7573509],[144.9801636,-37.7572899],[144.9798737,-37.7564583],[144.9797821,-37.7562599],[144.9796906,-37.7556496],[144.979599,-37.7553673],[144.9795532,-37.7552109],[144.9794922,-37.7550697],[144.9794617,-37.7550087],[144.9794617,-37.7549706],[144.9795074,-37.7548676],[144.9796295,-37.7547684],[144.9796448,-37.7547073],[144.9795685,-37.7546196],[144.9795074,-37.7545509],[144.9792938,-37.7543678],[144.9792328,-37.7542191],[144.9792938,-37.7539978],[144.9793396,-37.7539101],[144.9794312,-37.7537575],[144.9797516,-37.7533493],[144.97995,-37.7531586],[144.9801178,-37.7530403],[144.9802246,-37.7530098],[144.9804535,-37.7529488],[144.9804993,-37.7529182],[144.9806213,-37.7528305],[144.9807739,-37.7526894],[144.9808197,-37.7526779],[144.9810791,-37.7526894],[144.9811401,-37.7526588],[144.9812164,-37.7525978],[144.9812622,-37.7525673]]]}},{"type":"Feature","properties":{"SA2_NAME":"Toorak","polygonId":69,"SA3_NAME":"Stonnington - West","AREASQKM":4.3233,"fillColor":"#B1DD2F","strokeColor":"#B1DD2F","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[145.0046844,-37.8405876],[145.004715,-37.8404999],[145.0048065,-37.8400002],[145.0049133,-37.8394203],[145.0050507,-37.8386192],[145.0050812,-37.8385391],[145.005249,-37.8377075],[145.0053253,-37.8373108],[145.0054321,-37.8367996],[145.005722,-37.8353195],[145.0061035,-37.8332787],[145.0061188,-37.833168],[145.0062561,-37.8324776],[145.0063629,-37.8320007],[145.0064392,-37.8315697],[145.0067596,-37.8316574],[145.0071716,-37.8317299],[145.007431,-37.8317909],[145.0076752,-37.8318672],[145.0079041,-37.8320198],[145.0081635,-37.8321991],[145.0083618,-37.8323708],[145.0084991,-37.8325386],[145.0086212,-37.8327484],[145.0088654,-37.833168],[145.0090027,-37.8333282],[145.00914,-37.8334389],[145.0093384,-37.8335075],[145.0095367,-37.8335381],[145.0096893,-37.833519],[145.0098724,-37.8334198],[145.0100708,-37.8332672],[145.0102997,-37.8330688],[145.0104523,-37.8328705],[145.0105133,-37.8326607],[145.0105591,-37.8323898],[145.0106201,-37.8319397],[145.0106812,-37.8316879],[145.0108337,-37.831459],[145.0110168,-37.8312798],[145.0113831,-37.8310585],[145.0119629,-37.8307381],[145.0122833,-37.8306007],[145.0125122,-37.8305397],[145.012619,-37.8305206],[145.0127106,-37.8305092],[145.0129089,-37.8304977],[145.0131378,-37.8305397],[145.0134583,-37.8306198],[145.0137329,-37.8306999],[145.0139313,-37.8307495],[145.0141907,-37.8308601],[145.0143738,-37.8309402],[145.01474,-37.8311386],[145.0151215,-37.8313484],[145.0154114,-37.8315392],[145.015686,-37.8316879],[145.016098,-37.8318901],[145.0163422,-37.8320084],[145.0166473,-37.8322105],[145.0168152,-37.8322487],[145.0170288,-37.8322372],[145.0172729,-37.8321609],[145.0175629,-37.8320389],[145.0179596,-37.8318596],[145.0183105,-37.8317108],[145.0185699,-37.8316498],[145.0189056,-37.8316193],[145.019165,-37.8316193],[145.0194244,-37.8316574],[145.0198059,-37.8317375],[145.0200806,-37.8318176],[145.0202789,-37.8318787],[145.0207214,-37.8319893],[145.0209961,-37.832058],[145.0211639,-37.8321304],[145.0217133,-37.8323402],[145.022171,-37.8326797],[145.0222015,-37.8327675],[145.0222931,-37.8329773],[145.0223694,-37.83321],[145.0224304,-37.8334999],[145.022522,-37.8337402],[145.0226898,-37.8339996],[145.0229034,-37.8341675],[145.0232086,-37.8342896],[145.0235596,-37.8343697],[145.0239563,-37.8344307],[145.0244293,-37.8344879],[145.0245514,-37.8344994],[145.0246124,-37.8344879],[145.0247498,-37.8346672],[145.0249023,-37.8347893],[145.0250092,-37.8348885],[145.0251312,-37.8350182],[145.0252991,-37.8352203],[145.0254059,-37.8353081],[145.0254974,-37.8353996],[145.025589,-37.8354874],[145.0257721,-37.835659],[145.0258789,-37.8357697],[145.0264587,-37.8363075],[145.0266571,-37.8365173],[145.0269012,-37.8367386],[145.0270233,-37.8368492],[145.0271912,-37.836998],[145.0273132,-37.8371086],[145.0274048,-37.8371696],[145.0276337,-37.8373489],[145.027832,-37.8375282],[145.0279083,-37.8376007],[145.0280609,-37.8376694],[145.0284119,-37.83778],[145.0284729,-37.8377876],[145.0291595,-37.8378181],[145.0298157,-37.8378372],[145.029892,-37.8378372],[145.0304108,-37.8378105],[145.0307617,-37.8377495],[145.0309753,-37.8376808],[145.0310974,-37.8376274],[145.031189,-37.8375778],[145.0312653,-37.8375282],[145.0313873,-37.8374481],[145.0314789,-37.8373909],[145.0316162,-37.8373375],[145.0316925,-37.8373108],[145.0317688,-37.8372879],[145.0318909,-37.8372803],[145.0321045,-37.8372803],[145.0323181,-37.8373108],[145.0325317,-37.8373299],[145.0326691,-37.8373489],[145.0325317,-37.8382072],[145.0322723,-37.8396683],[145.0322418,-37.8398285],[145.0317535,-37.839798],[145.031601,-37.8406372],[145.0315399,-37.8409805],[145.0315094,-37.8409805],[145.0315094,-37.8410378],[145.0314484,-37.8413696],[145.0314636,-37.8414497],[145.0314484,-37.8415108],[145.0313568,-37.8419609],[145.0313568,-37.8419685],[145.0313416,-37.8420105],[145.0311432,-37.8431702],[145.0310516,-37.8436394],[145.0310516,-37.8437195],[145.0314178,-37.8437576],[145.0315247,-37.8437805],[145.0313568,-37.8446999],[145.031189,-37.8455772],[145.0309601,-37.8467407],[145.0309296,-37.8469009],[145.0306702,-37.8482704],[145.0306091,-37.848629],[145.0303802,-37.8498077],[145.0302429,-37.8505974],[145.0302124,-37.850708],[145.0300446,-37.8516197],[145.0296631,-37.8515701],[145.02948,-37.8515472],[145.0285645,-37.851429],[145.0279083,-37.8513374],[145.0275574,-37.8512878],[145.026886,-37.8512077],[145.0254364,-37.8510208],[145.0248413,-37.8509407],[145.0241394,-37.8508377],[145.0237274,-37.8507881],[145.0225983,-37.8506393],[145.0214386,-37.8504906],[145.020462,-37.8503609],[145.0202942,-37.850338],[145.0197296,-37.8502693],[145.0188751,-37.8501587],[145.0182648,-37.8500786],[145.0177765,-37.8500099],[145.016861,-37.8498878],[145.0154877,-37.8497086],[145.0124207,-37.8492889],[145.0123138,-37.8492775],[145.0122833,-37.8492699],[145.0103607,-37.8490295],[145.0097809,-37.8489494],[145.009201,-37.8488808],[145.00914,-37.8488693],[145.0086975,-37.8488083],[145.0078583,-37.8486977],[145.0074158,-37.8486481],[145.0071564,-37.8486099],[145.0067749,-37.8485603],[145.0062256,-37.8484879],[145.0053101,-37.8483696],[145.0044556,-37.848259],[145.0037689,-37.8481789],[145.0031738,-37.8480988],[145.0032806,-37.8476105],[145.0033722,-37.8471298],[145.003479,-37.8466606],[145.0035706,-37.8461876],[145.0037384,-37.8453979],[145.0037689,-37.8452072],[145.0038605,-37.84478],[145.0039215,-37.8445206],[145.0039215,-37.8444481],[145.0040131,-37.8440094],[145.0040741,-37.843708],[145.0042114,-37.8429985],[145.0042572,-37.8427582],[145.0043182,-37.8424797],[145.0043793,-37.8420792],[145.0044403,-37.8417892],[145.0044708,-37.8416977],[145.0045166,-37.8414307],[145.0045471,-37.8413086],[145.0045929,-37.8410797],[145.0046692,-37.8406677],[145.0046844,-37.8405876]]]}},{"type":"Feature","properties":{"SA2_NAME":"West Melbourne","polygonId":58,"SA3_NAME":"Melbourne City","AREASQKM":6.1992,"fillColor":"#DEE318","strokeColor":"#DEE318","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[144.9075775,-37.8061295],[144.9076691,-37.8059082],[144.9082184,-37.8045998],[144.908432,-37.8041496],[144.9085999,-37.8037605],[144.908905,-37.8031273],[144.9092712,-37.8024101],[144.9095917,-37.8017998],[144.9101105,-37.8010483],[144.910202,-37.8009186],[144.9104004,-37.8006287],[144.910675,-37.8003387],[144.9109802,-37.8000984],[144.9113464,-37.7998695],[144.9116974,-37.7997284],[144.9120636,-37.7996292],[144.9124146,-37.7995682],[144.9127655,-37.7995682],[144.9131165,-37.7996101],[144.9134827,-37.7997398],[144.9137573,-37.7999802],[144.9140625,-37.8001785],[144.9144135,-37.8002472],[144.9147949,-37.8002281],[144.9150696,-37.8001099],[144.9154663,-37.7998276],[144.9158783,-37.7994576],[144.9161987,-37.7990799],[144.9163818,-37.7987595],[144.9165039,-37.7983589],[144.9164886,-37.7982101],[144.9197235,-37.7987099],[144.9220428,-37.7990379],[144.9256592,-37.7995605],[144.9258118,-37.7994385],[144.9260406,-37.799469],[144.9271851,-37.7996483],[144.9276428,-37.799839],[144.9296417,-37.8001785],[144.9323578,-37.8008194],[144.9341888,-37.8014107],[144.9358978,-37.8022804],[144.9365234,-37.8025589],[144.937851,-37.8030777],[144.9394989,-37.8043404],[144.9410248,-37.805378],[144.9412079,-37.8055992],[144.9412994,-37.8057098],[144.9414368,-37.8058395],[144.9418335,-37.8061485],[144.9418945,-37.8063202],[144.9420013,-37.80653],[144.942627,-37.8073196],[144.9428101,-37.8075676],[144.9433594,-37.8082695],[144.9438324,-37.8088875],[144.9443359,-37.8095207],[144.9447632,-37.8100586],[144.9451904,-37.8105888],[144.9456024,-37.8111076],[144.9459686,-37.8115692],[144.9460144,-37.8116379],[144.9454346,-37.8118591],[144.9452362,-37.812088],[144.9450836,-37.8120575],[144.944931,-37.8120499],[144.9447021,-37.8120689],[144.9437103,-37.812458],[144.943512,-37.8125191],[144.9433289,-37.8125381],[144.9431763,-37.8125381],[144.9430237,-37.8125],[144.9428711,-37.8124504],[144.9420166,-37.8119507],[144.9413605,-37.8115997],[144.9408112,-37.8113289],[144.940094,-37.8109703],[144.9391022,-37.8105087],[144.9385071,-37.8102684],[144.937912,-37.8100471],[144.9372253,-37.8098373],[144.9367828,-37.8097191],[144.9359589,-37.8095703],[144.9354248,-37.8095093],[144.9350128,-37.8094482],[144.9347229,-37.8101501],[144.9346924,-37.8103104],[144.9346619,-37.8105278],[144.9346924,-37.8119087],[144.934433,-37.8126678],[144.9342499,-37.8129005],[144.9341278,-37.8137093],[144.934082,-37.8138885],[144.934021,-37.8143578],[144.9339447,-37.8146973],[144.9338379,-37.8151398],[144.9337311,-37.8155098],[144.9334259,-37.8164673],[144.9328613,-37.8180199],[144.932373,-37.8192673],[144.9321594,-37.8198586],[144.931839,-37.8207283],[144.9318237,-37.8208275],[144.9314117,-37.8207893],[144.931427,-37.8206902],[144.9309692,-37.8206406],[144.9309387,-37.8207207],[144.9279633,-37.8204002],[144.9279785,-37.8203201],[144.9271393,-37.8202286],[144.9271393,-37.8201981],[144.9269409,-37.820179],[144.9269257,-37.8202095],[144.9268036,-37.8201904],[144.9268036,-37.8201599],[144.9263611,-37.8201103],[144.9263458,-37.8201408],[144.9255524,-37.8200607],[144.9255524,-37.8200188],[144.9251404,-37.8199806],[144.9251251,-37.8200073],[144.9247894,-37.8199806],[144.9203644,-37.8200302],[144.9197693,-37.8200302],[144.9173889,-37.8203773],[144.9157867,-37.82061],[144.9128571,-37.8210373],[144.9128723,-37.8211098],[144.9120026,-37.8214378],[144.9119415,-37.8214302],[144.9116821,-37.8214874],[144.9114532,-37.8216209],[144.9113312,-37.8216095],[144.9109802,-37.8217201],[144.9104614,-37.8218307],[144.9101105,-37.8219872],[144.9098511,-37.8220406],[144.9095154,-37.8222275],[144.9082336,-37.8227272],[144.9070282,-37.8232994],[144.9055634,-37.8228798],[144.9061279,-37.8222504],[144.9065094,-37.8215904],[144.9066315,-37.8210182],[144.906601,-37.8201675],[144.9064789,-37.819149],[144.9062347,-37.818119],[144.905838,-37.8167877],[144.9055939,-37.8158989],[144.9054718,-37.8153801],[144.9054413,-37.8152885],[144.9054413,-37.8142395],[144.9054565,-37.813488],[144.9055634,-37.8127708],[144.9057159,-37.8118706],[144.9059296,-37.8111382],[144.9061127,-37.8104897],[144.9062195,-37.8101196],[144.9062805,-37.8097878],[144.906311,-37.8095093],[144.9063721,-37.8091583],[144.9064331,-37.8088379],[144.9066925,-37.8082809],[144.9069519,-37.8076286],[144.907196,-37.8070183],[144.9075775,-37.8061295]]]}},{"type":"Feature","properties":{"SA2_NAME":"Yarra - North","polygonId":76,"SA3_NAME":"Yarra","AREASQKM":5.2089,"fillColor":"#F7E620","strokeColor":"#F7E620","strokeWeight":1},"geometry":{"type":"Polygon","coordinates":[[[145.0279388,-37.7813606],[145.0286713,-37.7812195],[145.0300598,-37.7809601],[145.0311432,-37.7807579],[145.0322571,-37.7805481],[145.0334167,-37.7803307],[145.0339203,-37.7802391],[145.0344391,-37.780098],[145.0345612,-37.7800598],[145.0346832,-37.7800179],[145.0347748,-37.7799683],[145.0348816,-37.7799187],[145.0349731,-37.7798576],[145.0350647,-37.7798004],[145.0351562,-37.7797279],[145.0352325,-37.7796478],[145.0358124,-37.7790489],[145.035965,-37.7788773],[145.0360718,-37.7788887],[145.0361328,-37.7789078],[145.0361786,-37.7789307],[145.0362549,-37.7789688],[145.0363312,-37.7790108],[145.036377,-37.7790375],[145.0364227,-37.77911],[145.0364838,-37.7791901],[145.0365295,-37.7794189],[145.0365601,-37.7794876],[145.0365906,-37.7795181],[145.0366669,-37.7795601],[145.0367584,-37.7795982],[145.03685,-37.7796288],[145.0370026,-37.7796402],[145.0371399,-37.7796402],[145.0372314,-37.7796478],[145.0373077,-37.7796478],[145.0373535,-37.7796288],[145.037384,-37.7796288],[145.0373993,-37.7796173],[145.0374451,-37.7796097],[145.0375214,-37.7795677],[145.0375519,-37.7795601],[145.0375824,-37.7795486],[145.0376434,-37.7795296],[145.0376892,-37.7795105],[145.037735,-37.77948],[145.0378113,-37.7793884],[145.0378571,-37.7793274],[145.0379028,-37.7792778],[145.0379791,-37.7792282],[145.0380402,-37.7792091],[145.0381012,-37.7791786],[145.0381317,-37.7791672],[145.0381775,-37.7791672],[145.0382233,-37.7791786],[145.0382843,-37.7791977],[145.0383911,-37.7792282],[145.0384979,-37.7792778],[145.0385742,-37.7793274],[145.03862,-37.779438],[145.03862,-37.7795486],[145.0385895,-37.7796898],[145.0385742,-37.7798195],[145.0385742,-37.7798691],[145.0385437,-37.7799606],[145.0384979,-37.7800407],[145.0384827,-37.7800903],[145.0384521,-37.7801895],[145.0384216,-37.7802696],[145.0384216,-37.7803001],[145.0384216,-37.7803574],[145.0384064,-37.7804108],[145.0383606,-37.7804375],[145.038269,-37.7804985],[145.0382233,-37.780529],[145.0381775,-37.7805405],[145.0381012,-37.7805481],[145.0379791,-37.7805595],[145.0379028,-37.7805786],[145.0378723,-37.7805977],[145.0378418,-37.7806282],[145.0378418,-37.7806702],[145.0378418,-37.7807198],[145.0378418,-37.7807503],[145.0378876,-37.7808189],[145.0379333,-37.78088],[145.0379639,-37.7809181],[145.0380096,-37.7809982],[145.0380402,-37.7810707],[145.0380707,-37.7812004],[145.0380554,-37.7812691],[145.0380096,-37.7813492],[145.0379639,-37.7813873],[145.0379028,-37.7814674],[145.037735,-37.781559],[145.0377045,-37.7815781],[145.0376892,-37.7815895],[145.037674,-37.7815895],[145.0376129,-37.7816086],[145.0375519,-37.78162],[145.0374451,-37.7816086],[145.0373535,-37.7815895],[145.0372925,-37.781559],[145.0372009,-37.7815399],[145.0371552,-37.7815285],[145.0370789,-37.7815208],[145.0370178,-37.7815208],[145.0369873,-37.7815208],[145.0369415,-37.7815475],[145.0368958,-37.7816086],[145.0368805,-37.7816696],[145.0368652,-37.7817574],[145.03685,-37.7818375],[145.03685,-37.7819176],[145.03685,-37.7819672],[145.0368652,-37.7820206],[145.0368805,-37.7820587],[145.0369568,-37.7821503],[145.0369873,-37.7821999],[145.0370331,-37.7822495],[145.0370636,-37.7822876],[145.0371094,-37.7823181],[145.0371704,-37.7823372],[145.0372009,-37.7823486],[145.037262,-37.7823792],[145.0373383,-37.7823982],[145.0373993,-37.7824097],[145.0374603,-37.7824097],[145.0375214,-37.7823982],[145.0375824,-37.7823982],[145.037674,-37.7823982],[145.0377502,-37.7824402],[145.037796,-37.7824974],[145.0378113,-37.7825775],[145.0378418,-37.7826576],[145.0378418,-37.7827187],[145.0378571,-37.7827682],[145.0378876,-37.7828178],[145.0378723,-37.7828598],[145.0378723,-37.782959],[145.0378876,-37.7830276],[145.0379181,-37.7831078],[145.0379181,-37.7831497],[145.0379181,-37.7831879],[145.0379333,-37.7832375],[145.0379639,-37.7832985],[145.0381165,-37.7834473],[145.0381775,-37.7835007],[145.038269,-37.7835503],[145.0383606,-37.7835693],[145.0384521,-37.7835693],[145.0385132,-37.7835693],[145.03862,-37.7835693],[145.0388336,-37.7835693],[145.0389404,-37.7835884],[145.0390472,-37.7836075],[145.0391388,-37.7836494],[145.0392303,-37.78368],[145.0393372,-37.7837296],[145.0394897,-37.7837906],[145.0397339,-37.7839279],[145.0397797,-37.7839699],[145.0399475,-37.7840881],[145.0400238,-37.7841377],[145.0401001,-37.7841873],[145.0401917,-37.7842178],[145.0400543,-37.784729],[145.0400696,-37.7849083],[145.0400848,-37.785038],[145.0401459,-37.7851486],[145.0402374,-37.7852402],[145.0403595,-37.7853088],[145.0404663,-37.7853584],[145.0405884,-37.7854004],[145.040802,-37.7854385],[145.0409393,-37.7854576],[145.0410614,-37.7854576],[145.0411835,-37.7854195],[145.0412903,-37.7853584],[145.0414429,-37.7852898],[145.0415497,-37.7851791],[145.0416565,-37.7850876],[145.0417633,-37.7850189],[145.0418701,-37.7849808],[145.0422363,-37.7848701],[145.0425262,-37.7847977],[145.0429077,-37.7847099],[145.0431519,-37.7846603],[145.043335,-37.7846107],[145.0435944,-37.7845306],[145.0437927,-37.7844582],[145.0439758,-37.7843781],[145.0441589,-37.7842674],[145.044281,-37.7841797],[145.0444031,-37.7840996],[145.0445404,-37.7840309],[145.0447083,-37.7839584],[145.0448303,-37.7839279],[145.0449524,-37.7839203],[145.0450287,-37.7839203],[145.0450897,-37.7839394],[145.0451813,-37.783989],[145.0452423,-37.7840691],[145.0452728,-37.7841988],[145.0452728,-37.7843208],[145.0452271,-37.78442],[145.0451508,-37.7845497],[145.0450287,-37.784729],[145.0449219,-37.7848778],[145.0447998,-37.7849884],[145.044693,-37.78508],[145.0444946,-37.7852898],[145.0443115,-37.7855186],[145.0441437,-37.7857399],[145.0439301,-37.7860184],[145.0437012,-37.7863388],[145.0435791,-37.7865105],[145.0435181,-37.7866096],[145.0433502,-37.7867889],[145.0432434,-37.7868881],[145.0431213,-37.7869606],[145.0429993,-37.7869873],[145.0428467,-37.7869987],[145.0427094,-37.7869682],[145.042572,-37.7869072],[145.04245,-37.7868309],[145.0423431,-37.7867279],[145.0422516,-37.7866402],[145.0421906,-37.7865372],[145.0421295,-37.7863808],[145.0420837,-37.7862206],[145.0419922,-37.7860985],[145.0419006,-37.7859993],[145.0417633,-37.7859383],[145.041626,-37.7859192],[145.0415192,-37.7859306],[145.0414124,-37.7859573],[145.0413361,-37.7860107],[145.0412445,-37.7860985],[145.0411377,-37.7862396],[145.0410461,-37.7863579],[145.0409698,-37.786499],[145.0409393,-37.7865982],[145.0409241,-37.7867088],[145.0409393,-37.7868195],[145.0409851,-37.7869377],[145.0410309,-37.7870407],[145.0411377,-37.7871475],[145.0412598,-37.7872696],[145.0415192,-37.7875404],[145.0416107,-37.7876892],[145.0416718,-37.7878609],[145.0417175,-37.7880974],[145.0417175,-37.7882195],[145.041687,-37.7883072],[145.0416412,-37.7884598],[145.0415955,-37.7886505],[145.0415344,-37.7888184],[145.0414124,-37.7890587],[145.0413055,-37.7892685],[145.0411835,-37.7894402],[145.0410156,-37.7895889],[145.040863,-37.789669],[145.0406189,-37.7897301],[145.0406036,-37.7897301],[145.0404205,-37.7897606],[145.0401001,-37.7897682],[145.0396729,-37.7897606],[145.0391388,-37.7897606],[145.0378876,-37.7897301],[145.0373383,-37.7897491],[145.0367126,-37.7897491],[145.0358429,-37.7897491],[145.0354614,-37.7897682],[145.0350037,-37.7897987],[145.0336609,-37.7898674],[145.0334167,-37.7898903],[145.0330963,-37.7899208],[145.0327911,-37.7899475],[145.0323792,-37.789959],[145.0321045,-37.789959],[145.0319672,-37.7899399],[145.0318909,-37.7899284],[145.031662,-37.7898903],[145.0315094,-37.7898178],[145.031311,-37.7897186],[145.0310974,-37.7896004],[145.0308533,-37.7894402],[145.0306396,-37.7893372],[145.0304718,-37.789238],[145.030304,-37.7891197],[145.0298157,-37.7888374],[145.0298004,-37.7888298],[145.0296021,-37.7886772],[145.02948,-37.788578],[145.0294037,-37.7884903],[145.0293121,-37.7883606],[145.0292206,-37.7881775],[145.029007,-37.787838],[145.0288391,-37.78759],[145.0287323,-37.7874107],[145.0286102,-37.7871704],[145.0285339,-37.7870598],[145.0283508,-37.7869606],[145.028183,-37.7868881],[145.0279388,-37.78685],[145.027771,-37.78685],[145.0276337,-37.7868576],[145.0273895,-37.7868996],[145.0270691,-37.7869492],[145.0265198,-37.7869797],[145.0262604,-37.7869682],[145.026062,-37.7869377],[145.0258179,-37.7868881],[145.0255432,-37.7868004],[145.0254517,-37.7867584],[145.025238,-37.7867203],[145.0248718,-37.7866173],[145.0246124,-37.7865372],[145.0243835,-37.7864876],[145.0241394,-37.7864685],[145.0239105,-37.7864609],[145.0236359,-37.7864685],[145.0233307,-37.7864685],[145.0231476,-37.7864685],[145.0230408,-37.7864685],[145.0225067,-37.7864799],[145.0222626,-37.7865601],[145.0220642,-37.7866592],[145.0218811,-37.7867775],[145.0217438,-37.78685],[145.0215912,-37.7868881],[145.0213013,-37.7869301],[145.0211182,-37.7869492],[145.0209198,-37.7869606],[145.0207214,-37.7869186],[145.0205231,-37.7868576],[145.0203247,-37.7867699],[145.0202637,-37.7867508],[145.0200195,-37.7866478],[145.0197754,-37.7865677],[145.0195312,-37.786499],[145.0192108,-37.7864189],[145.0189667,-37.7863808],[145.0187225,-37.7863503],[145.0185089,-37.7863274],[145.0184174,-37.7863007],[145.0178528,-37.7861595],[145.0174103,-37.786068],[145.0169373,-37.7859879],[145.0167999,-37.7859688],[145.0161591,-37.7858505],[145.0153503,-37.7857285],[145.0146027,-37.7856483],[145.013916,-37.7855797],[145.0138855,-37.7855797],[145.0136108,-37.7855797],[145.013504,-37.7855682],[145.0133209,-37.7855873],[145.0131683,-37.7856598],[145.013092,-37.7857399],[145.0130615,-37.7858582],[145.0131226,-37.7860298],[145.0132294,-37.7861977],[145.013382,-37.7863693],[145.0136871,-37.7865181],[145.0140228,-37.7867088],[145.0143127,-37.786869],[145.014679,-37.7871475],[145.0149994,-37.7874184],[145.0154724,-37.7877884],[145.0158844,-37.7881584],[145.0161743,-37.7884178],[145.0163879,-37.7886009],[145.0166626,-37.7888985],[145.0169373,-37.7892494],[145.0171967,-37.7896881],[145.0173492,-37.7898979],[145.0175476,-37.7901077],[145.0177765,-37.7903709],[145.0179596,-37.7905502],[145.0181122,-37.7907104],[145.0184631,-37.7910576],[145.0188293,-37.7913895],[145.019104,-37.7916489],[145.0193481,-37.7919006],[145.0195007,-37.7921181],[145.0195923,-37.7922974],[145.0196228,-37.7925072],[145.0195923,-37.7926674],[145.019516,-37.792778],[145.0193634,-37.7928505],[145.0191345,-37.7928696],[145.0188599,-37.7928581],[145.0185394,-37.7928085],[145.0182037,-37.7927399],[145.0179596,-37.7926903],[145.0177612,-37.7926903],[145.0171814,-37.7926407],[145.0169067,-37.7926102],[145.0164948,-37.7925606],[145.0160522,-37.792469],[145.0156097,-37.7923393],[145.0148468,-37.7921104],[145.0145569,-37.7920799],[145.014328,-37.7920799],[145.0141296,-37.7921104],[145.0140228,-37.7921791],[145.013916,-37.7923203],[145.0138702,-37.7925377],[145.0138702,-37.7929382],[145.0138397,-37.7933578],[145.0138397,-37.7935982],[145.0139008,-37.7938385],[145.0139771,-37.7939796],[145.0140991,-37.7941284],[145.0142212,-37.7942505],[145.0144196,-37.7943306],[145.0148468,-37.7945099],[145.0151215,-37.7946472],[145.0154419,-37.7947998],[145.0157928,-37.7949409],[145.0161743,-37.7950706],[145.0166321,-37.7951889],[145.0170288,-37.7952576],[145.0174103,-37.79533],[145.0176086,-37.7954102],[145.0177307,-37.7954903],[145.017868,-37.795639],[145.0179138,-37.7957687],[145.0179291,-37.7959099],[145.0178528,-37.7960587],[145.0176697,-37.7962303],[145.0174713,-37.7964973],[145.0174103,-37.7966995],[145.0174408,-37.7969894],[145.0175476,-37.7971878],[145.0177002,-37.7972984],[145.0180511,-37.7974205],[145.0182648,-37.7975082],[145.0185394,-37.7976379],[145.0188599,-37.7977486],[145.0195007,-37.7979584],[145.0198669,-37.7980309],[145.0201874,-37.7980804],[145.0204468,-37.7981186],[145.0206299,-37.7981987],[145.020752,-37.7982788],[145.0208588,-37.7984085],[145.0209045,-37.7985306],[145.0209045,-37.7986488],[145.0208588,-37.7987976],[145.0207214,-37.7989197],[145.0205078,-37.7990494],[145.0202332,-37.7991905],[145.0197296,-37.7993889],[145.0192871,-37.7995605],[145.0189819,-37.7996902],[145.0187683,-37.7998085],[145.0185852,-37.7999687],[145.0185547,-37.8000183],[145.0185089,-37.8000984],[145.0185089,-37.8002396],[145.0185547,-37.8003807],[145.018692,-37.8005409],[145.0188293,-37.8006592],[145.0190582,-37.800808],[145.0193634,-37.8010406],[145.0196533,-37.8012772],[145.0201111,-37.8016586],[145.0205688,-37.8021088],[145.0207367,-37.8022499],[145.0208435,-37.8023605],[145.0209808,-37.8024788],[145.0210571,-37.8026199],[145.0210876,-37.8027496],[145.0210724,-37.8028603],[145.0209503,-37.80299],[145.0206757,-37.8031883],[145.0203094,-37.8033791],[145.0199738,-37.8035393],[145.0196533,-37.8036194],[145.0194702,-37.8036575],[145.0193329,-37.8036575],[145.0190125,-37.8035889],[145.018692,-37.8034973],[145.0183563,-37.8034096],[145.0181427,-37.8033791],[145.0179596,-37.80336],[145.0177612,-37.8033485],[145.0172424,-37.8032608],[145.0167694,-37.8031197],[145.0163422,-37.802948],[145.0159607,-37.8027077],[145.0157166,-37.8025703],[145.0155792,-37.8024483],[145.0154724,-37.8023109],[145.0154114,-37.8021202],[145.0153351,-37.8017502],[145.0152893,-37.8013802],[145.0151978,-37.8009491],[145.0151062,-37.8006172],[145.0150299,-37.8004379],[145.0148926,-37.800209],[145.0147858,-37.8000984],[145.0144958,-37.7999001],[145.0142212,-37.7997093],[145.0140076,-37.7995987],[145.0136719,-37.7994499],[145.013382,-37.7993393],[145.0128937,-37.7992287],[145.0123444,-37.7991295],[145.0118713,-37.7990685],[145.0113983,-37.7990074],[145.0111389,-37.7990189],[145.0109253,-37.7990608],[145.0107117,-37.7991676],[145.0105438,-37.7993393],[145.010376,-37.79953],[145.0101776,-37.7996979],[145.009903,-37.7998695],[145.0095062,-37.8000603],[145.0090179,-37.8002892],[145.0084991,-37.800499],[145.0080109,-37.8006897],[145.0076904,-37.800808],[145.00737,-37.8009109],[145.0071259,-37.80093],[145.0069733,-37.8009109],[145.0067902,-37.800808],[145.0066376,-37.8006783],[145.0065002,-37.800499],[145.0064392,-37.8003006],[145.006424,-37.8001099],[145.0064392,-37.7998009],[145.0064545,-37.7995377],[145.0065002,-37.7992401],[145.0065613,-37.7989693],[145.0066833,-37.7987785],[145.006897,-37.7985306],[145.0070648,-37.7984009],[145.0072327,-37.7983093],[145.0074768,-37.7982407],[145.0077667,-37.7981186],[145.0081482,-37.7979088],[145.0084381,-37.797718],[145.008667,-37.7975807],[145.0089111,-37.7974586],[145.0091705,-37.7973175],[145.0093536,-37.7971802],[145.009491,-37.7970276],[145.0096283,-37.7968597],[145.0096741,-37.7967072],[145.0096283,-37.7965393],[145.009491,-37.7964096],[145.0092621,-37.7963181],[145.0090332,-37.7962799],[145.0087738,-37.7962494],[145.0084991,-37.7962494],[145.008255,-37.7962685],[145.0080566,-37.796299],[145.0078583,-37.7963676],[145.0077057,-37.7964783],[145.00737,-37.79673],[145.007019,-37.7969475],[145.006485,-37.7972183],[145.0060425,-37.7974777],[145.005661,-37.7977409],[145.0053253,-37.7979507],[145.0050507,-37.7980576],[145.0048218,-37.7980995],[145.0045929,-37.798069],[145.0044403,-37.7980003],[145.004303,-37.7978973],[145.0042114,-37.7977486],[145.0041504,-37.7975388],[145.0041351,-37.7973175],[145.0041199,-37.7970505],[145.0040894,-37.7966576],[145.0040588,-37.7963676],[145.0039825,-37.7961273],[145.00383,-37.7959595],[145.0036011,-37.7958107],[145.0033569,-37.7957497],[145.0031738,-37.7957382],[145.0028534,-37.7957802],[145.0026093,-37.7958603],[145.0023804,-37.79599],[145.0021973,-37.7961998],[145.0020294,-37.7964897],[145.0019379,-37.7966499],[145.0015717,-37.7961998],[145.0015717,-37.7961884],[145.0015717,-37.7961693],[145.0015717,-37.7961578],[145.0015564,-37.7961502],[145.0015564,-37.7961502],[145.0015564,-37.7961197],[145.0015564,-37.7961006],[145.0015411,-37.7960777],[145.0015411,-37.7960701],[145.0015411,-37.7960472],[145.0015411,-37.7960396],[145.0015411,-37.7960205],[145.0015411,-37.7960091],[145.0015411,-37.7959976],[145.0014954,-37.7959976],[145.0014954,-37.795948],[145.0014954,-37.7959404],[145.0014801,-37.7958984],[145.0014343,-37.7958679],[145.0014191,-37.7958679],[145.0013885,-37.7958488],[145.0013733,-37.7958488],[145.001358,-37.7958488],[145.0013428,-37.7958374],[145.0013428,-37.7958374],[145.0013123,-37.7958298],[145.0013123,-37.7958183],[145.001297,-37.7958107],[145.001297,-37.7957993],[145.0012817,-37.7957878],[145.0012817,-37.7957687],[145.0012817,-37.7957497],[145.0012817,-37.7957191],[145.0012817,-37.7957077],[145.0012817,-37.7956772],[145.0012817,-37.7956696],[145.0012817,-37.7956581],[145.0012817,-37.7956505],[145.0012817,-37.79562],[145.0012817,-37.7955894],[145.0010529,-37.795639],[145.0010681,-37.7957497],[145.0010071,-37.7958488],[145.0009308,-37.7959099],[145.0007629,-37.79599],[145.0005951,-37.7960091],[145.0000916,-37.7960396],[144.9991913,-37.7960701],[144.9980011,-37.7961082],[144.9976654,-37.7961006],[144.9976196,-37.7964172],[144.9954834,-37.7962074],[144.9954834,-37.7961197],[144.9953613,-37.7961082],[144.9950714,-37.7960281],[144.9949951,-37.7960205],[144.9949188,-37.7960091],[144.9948273,-37.7960091],[144.9944611,-37.7960472],[144.994339,-37.7960396],[144.9940643,-37.7960205],[144.9938812,-37.7960205],[144.9935913,-37.7960472],[144.9936066,-37.7959709],[144.9934845,-37.7958183],[144.9933319,-37.7956696],[144.9931641,-37.795578],[144.992981,-37.7955284],[144.9922028,-37.7953873],[144.9919891,-37.7953377],[144.991806,-37.7952881],[144.9916077,-37.7952309],[144.9914246,-37.7951584],[144.9909821,-37.7949677],[144.9906616,-37.794838],[144.9904633,-37.7947693],[144.9902802,-37.7947197],[144.9901276,-37.7946892],[144.9900208,-37.7947006],[144.9899292,-37.7946892],[144.9898834,-37.7946777],[144.9898834,-37.7946701],[144.9897919,-37.7946472],[144.98909,-37.7945786],[144.9889832,-37.7945709],[144.9886322,-37.794529],[144.9882507,-37.7944984],[144.9880219,-37.7944794],[144.9880066,-37.7944679],[144.9877472,-37.7944374],[144.9876862,-37.7944298],[144.9874725,-37.7944107],[144.9869232,-37.7943573],[144.9860687,-37.7942581],[144.9857178,-37.7942276],[144.9852142,-37.794178],[144.9850922,-37.7941589],[144.9851837,-37.7936172],[144.9853821,-37.7924004],[144.9854584,-37.7920074],[144.985672,-37.7907982],[144.9864197,-37.7904892],[144.9868011,-37.7903404],[144.9872437,-37.7901497],[144.9876404,-37.789978],[144.9889984,-37.7894173],[144.99086,-37.7886391],[144.9919739,-37.7881775],[144.9920502,-37.7881088],[144.9922791,-37.7880287],[144.9947205,-37.7872276],[144.9950562,-37.7871399],[144.9952698,-37.7871208],[144.995636,-37.7869873],[144.9956665,-37.7868385],[144.9957123,-37.7865486],[144.9956207,-37.7859993],[144.9954681,-37.7856293],[144.9951782,-37.7852287],[144.9951019,-37.7851486],[144.9955902,-37.7846909],[144.9956207,-37.7847099],[144.9958191,-37.7848396],[144.996048,-37.7850189],[144.9962158,-37.7851181],[144.9963531,-37.7851906],[144.9963837,-37.7851982],[144.9964447,-37.7852402],[144.9971924,-37.7854576],[144.9975281,-37.7855682],[144.997818,-37.7856293],[144.9982452,-37.7856102],[144.9985199,-37.7855377],[144.9987335,-37.7854691],[144.9989777,-37.785408],[144.9995117,-37.7851295],[144.9999237,-37.7848396],[145.000351,-37.7845573],[145.0005341,-37.7843704],[145.0005798,-37.7843208],[145.0007935,-37.7841072],[145.0009308,-37.7839394],[145.0011444,-37.7837181],[145.0014191,-37.7833786],[145.0016785,-37.7831306],[145.0018005,-37.7830582],[145.0022888,-37.7829895],[145.0026093,-37.7830009],[145.0027771,-37.7830505],[145.0031433,-37.7832184],[145.0034027,-37.7833672],[145.0035095,-37.7834778],[145.0037231,-37.7837296],[145.0039978,-37.7840691],[145.0042114,-37.784359],[145.0047913,-37.7842293],[145.005188,-37.7841377],[145.0054932,-37.7840881],[145.0057831,-37.7840385],[145.0059204,-37.7840195],[145.006073,-37.7840004],[145.0063782,-37.7839584],[145.0066833,-37.7839394],[145.0069885,-37.7839203],[145.0072937,-37.7838974],[145.0075684,-37.7838974],[145.0078583,-37.7838974],[145.0081329,-37.7839088],[145.0083923,-37.7839279],[145.008667,-37.7839508],[145.0088959,-37.7839699],[145.00914,-37.7840004],[145.0093689,-37.7840309],[145.009613,-37.7840691],[145.0100403,-37.7841492],[145.0101929,-37.7841682],[145.0103607,-37.7841873],[145.0108032,-37.7842178],[145.010849,-37.7842178],[145.0110626,-37.7842293],[145.0113068,-37.7842407],[145.0115662,-37.7842407],[145.0118103,-37.7842293],[145.0120697,-37.7842102],[145.0122528,-37.7841873],[145.0123138,-37.7841873],[145.0125732,-37.7841492],[145.0128021,-37.7841072],[145.0142975,-37.7838287],[145.0144806,-37.7837906],[145.0148315,-37.7837906],[145.0149994,-37.7837601],[145.0161896,-37.7835579],[145.0173798,-37.7833595],[145.0176544,-37.7833595],[145.0184174,-37.7832108],[145.0185699,-37.7831802],[145.0191345,-37.7830696],[145.0197601,-37.7829399],[145.0209198,-37.7827072],[145.0220032,-37.7824898],[145.0232849,-37.782238],[145.0234222,-37.7822189],[145.0240936,-37.7820473],[145.0245667,-37.7819405],[145.0250244,-37.781868],[145.0257416,-37.7817688],[145.027298,-37.7814789],[145.0279388,-37.7813606]]]}}]} diff --git a/tests/testthat/geojson/geometry-collection.json b/tests/testthat/geojson/geometry-collection.json new file mode 100644 index 0000000..6bbcf58 --- /dev/null +++ b/tests/testthat/geojson/geometry-collection.json @@ -0,0 +1,188 @@ +{ + "type": "GeometryCollection", + "geometries": [ + { + "type": "Point", + "coordinates": [ + -80.660805, + 35.049392 + ] + }, + { + "type": "Polygon", + "coordinates": [ + [ + [ + -80.664582, + 35.044965 + ], + [ + -80.663874, + 35.04428 + ], + [ + -80.662586, + 35.04558 + ], + [ + -80.663444, + 35.046036 + ], + [ + -80.664582, + 35.044965 + ] + ] + ] + }, + { + "type": "LineString", + "coordinates": [ + [ + -80.662372, + 35.059509 + ], + [ + -80.662693, + 35.059263 + ], + [ + -80.662844, + 35.05893 + ], + [ + -80.66308, + 35.058332 + ], + [ + -80.663595, + 35.057753 + ], + [ + -80.663874, + 35.057401 + ], + [ + -80.66441, + 35.057033 + ], + [ + -80.664861, + 35.056787 + ], + [ + -80.665419, + 35.056506 + ], + [ + -80.665633, + 35.056312 + ], + [ + -80.666019, + 35.055891 + ], + [ + -80.666191, + 35.055452 + ], + [ + -80.666191, + 35.055171 + ], + [ + -80.666255, + 35.05489 + ], + [ + -80.666213, + 35.054222 + ], + [ + -80.666213, + 35.053924 + ], + [ + -80.665955, + 35.052905 + ], + [ + -80.665698, + 35.052044 + ], + [ + -80.665504, + 35.051482 + ], + [ + -80.665762, + 35.050481 + ], + [ + -80.66617, + 35.049725 + ], + [ + -80.666513, + 35.049286 + ], + [ + -80.666921, + 35.048531 + ], + [ + -80.667006, + 35.048215 + ], + [ + -80.667071, + 35.047775 + ], + [ + -80.667049, + 35.047389 + ], + [ + -80.666964, + 35.046985 + ], + [ + -80.666813, + 35.046353 + ], + [ + -80.666599, + 35.045966 + ], + [ + -80.666406, + 35.045615 + ], + [ + -80.665998, + 35.045193 + ], + [ + -80.665526, + 35.044877 + ], + [ + -80.664989, + 35.044543 + ], + [ + -80.664496, + 35.044174 + ], + [ + -80.663852, + 35.043876 + ], + [ + -80.663037, + 35.043717 + ] + ] + } + ] +} diff --git a/tests/testthat/geojson/holding/coord-class-multipoint-xyz1.json b/tests/testthat/geojson/holding/coord-class-multipoint-xyz1.json new file mode 100644 index 0000000..47618f3 --- /dev/null +++ b/tests/testthat/geojson/holding/coord-class-multipoint-xyz1.json @@ -0,0 +1 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0,0.0],[1.0,1.0]]} diff --git a/tests/testthat/geojson/holding/coord-class-multipoint-xyz2.json b/tests/testthat/geojson/holding/coord-class-multipoint-xyz2.json new file mode 100644 index 0000000..9b68f9f --- /dev/null +++ b/tests/testthat/geojson/holding/coord-class-multipoint-xyz2.json @@ -0,0 +1 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0],[1.0,1.0,1.0]]} diff --git a/tests/testthat/geojson/holding/coord-class-multipoint-xyzm1.json b/tests/testthat/geojson/holding/coord-class-multipoint-xyzm1.json new file mode 100644 index 0000000..a5893a3 --- /dev/null +++ b/tests/testthat/geojson/holding/coord-class-multipoint-xyzm1.json @@ -0,0 +1 @@ +{"type":"MultiPoint","coordinates":[[0.0,0.0,0.0,0.0],[1.0,1.0]]} diff --git a/tests/testthat/geojson/holding/property-empty-object.json b/tests/testthat/geojson/holding/property-empty-object.json new file mode 100644 index 0000000..670eaf4 --- /dev/null +++ b/tests/testthat/geojson/holding/property-empty-object.json @@ -0,0 +1 @@ +{"type":"Feature","properties":{"id":{}},"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/holding/property-mixed-type2.json b/tests/testthat/geojson/holding/property-mixed-type2.json new file mode 100644 index 0000000..90ababc --- /dev/null +++ b/tests/testthat/geojson/holding/property-mixed-type2.json @@ -0,0 +1,2 @@ +[{"type":"Feature","properties":{"id":1},"geometry":{"type":"Point","coordinates":[0,0]}}, + {"type" : "Feature","properties" : { "id" : true},"geometry" : { "type" : "Point", "coordinates" : [2,2] }}] diff --git a/tests/testthat/geojson/holding/property-mixed-type3.json b/tests/testthat/geojson/holding/property-mixed-type3.json new file mode 100644 index 0000000..be896a9 --- /dev/null +++ b/tests/testthat/geojson/holding/property-mixed-type3.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : null},"geometry" : { "type" : "Point", "coordinates" : [1,0] }}, + {"type" : "Feature","properties" : { "id" : null},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/holding/property-mixed-type4.json b/tests/testthat/geojson/holding/property-mixed-type4.json new file mode 100644 index 0000000..4a01fe0 --- /dev/null +++ b/tests/testthat/geojson/holding/property-mixed-type4.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : "a"},"geometry" : { "type" : "Point", "coordinates" : [0,1] }}, + {"type" : "Feature","properties" : { "id" : 1},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/holding/property-mixed-type5.json b/tests/testthat/geojson/holding/property-mixed-type5.json new file mode 100644 index 0000000..c943d05 --- /dev/null +++ b/tests/testthat/geojson/holding/property-mixed-type5.json @@ -0,0 +1 @@ +{"type": "Feature","properties":{"id":[1,2,3],"name":{"foo":"bar"}},"geometry":{"type":"LineString","coordinates":[[101.0,0.0],[102.0,1.0]]}} diff --git a/tests/testthat/geojson/holding/property-mixed-type6.json b/tests/testthat/geojson/holding/property-mixed-type6.json new file mode 100644 index 0000000..f81d343 --- /dev/null +++ b/tests/testthat/geojson/holding/property-mixed-type6.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : 1 },"geometry" : { "type" : "Point", "coordinates" : [0,1] }}, + {"type" : "Feature","properties" : { "id" : {"a":"b"}},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/linestring00.json b/tests/testthat/geojson/linestring00.json new file mode 100644 index 0000000..744703e --- /dev/null +++ b/tests/testthat/geojson/linestring00.json @@ -0,0 +1,13 @@ +{ + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] + ] + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/multilinestring00.json b/tests/testthat/geojson/multilinestring00.json new file mode 100644 index 0000000..706696c --- /dev/null +++ b/tests/testthat/geojson/multilinestring00.json @@ -0,0 +1,92 @@ +{ + "type": "Feature", + "geometry": { + "type": "MultiLineString", + "coordinates": [ + [ + [ + -105.0214433670044, + 39.57805759162015 + ], + [ + -105.02150774002075, + 39.57780951131517 + ], + [ + -105.02157211303711, + 39.57749527498758 + ], + [ + -105.02157211303711, + 39.57716449836683 + ], + [ + -105.02157211303711, + 39.57703218727656 + ], + [ + -105.02152919769287, + 39.57678410330158 + ] + ], + [ + [ + -105.01989841461182, + 39.574997872470774 + ], + [ + -105.01959800720215, + 39.57489863607502 + ], + [ + -105.01906156539916, + 39.57478286010041 + ] + ], + [ + [ + -105.01717329025269, + 39.5744024519653 + ], + [ + -105.01698017120361, + 39.574385912433804 + ], + [ + -105.0166368484497, + 39.574385912433804 + ], + [ + -105.01650810241699, + 39.5744024519653 + ], + [ + -105.0159502029419, + 39.574270135602866 + ] + ], + [ + [ + -105.0142765045166, + 39.57397242286402 + ], + [ + -105.01412630081175, + 39.57403858136094 + ], + [ + -105.0138258934021, + 39.57417089816531 + ], + [ + -105.01331090927124, + 39.57445207053608 + ] + ] + ] + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/multipoint00.json b/tests/testthat/geojson/multipoint00.json new file mode 100644 index 0000000..49a62bd --- /dev/null +++ b/tests/testthat/geojson/multipoint00.json @@ -0,0 +1,7 @@ +{ +"type": "MultiPoint", +"coordinates": [ + [100.0, 0.0], [101.0, 1.0] +] +} + diff --git a/tests/testthat/geojson/multipoint01.json b/tests/testthat/geojson/multipoint01.json new file mode 100644 index 0000000..22e6f25 --- /dev/null +++ b/tests/testthat/geojson/multipoint01.json @@ -0,0 +1,13 @@ +{ + "type": "Feature", + "geometry": { +"type": "MultiPoint", +"coordinates": [ + [100.0, 0.0], [101.0, 1.0] +] + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/multipolygon.json b/tests/testthat/geojson/multipolygon.json new file mode 100644 index 0000000..604baff --- /dev/null +++ b/tests/testthat/geojson/multipolygon.json @@ -0,0 +1,61 @@ +{ + "type": "Feature", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + 107, + 7 + ], + [ + 108, + 7 + ], + [ + 108, + 8 + ], + [ + 107, + 8 + ], + [ + 107, + 7 + ] + ] + ], + [ + [ + [ + 100, + 0 + ], + [ + 101, + 0 + ], + [ + 101, + 1 + ], + [ + 100, + 1 + ], + [ + 100, + 0 + ] + ] + ] + ] + + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/point00.json b/tests/testthat/geojson/point00.json new file mode 100644 index 0000000..2736257 --- /dev/null +++ b/tests/testthat/geojson/point00.json @@ -0,0 +1,5 @@ +{ + "type": "Point", + "coordinates": [125.6, 10.1] +} + diff --git a/tests/testthat/geojson/point01.json b/tests/testthat/geojson/point01.json new file mode 100644 index 0000000..6fadff1 --- /dev/null +++ b/tests/testthat/geojson/point01.json @@ -0,0 +1,11 @@ +{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [125.6, 10.1] + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/polygon.json b/tests/testthat/geojson/polygon.json new file mode 100644 index 0000000..0229392 --- /dev/null +++ b/tests/testthat/geojson/polygon.json @@ -0,0 +1,16 @@ +{ + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], + [100.0, 1.0], [100.0, 0.0] ], + [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], + [100.0, 1.0], [100.0, 0.0] ] + ] + }, + "properties": { + "name": "Dinagat Islands" + } +} + diff --git a/tests/testthat/geojson/property-empty-object.json b/tests/testthat/geojson/property-empty-object.json new file mode 100644 index 0000000..670eaf4 --- /dev/null +++ b/tests/testthat/geojson/property-empty-object.json @@ -0,0 +1 @@ +{"type":"Feature","properties":{"id":{}},"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/property-empty.json b/tests/testthat/geojson/property-empty.json new file mode 100644 index 0000000..6013ab2 --- /dev/null +++ b/tests/testthat/geojson/property-empty.json @@ -0,0 +1 @@ +{"type":"Feature","properties":{"id":null},"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/property-logical.json b/tests/testthat/geojson/property-logical.json new file mode 100644 index 0000000..1ff9d1f --- /dev/null +++ b/tests/testthat/geojson/property-logical.json @@ -0,0 +1 @@ +{"type":"Feature","properties":{"id":true},"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/property-mixed-type.json b/tests/testthat/geojson/property-mixed-type.json new file mode 100644 index 0000000..9e51d1d --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type.json @@ -0,0 +1,2 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"id":1},"geometry":{"type":"Point","coordinates":[0,0]}}, +{"type":"Feature","properties":{"id":"a"},"geometry":{"type":"Point","coordinates":[1,1]}}]} diff --git a/tests/testthat/geojson/property-mixed-type2.json b/tests/testthat/geojson/property-mixed-type2.json new file mode 100644 index 0000000..90ababc --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type2.json @@ -0,0 +1,2 @@ +[{"type":"Feature","properties":{"id":1},"geometry":{"type":"Point","coordinates":[0,0]}}, + {"type" : "Feature","properties" : { "id" : true},"geometry" : { "type" : "Point", "coordinates" : [2,2] }}] diff --git a/tests/testthat/geojson/property-mixed-type3.json b/tests/testthat/geojson/property-mixed-type3.json new file mode 100644 index 0000000..be896a9 --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type3.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : null},"geometry" : { "type" : "Point", "coordinates" : [1,0] }}, + {"type" : "Feature","properties" : { "id" : null},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/property-mixed-type4.json b/tests/testthat/geojson/property-mixed-type4.json new file mode 100644 index 0000000..4a01fe0 --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type4.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : "a"},"geometry" : { "type" : "Point", "coordinates" : [0,1] }}, + {"type" : "Feature","properties" : { "id" : 1},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/property-mixed-type5.json b/tests/testthat/geojson/property-mixed-type5.json new file mode 100644 index 0000000..c943d05 --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type5.json @@ -0,0 +1 @@ +{"type": "Feature","properties":{"id":[1,2,3],"name":{"foo":"bar"}},"geometry":{"type":"LineString","coordinates":[[101.0,0.0],[102.0,1.0]]}} diff --git a/tests/testthat/geojson/property-mixed-type6.json b/tests/testthat/geojson/property-mixed-type6.json new file mode 100644 index 0000000..f81d343 --- /dev/null +++ b/tests/testthat/geojson/property-mixed-type6.json @@ -0,0 +1,2 @@ +[{"type" : "Feature","properties" : { "id" : 1 },"geometry" : { "type" : "Point", "coordinates" : [0,1] }}, + {"type" : "Feature","properties" : { "id" : {"a":"b"}},"geometry" : { "type" : "Point", "coordinates" : [0,0] }}] diff --git a/tests/testthat/geojson/property-null-value.json b/tests/testthat/geojson/property-null-value.json new file mode 100644 index 0000000..6013ab2 --- /dev/null +++ b/tests/testthat/geojson/property-null-value.json @@ -0,0 +1 @@ +{"type":"Feature","properties":{"id":null},"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/property-null.json b/tests/testthat/geojson/property-null.json new file mode 100644 index 0000000..62983a5 --- /dev/null +++ b/tests/testthat/geojson/property-null.json @@ -0,0 +1 @@ +{"type":"Feature","properties":null,"geometry":{"type":"Point","coordinates":[0,0]}} diff --git a/tests/testthat/geojson/ref.rds b/tests/testthat/geojson/ref.rds new file mode 100644 index 0000000..c0baf32 Binary files /dev/null and b/tests/testthat/geojson/ref.rds differ diff --git a/tests/testthat/geojson/standard-example.json b/tests/testthat/geojson/standard-example.json new file mode 100644 index 0000000..04e817f --- /dev/null +++ b/tests/testthat/geojson/standard-example.json @@ -0,0 +1,35 @@ +{ "type": "FeatureCollection", + "features": [ + { "type": "Feature", + "geometry": {"type": "Point", "coordinates": [102.0, 0.5]}, + "properties": {"prop0": "value0"} + }, + { "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] + ] + }, + "properties": { + "prop0": "value0", + "prop1": 0.0 + } + }, + { "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], + [100.0, 1.0], [100.0, 0.0] ] + ] + + }, + "properties": { + "prop0": "value0", + "prop1": {"this": "that"} + } + } + ] + } + diff --git a/tests/testthat/test-geojson-promotion-compat.R b/tests/testthat/test-geojson-promotion-compat.R new file mode 100644 index 0000000..1368a6e --- /dev/null +++ b/tests/testthat/test-geojson-promotion-compat.R @@ -0,0 +1,50 @@ + + +js <- r"( +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.870885, + 35.215151 + ] + }, + "properties": { + "value": 1.0 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.837753, + 35.249801 + ] + }, + "properties": { + "value": "a" + } + } + ] +} +)" + + + +test_that("geojson property promotion works", { + + tst <- read_geojson_str(js) # geojson compat + expect_identical(tst$value, c("1.000000", "a")) + + tst <- read_geojson_str(js, property_promotion = 'string') # geojson compat + expect_identical(tst$value, c("1.000000", "a")) + + tst <- read_geojson_str(js, property_promotion = 'list') + expect_identical(tst$value, list(1.0, "a")) + +}) diff --git a/tests/testthat/test-geojson-read-write.R b/tests/testthat/test-geojson-read-write.R new file mode 100644 index 0000000..c1a785e --- /dev/null +++ b/tests/testthat/test-geojson-read-write.R @@ -0,0 +1,120 @@ + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Set load path depending on whether debugging or testing within package +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +examples_dir <- testthat::test_path("geojson") + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Determine list of JSON files to test +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +json_files <- list.files(examples_dir, pattern = "json$", full.names = TRUE) + +json <- lapply(json_files, function(x) { + paste(readLines(x), collapse = "\n") +}) +names(json) <- basename(tools::file_path_sans_ext(json_files)) + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Generate reference objects using {geojsonsf} +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +if (FALSE) { + # json_files <- list.files(examples_dir, pattern = "json$", full.names = TRUE) + # + # ref <- list(sf = list(), sfc = list()) + # + # prep <- function(json_file) { + # nm <- basename(json_file) + # ref$sf [[nm]] <<- geojsonsf::geojson_sf (json_file) + # ref$sfc[[nm]] <<- geojsonsf::geojson_sfc(json_file) + # } + # + # for (json_file in json_files) { + # prep(json_file) + # } + # + # saveRDS(ref, "tests/testthat/geojson/ref.rds", compress = 'xz') +} + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Read reference objects created from GeoJSON with {geojsonsf} package +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ref <- readRDS(file.path(examples_dir, "ref.rds")) + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Trivial column sorting for data.frames +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +df_sort <- function(df) { + df[, sort(colnames(df)), drop = FALSE] +} + +expect_equal_when_colnames_sorted <- function(tst, ref, label = NULL) { + tst <- df_sort(tst) + ref <- df_sort(ref) + expect_equal(tst, ref, label = label) +} + + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Check that {yyjsonr} parses GeoJSON in the same was as {geojsonsf} +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +test_that("Compare parsing of GeoJSON to {geojsonsf}", { + + for (json_file in json_files) { + + # Reference objects from {geojsonsf} are indexed by the + # basename() of the JSON file + nm <- basename(json_file) + + # Read as 'sf' data.frame object + sf <- read_geojson_file(json_file, type = 'sf') + if (nm == 'standard-example.json') { + # When geojsonsf promotos double 0.0 to string, it makes it '0' + # whereas yyjsonr makes it "0.000000" + sf$prop1 <- gsub("0.000000", "0", sf$prop1) + } + expect_equal_when_colnames_sorted(sf, ref$sf[[nm]], label = nm) + + # Read as 'sfc' list object of just geometry + sfc <- read_geojson_file(json_file, type = 'sfc') + expect_equal(sfc, ref$sfc[[nm]], label = nm) + } +}) + + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#' Using 'yyjsonr', round-trip some JSON +#' - from geojson string to R 'sf' object +#' - from R 'sf' object to geojson string +#' - from geojson string to R 'sf' object +#' +#' Then assert that the two 'sf' objects are equal +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +test_that("Basic writing works for lots of different geojson", { + + for (i in seq_along(json)) { + + # Take the JSON + js1 <- json[[i]] + + # Load it into R as 'sf' + geojson1 <- read_geojson_str(js1) + + # Write it out to JSON str + js2 <- write_geojson_str(geojson1) + + # Re-load it into R as 'sf' + geojson2 <- read_geojson_str(js2) + + # Test 'sf' representations are equal + expect_identical(geojson1, geojson2, label = names(json)[i]) + } +}) + + + diff --git a/tests/testthat/test-issue19-ndjson-long-lines.R b/tests/testthat/test-issue19-ndjson-long-lines.R new file mode 100644 index 0000000..0d045b1 --- /dev/null +++ b/tests/testthat/test-issue19-ndjson-long-lines.R @@ -0,0 +1,11 @@ + + + +test_that("multiplication works", { + + filename <- testthat::test_path("ndjson/ndjson-long-lines-10k-issue19.ndjson") + + expect_no_error( + read_ndjson_file(filename) + ) +})