# SPDX-FileCopyrightText: 2025 diffo_example contributors # # SPDX-License-Identifier: MIT # # ── Geographic data attribution ────────────────────────────────────────── # POI locations and CSA boundaries are derived from data published by NBN Co: # "National Broadband Network" — fixed-line coverage dataset # https://data.gov.au/data/dataset/national-broadband-network # © NBN Co Limited, licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). # MODIFIED: each CSA boundary is a coarse convex hull computed over that POI's # fixed-line coverage polygons and simplified; POI points are from a published # POI address list. Fixed-wireless and satellite coverage are excluded, so some # areas (esp. regional/hills) are understated and POIs served only by those # technologies are omitted. Not for operational use. # ───────────────────────────────────────────────────────────────────────── defmodule DiffoExample.Nbn.Geo do @moduledoc """ Seeds NBN POI and CSA places for South Australia and the rest of Australia, pairing each POI 1:1 with its CSA via a PlaceRef (POI -> CSA). See the file header for geographic-data source and attribution (NBN Co, CC BY 4.0, modified). """ alias Diffo.Provider alias DiffoExample.Nbn # The PlaceRef role pairing a POI to its CSA. A module attribute interns the # atom at compile time: `Ash.Type.Atom` reads stored values via # `String.to_existing_atom` (deliberately — minting atoms from DB strings is # an atom-table-exhaustion vector), so a role that exists ONLY as seed data # writes fine but fails to cast back in a cold reader. Referencing it here # makes it compile-known so reads revive it. @interconnects :interconnects # The PlaceRef role from a LocationPoint to the Location it geo-locates. # Module attribute for the same compile-time interning reason as above. @geo_locates :geo_locates # Real Adelaide-Hills venues that service-qualify to the Stirling CSA (5STI). # Each is a Location (premises address) geo-located by a LocationPoint # (lat/long, what SQ runs against). NBN-style LOC<12-digit> ids, minted once # via Nbn.Util.identifier and locked here so they're stable across seeds. # {loc_id, point_id, name, {street_nr, street_name, locality, postcode}, {lon, lat}} @locations [ {"LOC000114541080", "LOP000998597184", "Stirling Hotel", {"52", "Mount Barker Road", "Stirling", "5152"}, {138.7206, -35.0036}}, {"LOC000399047043", "LOP000718290091", "Crafers Hotel", {"8", "Main Street", "Crafers", "5152"}, {138.7000, -34.9930}}, {"LOC000709306545", "LOP000560061946", "Stanley Bridge Tavern", {"1", "Onkaparinga Valley Road", "Verdun", "5245"}, {138.7460, -35.0180}}, {"LOC000835998318", "LOP000241706513", "Aldgate Pump Hotel", {"1", "Strathalbyn Road", "Aldgate", "5154"}, {138.7350, -35.0150}}, {"LOC000244331923", "LOP000205961414", "Bridgewater Mill", {"386", "Mount Barker Road", "Bridgewater", "5155"}, {138.7560, -35.0110}}, # Stirling Library — the neutral customer site for the lawful-intercept demo # (#60). A real premises that SQs to 5STI; its LOP is what the seeded NTD # `:locates`. See DiffoExample.Nbn.ServiceInitializer. {"LOC000620145388", "LOP000620145388", "Stirling Library", {"87", "Mount Barker Road", "Stirling", "5152"}, {138.7186, -35.0030}} ] # Non-premise LocationPoints: a lat/long that needs comms but has no postal # address — so a standalone point with NO Location. Legitimately how NBN # models non-premise locations. Here, temporary connectivity for the Tour # Down Under (which often runs a Stirling stage), so they still # service-qualify to 5STI. # {point_id, name, {lon, lat}} @standalone_points [ {"LOP000037364340", "TDU outside broadcast cabinet - Stirling Oval carpark", {138.7165, -35.0008}}, {"LOP000453129508", "TDU event village cabinet - Mylor Oval carpark", {138.7595, -35.0455}} ] @pois [ {"2ALB", "Albury", %Geo.Point{coordinates: {146.91488, -36.08194}, srid: 4326}}, {"2BLK", "Blacktown", %Geo.Point{coordinates: {150.90826, -33.77027}, srid: 4326}}, {"2CAM", "Campsie", %Geo.Point{coordinates: {151.10954, -33.91586}, srid: 4326}}, {"2CAS", "Castle Hill", %Geo.Point{coordinates: {151.00514, -33.73203}, srid: 4326}}, {"2CBT", "Campbelltown", %Geo.Point{coordinates: {150.81187, -34.068}, srid: 4326}}, {"2CFS", "Coffs Harbour", %Geo.Point{coordinates: {153.11317, -30.29652}, srid: 4326}}, {"2CHA", "Chatswood", %Geo.Point{coordinates: {151.18051, -33.79758}, srid: 4326}}, {"2CRR", "Carramar", %Geo.Point{coordinates: {150.96885, -33.88823}, srid: 4326}}, {"2CYS", "City South", %Geo.Point{coordinates: {151.20862, -33.87569}, srid: 4326}}, {"2DAL", "Dalley", %Geo.Point{coordinates: {151.20829, -33.86289}, srid: 4326}}, {"2DBB", "Dubbo", %Geo.Point{coordinates: {148.602, -32.24625}, srid: 4326}}, {"2EDG", "Edgecliff", %Geo.Point{coordinates: {151.23853, -33.87948}, srid: 4326}}, {"2FRE", "Frenchs Forest", %Geo.Point{coordinates: {151.22502, -33.75234}, srid: 4326}}, {"2GBE", "Glebe", %Geo.Point{coordinates: {151.18851, -33.88066}, srid: 4326}}, {"2GOS", "Gosford", %Geo.Point{coordinates: {151.34154, -33.43001}, srid: 4326}}, {"2GRN", "Grafton", %Geo.Point{coordinates: {151.74862, -32.92603}, srid: 4326}}, {"2HAM", "Hamilton", %Geo.Point{coordinates: {151.74864, -32.92602}, srid: 4326}}, {"2KNS", "Kensington", %Geo.Point{coordinates: {151.22033, -33.91017}, srid: 4326}}, {"2LAK", "Lakemba", %Geo.Point{coordinates: {151.07625, -33.92071}, srid: 4326}}, {"2LID", "Lidcombe", %Geo.Point{coordinates: {151.04407, -33.86473}, srid: 4326}}, {"2LIV", "Liverpool", %Geo.Point{coordinates: {150.9241, -33.92605}, srid: 4326}}, {"2MAI", "Maitland", %Geo.Point{coordinates: {151.58691, -32.74993}, srid: 4326}}, {"2MIR", "Miranda", %Geo.Point{coordinates: {151.10178, -34.03443}, srid: 4326}}, {"2MOS", "Mosman", %Geo.Point{coordinates: {151.24482, -33.82917}, srid: 4326}}, {"2MYF", "Mayfield", %Geo.Point{coordinates: {151.73495, -32.89644}, srid: 4326}}, {"2NEW", "Newtown", %Geo.Point{coordinates: {151.17918, -33.89615}, srid: 4326}}, {"2NWR", "Nowra-Bomaderry", %Geo.Point{coordinates: {150.60092, -34.87584}, srid: 4326}}, {"2PAR", "Parramatta", %Geo.Point{coordinates: {151.00239, -33.81403}, srid: 4326}}, {"2PEA", "Peakhurst", %Geo.Point{coordinates: {151.06523, -33.95274}, srid: 4326}}, {"2PEN", "Pendle Hill", %Geo.Point{coordinates: {150.96033, -33.80471}, srid: 4326}}, {"2PTH", "Penrith", %Geo.Point{coordinates: {150.69902, -33.75289}, srid: 4326}}, {"2ROC", "Rockdale", %Geo.Point{coordinates: {151.13921, -33.94843}, srid: 4326}}, {"2RYD", "Ryde", %Geo.Point{coordinates: {151.10526, -33.81357}, srid: 4326}}, {"2STL", "St Leonards", %Geo.Point{coordinates: {151.19597, -33.82361}, srid: 4326}}, {"2TAM", "Tamworth", %Geo.Point{coordinates: {150.93155, -31.09167}, srid: 4326}}, {"2WAG", "Wagga Wagga", %Geo.Point{coordinates: {147.37102, -35.10636}, srid: 4326}}, {"2WLG", "Wollongong", %Geo.Point{coordinates: {150.88995, -34.42542}, srid: 4326}}, {"3BEN", "Bendigo", %Geo.Point{coordinates: {144.27615, -36.76145}, srid: 4326}}, {"3BRA", "Ballarat", %Geo.Point{coordinates: {143.85459, -37.56486}, srid: 4326}}, {"3CAU", "Caulfield", %Geo.Point{coordinates: {145.04676, -37.87601}, srid: 4326}}, {"3CBN", "Cranbourne", %Geo.Point{coordinates: {145.28271, -38.10416}, srid: 4326}}, {"3CTA", "Cheltenham", %Geo.Point{coordinates: {145.05554, -37.96428}, srid: 4326}}, {"3DAD", "Dandenong", %Geo.Point{coordinates: {145.21615, -37.98698}, srid: 4326}}, {"3EXH", "Exhibition", %Geo.Point{coordinates: {144.96969, -37.80873}, srid: 4326}}, {"3FSR", "Footscray", %Geo.Point{coordinates: {144.89939, -37.80292}, srid: 4326}}, {"3GEE", "Geelong", %Geo.Point{coordinates: {144.35575, -38.14905}, srid: 4326}}, {"3HAW", "Hawthorn", %Geo.Point{coordinates: {145.03648, -37.8222}, srid: 4326}}, {"3HRS", "Horsham", %Geo.Point{coordinates: {142.20022, -36.71336}, srid: 4326}}, {"3KAL", "Karingal", %Geo.Point{coordinates: {145.16178, -38.15343}, srid: 4326}}, {"3KEW", "Kew", %Geo.Point{coordinates: {145.02908, -37.80832}, srid: 4326}}, {"3KEY", "Keysborough", %Geo.Point{coordinates: {145.16724, -37.99309}, srid: 4326}}, {"3KGP", "Kings Park", %Geo.Point{coordinates: {144.79936, -37.7428}, srid: 4326}}, {"3LIL", "Lilydale", %Geo.Point{coordinates: {145.35269, -37.75836}, srid: 4326}}, {"3MTE", "Mount Eliza", %Geo.Point{coordinates: {145.09064, -38.18337}, srid: 4326}}, {"3NBA", "North Balwyn", %Geo.Point{coordinates: {145.09283, -37.79171}, srid: 4326}}, {"3RES", "Reservoir", %Geo.Point{coordinates: {145.00783, -37.71342}, srid: 4326}}, {"3RWO", "Ringwood", %Geo.Point{coordinates: {145.22668, -37.81487}, srid: 4326}}, {"3SHP", "Shepparton", %Geo.Point{coordinates: {145.3998, -36.38036}, srid: 4326}}, {"3SMR", "South Morang", %Geo.Point{coordinates: {145.07594, -37.65775}, srid: 4326}}, {"3STK", "St Kilda", %Geo.Point{coordinates: {144.98408, -37.86421}, srid: 4326}}, {"3TAG", "Traralgon", %Geo.Point{coordinates: {146.53725, -38.19495}, srid: 4326}}, {"3TMN", "Tullamarine", %Geo.Point{coordinates: {144.88357, -37.7051}, srid: 4326}}, {"3TNB", "Thornbury", %Geo.Point{coordinates: {145.00039, -37.75824}, srid: 4326}}, {"3WER", "Werribee", %Geo.Point{coordinates: {144.65911, -37.89578}, srid: 4326}}, {"3WHL", "Wheelers Hill", %Geo.Point{coordinates: {145.16103, -37.90246}, srid: 4326}}, {"4APL", "Aspley", %Geo.Point{coordinates: {153.02261, -27.3575}, srid: 4326}}, {"4BBE", "Bundaberg", %Geo.Point{coordinates: {152.34815, -24.86594}, srid: 4326}}, {"4BDB", "Bundamba", %Geo.Point{coordinates: {152.81832, -27.60611}, srid: 4326}}, {"4CAB", "Caboolture", %Geo.Point{coordinates: {152.9517, -27.08539}, srid: 4326}}, {"4CAI", "Cairns", %Geo.Point{coordinates: {145.77292, -16.92391}, srid: 4326}}, {"4CPH", "Camp Hill", %Geo.Point{coordinates: {153.07691, -27.49337}, srid: 4326}}, {"4EMP", "Eight Mile", %Geo.Point{coordinates: {153.10604, -27.59022}, srid: 4326}}, {"4GDN", "Goodna", %Geo.Point{coordinates: {152.88969, -27.60591}, srid: 4326}}, {"4IPS", "Ipswich", %Geo.Point{coordinates: {152.76109, -27.61485}, srid: 4326}}, {"4KLG", "Petrie", %Geo.Point{coordinates: {152.97726, -27.26935}, srid: 4326}}, {"4MKY", "Mackay", %Geo.Point{coordinates: {149.18648, -21.13953}, srid: 4326}}, {"4MRA", "Merrimac", %Geo.Point{coordinates: {153.42689, -28.04908}, srid: 4326}}, {"4NBR", "Nambour", %Geo.Point{coordinates: {152.96016, -26.62781}, srid: 4326}}, {"4ROT", "Rockhampton", %Geo.Point{coordinates: {150.51274, -23.37814}, srid: 4326}}, {"4SLA", "Slacks Creek", %Geo.Point{coordinates: {153.11821, -27.63818}, srid: 4326}}, {"4SOP", "Southport", %Geo.Point{coordinates: {153.41376, -27.96736}, srid: 4326}}, {"4TNS", "Townsville", %Geo.Point{coordinates: {146.81715, -19.25812}, srid: 4326}}, {"4TOB", "Toowoomba", %Geo.Point{coordinates: {151.95679, -27.56219}, srid: 4326}}, {"4WOB", "Woolloongabba", %Geo.Point{coordinates: {153.03646, -27.48403}, srid: 4326}}, {"5CPK", "St Marys", %Geo.Point{coordinates: {138.58505, -34.99178}, srid: 4326}}, {"5EDW", "Edwardstown", %Geo.Point{coordinates: {138.57207, -34.96189}, srid: 4326}}, {"5EZB", "Elizabeth", %Geo.Point{coordinates: {138.66848, -34.72217}, srid: 4326}}, {"5MOD", "Modbury", %Geo.Point{coordinates: {138.68723, -34.82939}, srid: 4326}}, {"5PRO", "Prospect", %Geo.Point{coordinates: {138.60224, -34.89175}, srid: 4326}}, {"5PTA", "Port Augusta", %Geo.Point{coordinates: {137.76237, -32.49114}, srid: 4326}}, {"5STI", "Stirling", %Geo.Point{coordinates: {138.71665, -35.00656}, srid: 4326}}, {"6APP", "Applecross", %Geo.Point{coordinates: {115.83841, -32.01636}, srid: 4326}}, {"6BSD", "Bassendean", %Geo.Point{coordinates: {115.94931, -31.90486}, srid: 4326}}, {"6CAN", "Cannington", %Geo.Point{coordinates: {115.93225, -32.01722}, srid: 4326}}, {"6CGE", "South Coogee", %Geo.Point{coordinates: {115.79447, -32.17552}, srid: 4326}}, {"6DBL", "Doubleview", %Geo.Point{coordinates: {115.7867, -31.89862}, srid: 4326}}, {"6GLT", "Geraldton", %Geo.Point{coordinates: {114.61033, -28.77355}, srid: 4326}}, {"6HIL", "Hilton", %Geo.Point{coordinates: {115.79154, -32.06278}, srid: 4326}}, {"6KAT", "Katanning", %Geo.Point{coordinates: {117.55592, -33.68954}, srid: 4326}}, {"6KEL", "Kelmscott", %Geo.Point{coordinates: {116.01376, -32.1133}, srid: 4326}}, {"6MLO", "Mullaloo", %Geo.Point{coordinates: {115.75653, -31.78997}, srid: 4326}}, {"6PNJ", "Pinjarra", %Geo.Point{coordinates: {115.87373, -32.62718}, srid: 4326}}, {"6SUB", "Subiaco", %Geo.Point{coordinates: {115.82445, -31.94979}, srid: 4326}}, {"7HOB", "Hobart", %Geo.Point{coordinates: {147.32718, -42.88676}, srid: 4326}}, {"7LAU", "Launceston", %Geo.Point{coordinates: {147.13742, -41.43513}, srid: 4326}}, {"8DRW", "Darwin", %Geo.Point{coordinates: {130.83653, -12.45857}, srid: 4326}}, {"9CVI", "Civic", %Geo.Point{coordinates: {149.13163, -35.27376}, srid: 4326}}, {"9QBN", "Queanbeyan", %Geo.Point{coordinates: {149.23189, -35.35361}, srid: 4326}} ] @csas [ {"2ALB", "Albury", %Geo.Polygon{ coordinates: [ [ {146.87793, -36.07219}, {146.87794, -36.07477}, {146.88081, -36.08735}, {146.9042, -36.09867}, {146.90953, -36.0998}, {146.93053, -36.09507}, {146.94226, -36.09}, {146.94517, -36.08821}, {146.97615, -36.06806}, {146.97576, -36.06631}, {146.97509, -36.0635}, {146.9239, -36.0607}, {146.91548, -36.06095}, {146.88564, -36.06456}, {146.88378, -36.06562}, {146.87793, -36.07219} ] ], srid: 4326 }}, {"2BLK", "Blacktown", %Geo.Polygon{ coordinates: [ [ {150.85204, -33.80884}, {150.86526, -33.82268}, {150.87088, -33.82386}, {150.90919, -33.81208}, {150.91439, -33.80918}, {150.92658, -33.79882}, {150.94111, -33.78336}, {150.945, -33.77817}, {150.93193, -33.75616}, {150.92528, -33.74874}, {150.91145, -33.73871}, {150.91103, -33.73862}, {150.91038, -33.73854}, {150.85932, -33.7543}, {150.85902, -33.75465}, {150.85706, -33.7575}, {150.85509, -33.76056}, {150.85204, -33.80884} ] ], srid: 4326 }}, {"2CAM", "Campsie", %Geo.Polygon{ coordinates: [ [ {151.08517, -33.91142}, {151.09426, -33.93006}, {151.09496, -33.93124}, {151.09636, -33.93178}, {151.09993, -33.93283}, {151.11641, -33.93617}, {151.1166, -33.93609}, {151.1236, -33.93192}, {151.1237, -33.93185}, {151.12384, -33.93171}, {151.12488, -33.93053}, {151.12513, -33.91472}, {151.11115, -33.90387}, {151.10992, -33.90298}, {151.10781, -33.90193}, {151.10618, -33.9018}, {151.09156, -33.9019}, {151.08522, -33.91121}, {151.08517, -33.91142} ] ], srid: 4326 }}, {"2CAS", "Castle Hill", %Geo.Polygon{ coordinates: [ [ {150.9551, -33.73136}, {150.95528, -33.74025}, {150.9561, -33.74744}, {151.01053, -33.75898}, {151.01473, -33.75962}, {151.01698, -33.75965}, {151.01752, -33.75963}, {151.01921, -33.75935}, {151.01936, -33.75928}, {151.03776, -33.74794}, {151.0381, -33.74729}, {151.04218, -33.73792}, {151.04254, -33.73641}, {151.04289, -33.73269}, {151.03853, -33.72425}, {151.02458, -33.70931}, {151.02255, -33.70721}, {151.00912, -33.69594}, {151.00894, -33.6958}, {151.00836, -33.69542}, {150.99773, -33.68898}, {150.99632, -33.68878}, {150.96874, -33.69044}, {150.96729, -33.69104}, {150.95633, -33.72468}, {150.9551, -33.73136} ] ], srid: 4326 }}, {"2CBT", "Campbelltown", %Geo.Polygon{ coordinates: [ [ {150.73734, -34.13281}, {150.73777, -34.13314}, {150.73801, -34.13328}, {150.74584, -34.13209}, {150.79935, -34.11892}, {150.82437, -34.11109}, {150.82445, -34.11105}, {150.86824, -34.0752}, {150.8945, -34.04941}, {150.8946, -34.04832}, {150.89457, -34.04809}, {150.89112, -34.04193}, {150.89103, -34.04189}, {150.88593, -34.03947}, {150.88569, -34.03937}, {150.88553, -34.03933}, {150.88259, -34.03864}, {150.78772, -34.03034}, {150.78533, -34.03307}, {150.74341, -34.09994}, {150.73882, -34.11827}, {150.73734, -34.13281} ] ], srid: 4326 }}, {"2CFS", "Coffs Harbour", %Geo.Polygon{ coordinates: [ [ {153.0707, -30.32421}, {153.10358, -30.35431}, {153.10492, -30.35486}, {153.10645, -30.35468}, {153.1497, -30.31355}, {153.15273, -30.30945}, {153.15287, -30.30921}, {153.1549, -30.30513}, {153.15493, -30.30476}, {153.15848, -30.22107}, {153.15144, -30.21652}, {153.14684, -30.21586}, {153.08351, -30.27394}, {153.07177, -30.3188}, {153.07105, -30.32244}, {153.0707, -30.32421} ] ], srid: 4326 }}, {"2CHA", "Chatswood", %Geo.Polygon{ coordinates: [ [ {151.14708, -33.79059}, {151.14716, -33.79145}, {151.1474, -33.79233}, {151.14823, -33.79405}, {151.14842, -33.7943}, {151.15311, -33.80004}, {151.15354, -33.80049}, {151.17073, -33.8088}, {151.18122, -33.81275}, {151.18559, -33.81415}, {151.18746, -33.81417}, {151.19188, -33.81349}, {151.19206, -33.8134}, {151.19395, -33.8124}, {151.19921, -33.79818}, {151.19888, -33.79608}, {151.19841, -33.79502}, {151.18662, -33.78112}, {151.15152, -33.78566}, {151.14744, -33.78924}, {151.14708, -33.79059} ] ], srid: 4326 }}, {"2CRR", "Carramar", %Geo.Polygon{ coordinates: [ [ {150.91581, -33.89769}, {150.92706, -33.90692}, {150.92776, -33.90734}, {150.93002, -33.90722}, {150.94979, -33.90565}, {150.97331, -33.89786}, {150.97342, -33.89778}, {150.97366, -33.89746}, {150.97383, -33.89709}, {150.98063, -33.87687}, {150.97736, -33.87033}, {150.9537, -33.85398}, {150.95356, -33.85391}, {150.95245, -33.85343}, {150.95236, -33.85343}, {150.94875, -33.85349}, {150.94864, -33.8535}, {150.94752, -33.85388}, {150.94723, -33.85409}, {150.93204, -33.86797}, {150.91773, -33.88755}, {150.9176, -33.88799}, {150.91663, -33.89234}, {150.91657, -33.89263}, {150.9162, -33.8947}, {150.91581, -33.89769} ] ], srid: 4326 }}, {"2CYS", "City South", %Geo.Polygon{ coordinates: [ [ {151.19967, -33.87272}, {151.2013, -33.87742}, {151.20158, -33.87796}, {151.21572, -33.88027}, {151.21997, -33.87876}, {151.22018, -33.87863}, {151.22047, -33.87811}, {151.21954, -33.87315}, {151.21773, -33.87085}, {151.21748, -33.87073}, {151.21224, -33.86988}, {151.21186, -33.86982}, {151.21151, -33.8698}, {151.20957, -33.86991}, {151.20076, -33.87042}, {151.19967, -33.87272} ] ], srid: 4326 }}, {"2DAL", "Dalley", %Geo.Polygon{ coordinates: [ [ {151.19821, -33.85511}, {151.19826, -33.85686}, {151.19838, -33.86042}, {151.19869, -33.86301}, {151.19907, -33.86554}, {151.20076, -33.87042}, {151.20272, -33.87084}, {151.21356, -33.87198}, {151.21534, -33.87215}, {151.2159, -33.87192}, {151.21822, -33.86995}, {151.21835, -33.86963}, {151.22082, -33.86321}, {151.22021, -33.86225}, {151.21589, -33.85587}, {151.21394, -33.8548}, {151.20986, -33.85332}, {151.20695, -33.85311}, {151.19821, -33.85511} ] ], srid: 4326 }}, {"2DBB", "Dubbo", %Geo.Polygon{ coordinates: [ [ {148.55793, -32.23007}, {148.55922, -32.25229}, {148.56453, -32.2828}, {148.58589, -32.28558}, {148.59501, -32.28621}, {148.64158, -32.28411}, {148.65104, -32.27585}, {148.65498, -32.27121}, {148.66045, -32.26137}, {148.66448, -32.2432}, {148.66472, -32.24186}, {148.66285, -32.23205}, {148.65892, -32.22664}, {148.65854, -32.22637}, {148.63336, -32.21551}, {148.63108, -32.21503}, {148.58665, -32.20662}, {148.57361, -32.20498}, {148.55988, -32.21945}, {148.55793, -32.23007} ] ], srid: 4326 }}, {"2EDG", "Edgecliff", %Geo.Polygon{ coordinates: [ [ {151.22954, -33.87678}, {151.2314, -33.88665}, {151.23164, -33.88774}, {151.23283, -33.89075}, {151.23448, -33.89154}, {151.2369, -33.89229}, {151.23748, -33.89222}, {151.25714, -33.8868}, {151.26154, -33.88343}, {151.2618, -33.8832}, {151.2648, -33.8801}, {151.26529, -33.87944}, {151.26592, -33.87797}, {151.25682, -33.8644}, {151.25609, -33.86353}, {151.25163, -33.86379}, {151.2494, -33.86422}, {151.237, -33.86715}, {151.23572, -33.86755}, {151.23495, -33.86794}, {151.22954, -33.87678} ] ], srid: 4326 }}, {"2FRE", "Frenchs Forest", %Geo.Polygon{ coordinates: [ [ {151.17365, -33.6748}, {151.1737, -33.6756}, {151.18508, -33.74087}, {151.19101, -33.75733}, {151.19116, -33.75765}, {151.19918, -33.76761}, {151.20344, -33.77255}, {151.21416, -33.78286}, {151.22141, -33.78464}, {151.22319, -33.78458}, {151.25042, -33.76866}, {151.25244, -33.7673}, {151.2537, -33.76633}, {151.25415, -33.7659}, {151.26014, -33.75996}, {151.26334, -33.75485}, {151.26388, -33.75368}, {151.26683, -33.74676}, {151.26689, -33.74651}, {151.23859, -33.67325}, {151.19755, -33.66211}, {151.19156, -33.66256}, {151.18087, -33.66861}, {151.17915, -33.66961}, {151.17365, -33.6748} ] ], srid: 4326 }}, {"2GBE", "Glebe", %Geo.Polygon{ coordinates: [ [ {151.16416, -33.8793}, {151.16417, -33.88066}, {151.16474, -33.88112}, {151.16634, -33.88244}, {151.16662, -33.88261}, {151.18498, -33.89226}, {151.18807, -33.89337}, {151.1901, -33.89298}, {151.19186, -33.89241}, {151.19262, -33.89216}, {151.1938, -33.89137}, {151.2009, -33.87915}, {151.20167, -33.87719}, {151.2006, -33.8657}, {151.19838, -33.86042}, {151.19289, -33.86164}, {151.16565, -33.87434}, {151.16431, -33.87878}, {151.16416, -33.8793} ] ], srid: 4326 }}, {"2GOS", "Gosford", %Geo.Polygon{ coordinates: [ [ {151.27045, -33.41322}, {151.28258, -33.44649}, {151.31132, -33.46834}, {151.31822, -33.47061}, {151.31971, -33.47091}, {151.37889, -33.43605}, {151.38022, -33.43515}, {151.38145, -33.43306}, {151.39785, -33.40324}, {151.39779, -33.39901}, {151.38913, -33.39325}, {151.38794, -33.39275}, {151.38792, -33.39275}, {151.28263, -33.40095}, {151.2778, -33.40187}, {151.2724, -33.40402}, {151.27045, -33.41322} ] ], srid: 4326 }}, {"2GRN", "Grafton", %Geo.Polygon{ coordinates: [ [ {152.84894, -29.68106}, {152.85519, -29.69385}, {152.86691, -29.70313}, {152.90993, -29.73521}, {152.92194, -29.74051}, {152.92397, -29.7408}, {152.94232, -29.73788}, {152.97075, -29.72421}, {152.97088, -29.72269}, {152.97087, -29.72237}, {152.97056, -29.71952}, {152.93638, -29.61865}, {152.93489, -29.61842}, {152.85125, -29.67132}, {152.84994, -29.67572}, {152.84921, -29.67957}, {152.84894, -29.68106} ] ], srid: 4326 }}, {"2HAM", "Hamilton", %Geo.Polygon{ coordinates: [ [ {151.72387, -32.94967}, {151.72638, -32.95243}, {151.74921, -32.95611}, {151.74972, -32.95592}, {151.75314, -32.95403}, {151.77976, -32.93797}, {151.79121, -32.93069}, {151.79148, -32.9305}, {151.79448, -32.92703}, {151.79472, -32.92669}, {151.79388, -32.92143}, {151.76992, -32.89432}, {151.75337, -32.89366}, {151.72624, -32.91518}, {151.72387, -32.94967} ] ], srid: 4326 }}, {"2KNS", "Kensington", %Geo.Polygon{ coordinates: [ [ {151.18947, -33.91347}, {151.21696, -33.9342}, {151.21923, -33.93423}, {151.22574, -33.93284}, {151.23078, -33.92615}, {151.23596, -33.91902}, {151.24163, -33.90264}, {151.24196, -33.90083}, {151.24246, -33.89748}, {151.2409, -33.89476}, {151.21679, -33.89211}, {151.19672, -33.90114}, {151.19351, -33.90431}, {151.18947, -33.91347} ] ], srid: 4326 }}, {"2LAK", "Lakemba", %Geo.Polygon{ coordinates: [ [ {151.05335, -33.91379}, {151.05402, -33.92598}, {151.05476, -33.9325}, {151.05707, -33.93666}, {151.05735, -33.93696}, {151.07586, -33.94449}, {151.07732, -33.94425}, {151.09423, -33.941}, {151.09541, -33.9406}, {151.0959, -33.94033}, {151.0963, -33.93119}, {151.09621, -33.9309}, {151.08836, -33.91038}, {151.0853, -33.90901}, {151.08229, -33.9077}, {151.07283, -33.90442}, {151.05732, -33.90276}, {151.05642, -33.90493}, {151.05348, -33.91289}, {151.05341, -33.91327}, {151.05335, -33.91379} ] ], srid: 4326 }}, {"2LID", "Lidcombe", %Geo.Polygon{ coordinates: [ [ {151.01295, -33.87054}, {151.02357, -33.88403}, {151.02961, -33.88735}, {151.03008, -33.88753}, {151.03155, -33.88746}, {151.04708, -33.88624}, {151.04805, -33.88615}, {151.04883, -33.88603}, {151.0592, -33.88358}, {151.06003, -33.88276}, {151.06061, -33.88173}, {151.06296, -33.86364}, {151.06216, -33.85694}, {151.03614, -33.84202}, {151.03318, -33.84065}, {151.01902, -33.83743}, {151.01848, -33.8375}, {151.01796, -33.8385}, {151.01659, -33.84364}, {151.01653, -33.84394}, {151.01373, -33.86013}, {151.0137, -33.86034}, {151.01295, -33.87054} ] ], srid: 4326 }}, {"2LIV", "Liverpool", %Geo.Polygon{ coordinates: [ [ {150.86762, -33.9759}, {150.86924, -33.9768}, {150.87932, -33.98158}, {150.91212, -33.96955}, {150.97078, -33.94705}, {150.99001, -33.91299}, {150.99005, -33.91288}, {150.99021, -33.91244}, {150.99188, -33.90686}, {150.99168, -33.90676}, {150.96419, -33.89912}, {150.96356, -33.89895}, {150.96325, -33.8989}, {150.963, -33.89888}, {150.92648, -33.89669}, {150.92093, -33.89699}, {150.91446, -33.89776}, {150.90111, -33.90405}, {150.90059, -33.90463}, {150.89864, -33.90749}, {150.8678, -33.97283}, {150.86762, -33.9759} ] ], srid: 4326 }}, {"2MAI", "Maitland", %Geo.Polygon{ coordinates: [ [ {151.43648, -32.70862}, {151.43717, -32.71119}, {151.51068, -32.78096}, {151.52382, -32.78272}, {151.55888, -32.78538}, {151.62076, -32.78377}, {151.62424, -32.78138}, {151.62475, -32.78097}, {151.62522, -32.7805}, {151.62539, -32.7803}, {151.62565, -32.77989}, {151.63941, -32.7336}, {151.64021, -32.73065}, {151.6411, -32.72653}, {151.60754, -32.68877}, {151.59867, -32.67952}, {151.58682, -32.67626}, {151.58448, -32.67594}, {151.47476, -32.68955}, {151.44607, -32.69366}, {151.43677, -32.70564}, {151.43669, -32.70634}, {151.43648, -32.70862} ] ], srid: 4326 }}, {"2MIR", "Miranda", %Geo.Polygon{ coordinates: [ [ {151.07141, -34.05922}, {151.07224, -34.06305}, {151.08735, -34.06689}, {151.11153, -34.07281}, {151.12866, -34.06982}, {151.12996, -34.06931}, {151.13714, -34.03614}, {151.1336, -34.02293}, {151.12814, -34.01178}, {151.12716, -34.01006}, {151.09781, -33.99761}, {151.09444, -33.9977}, {151.09407, -33.99826}, {151.08602, -34.01588}, {151.07165, -34.05794}, {151.07141, -34.05922} ] ], srid: 4326 }}, {"2MOS", "Mosman", %Geo.Polygon{ coordinates: [ [ {151.23103, -33.83942}, {151.23117, -33.84058}, {151.2313, -33.84101}, {151.23223, -33.84332}, {151.23255, -33.84402}, {151.23286, -33.84438}, {151.24476, -33.85326}, {151.24531, -33.85366}, {151.24588, -33.85381}, {151.24678, -33.85379}, {151.24722, -33.85354}, {151.24759, -33.85314}, {151.26127, -33.83774}, {151.26886, -33.82756}, {151.26894, -33.82735}, {151.26893, -33.82719}, {151.26885, -33.82698}, {151.26721, -33.82443}, {151.26648, -33.82354}, {151.24719, -33.80291}, {151.24525, -33.80302}, {151.23704, -33.80822}, {151.23669, -33.8086}, {151.23483, -33.81139}, {151.23333, -33.81577}, {151.23233, -33.82066}, {151.23232, -33.82071}, {151.23103, -33.83942} ] ], srid: 4326 }}, {"2MYF", "Mayfield", %Geo.Polygon{ coordinates: [ [ {151.69286, -32.90599}, {151.69301, -32.90626}, {151.69352, -32.90668}, {151.69408, -32.90694}, {151.70188, -32.90917}, {151.70294, -32.90944}, {151.72568, -32.91526}, {151.72609, -32.91523}, {151.73159, -32.91283}, {151.74708, -32.90607}, {151.74863, -32.90539}, {151.75317, -32.90338}, {151.76992, -32.89432}, {151.74961, -32.88307}, {151.7465, -32.88135}, {151.70511, -32.86071}, {151.70264, -32.8601}, {151.70051, -32.86013}, {151.69834, -32.86148}, {151.69286, -32.90599} ] ], srid: 4326 }}, {"2NEW", "Newtown", %Geo.Polygon{ coordinates: [ [ {151.15864, -33.91492}, {151.15888, -33.91549}, {151.16813, -33.9271}, {151.17113, -33.9269}, {151.17256, -33.92636}, {151.17369, -33.92588}, {151.1861, -33.91684}, {151.18691, -33.91624}, {151.19495, -33.90823}, {151.19615, -33.90693}, {151.19587, -33.90284}, {151.19493, -33.89897}, {151.19177, -33.89364}, {151.1819, -33.88517}, {151.18119, -33.88461}, {151.1797, -33.88365}, {151.17955, -33.88358}, {151.17801, -33.88304}, {151.17791, -33.88301}, {151.1778, -33.883}, {151.16971, -33.88365}, {151.16902, -33.88494}, {151.1677, -33.88788}, {151.15864, -33.91492} ] ], srid: 4326 }}, {"2NWR", "Nowra-Bomaderry", %Geo.Polygon{ coordinates: [ [ {150.52424, -34.94778}, {150.52436, -34.94828}, {150.52444, -34.94841}, {150.52473, -34.94873}, {150.52712, -34.95125}, {150.52776, -34.95177}, {150.53268, -34.9555}, {150.53473, -34.95618}, {150.53621, -34.95637}, {150.5456, -34.95289}, {150.63597, -34.91671}, {150.64331, -34.8898}, {150.64351, -34.88842}, {150.63409, -34.86263}, {150.61635, -34.83716}, {150.61141, -34.83039}, {150.61049, -34.82968}, {150.56206, -34.81643}, {150.55904, -34.81564}, {150.55724, -34.81533}, {150.55704, -34.81536}, {150.55681, -34.81545}, {150.5326, -34.83026}, {150.53172, -34.83431}, {150.52424, -34.94778} ] ], srid: 4326 }}, {"2PAR", "Parramatta", %Geo.Polygon{ coordinates: [ [ {150.96938, -33.82363}, {150.96939, -33.82424}, {150.96954, -33.83141}, {150.96955, -33.8319}, {150.96998, -33.83199}, {150.9722, -33.83232}, {150.97675, -33.83267}, {150.99732, -33.82808}, {151.0215, -33.8221}, {151.02411, -33.81941}, {151.02254, -33.81447}, {150.99648, -33.79879}, {150.99635, -33.79873}, {150.99579, -33.79873}, {150.98974, -33.799}, {150.98412, -33.79954}, {150.9837, -33.7997}, {150.9811, -33.80074}, {150.98001, -33.80146}, {150.97933, -33.80192}, {150.97908, -33.80211}, {150.97903, -33.80215}, {150.9756, -33.80554}, {150.97542, -33.80573}, {150.97374, -33.80862}, {150.96986, -33.82006}, {150.96983, -33.82025}, {150.96938, -33.82363} ] ], srid: 4326 }}, {"2PEA", "Peakhurst", %Geo.Polygon{ coordinates: [ [ {151.03325, -33.98512}, {151.03631, -33.99059}, {151.03642, -33.99072}, {151.03654, -33.99082}, {151.03676, -33.99092}, {151.03706, -33.99095}, {151.04208, -33.99134}, {151.05152, -33.99158}, {151.05184, -33.99154}, {151.05214, -33.99145}, {151.05256, -33.99131}, {151.05293, -33.99108}, {151.05306, -33.991}, {151.05443, -33.98981}, {151.05497, -33.98929}, {151.0552, -33.98896}, {151.07403, -33.96113}, {151.07933, -33.94962}, {151.07829, -33.9472}, {151.07746, -33.94529}, {151.07603, -33.94236}, {151.07594, -33.94227}, {151.07583, -33.94218}, {151.06615, -33.93543}, {151.05533, -33.9326}, {151.05476, -33.9325}, {151.05333, -33.93243}, {151.04976, -33.93281}, {151.04894, -33.93298}, {151.0412, -33.94121}, {151.03325, -33.98512} ] ], srid: 4326 }}, {"2PEN", "Pendle Hill", %Geo.Polygon{ coordinates: [ [ {150.90468, -33.81692}, {150.90473, -33.81724}, {150.90504, -33.81847}, {150.90517, -33.81876}, {150.91104, -33.82801}, {150.91471, -33.83193}, {150.91605, -33.8322}, {150.9536, -33.83777}, {150.95403, -33.83773}, {150.9577, -33.83733}, {150.96868, -33.83305}, {150.96945, -33.83267}, {150.98727, -33.79302}, {150.98738, -33.79274}, {150.98835, -33.78902}, {150.98832, -33.78891}, {150.98767, -33.78755}, {150.98756, -33.78746}, {150.98259, -33.78414}, {150.97352, -33.78119}, {150.97195, -33.78084}, {150.96096, -33.77933}, {150.94503, -33.77816}, {150.94493, -33.77819}, {150.94402, -33.77846}, {150.94087, -33.77945}, {150.94006, -33.77971}, {150.91801, -33.7974}, {150.90631, -33.8138}, {150.90481, -33.81628}, {150.90469, -33.8167}, {150.90468, -33.81692} ] ], srid: 4326 }}, {"2PTH", "Penrith", %Geo.Polygon{ coordinates: [ [ {150.65985, -33.76467}, {150.66689, -33.77009}, {150.69654, -33.77855}, {150.69906, -33.77803}, {150.74002, -33.75806}, {150.74026, -33.75542}, {150.7418, -33.72703}, {150.7414, -33.72594}, {150.73493, -33.71367}, {150.72813, -33.70522}, {150.68438, -33.68481}, {150.68264, -33.68625}, {150.65985, -33.76467} ] ], srid: 4326 }}, {"2ROC", "Rockdale", %Geo.Polygon{ coordinates: [ [ {151.12068, -33.94426}, {151.12393, -33.95303}, {151.12548, -33.95547}, {151.12567, -33.95569}, {151.12659, -33.95597}, {151.15588, -33.96481}, {151.19277, -33.97483}, {151.1967, -33.97404}, {151.2169, -33.93554}, {151.21696, -33.9342}, {151.21519, -33.92584}, {151.2147, -33.9251}, {151.20278, -33.91487}, {151.19793, -33.91263}, {151.1971, -33.91227}, {151.19454, -33.91143}, {151.1919, -33.9116}, {151.13997, -33.92745}, {151.13459, -33.92985}, {151.1345, -33.92993}, {151.12291, -33.93992}, {151.12068, -33.94426} ] ], srid: 4326 }}, {"2RYD", "Ryde", %Geo.Polygon{ coordinates: [ [ {151.08226, -33.81466}, {151.08353, -33.82028}, {151.10799, -33.83709}, {151.12399, -33.84271}, {151.12681, -33.84297}, {151.13348, -33.83449}, {151.14417, -33.81762}, {151.15418, -33.79931}, {151.15514, -33.79725}, {151.15541, -33.79154}, {151.15541, -33.79135}, {151.13928, -33.77474}, {151.1392, -33.77468}, {151.11614, -33.76237}, {151.10488, -33.76782}, {151.1036, -33.76932}, {151.09734, -33.78204}, {151.08226, -33.81466} ] ], srid: 4326 }}, {"2STL", "St Leonards", %Geo.Polygon{ coordinates: [ [ {151.17582, -33.81286}, {151.17803, -33.84128}, {151.18105, -33.84238}, {151.1869, -33.84349}, {151.18722, -33.8435}, {151.19155, -33.8432}, {151.20486, -33.82758}, {151.2112, -33.81746}, {151.20986, -33.81521}, {151.20982, -33.81518}, {151.20951, -33.81506}, {151.20308, -33.81308}, {151.20124, -33.81271}, {151.19565, -33.81223}, {151.17814, -33.81201}, {151.1776, -33.81202}, {151.17582, -33.81286} ] ], srid: 4326 }}, {"2TAM", "Tamworth", %Geo.Polygon{ coordinates: [ [ {150.84618, -31.07492}, {150.84727, -31.08572}, {150.84863, -31.09144}, {150.86382, -31.11246}, {150.86477, -31.11356}, {150.91693, -31.13635}, {150.95138, -31.14495}, {150.95618, -31.14568}, {151.01, -31.12979}, {151.01087, -31.12944}, {151.01542, -31.12332}, {151.01561, -31.11867}, {150.94016, -31.04378}, {150.9287, -31.03501}, {150.9107, -31.0295}, {150.89632, -31.02735}, {150.84618, -31.07492} ] ], srid: 4326 }}, {"2WAG", "Wagga Wagga", %Geo.Polygon{ coordinates: [ [ {147.26908, -35.16678}, {147.47092, -35.17466}, {147.47818, -35.16283}, {147.47897, -35.15858}, {147.47921, -35.15321}, {147.45181, -35.02804}, {147.44641, -35.02735}, {147.33514, -35.04965}, {147.27691, -35.14263}, {147.2705, -35.15802}, {147.26908, -35.16678} ] ], srid: 4326 }}, {"2WLG", "Wollongong", %Geo.Polygon{ coordinates: [ [ {150.84685, -34.41429}, {150.84688, -34.41442}, {150.86045, -34.44628}, {150.87368, -34.45478}, {150.87616, -34.45558}, {150.87628, -34.45549}, {150.9014, -34.43677}, {150.91002, -34.42202}, {150.89858, -34.40042}, {150.89725, -34.39866}, {150.89719, -34.39861}, {150.89675, -34.39834}, {150.89607, -34.39798}, {150.89288, -34.3972}, {150.89238, -34.39711}, {150.86697, -34.3993}, {150.85028, -34.40956}, {150.84689, -34.4141}, {150.84686, -34.41419}, {150.84685, -34.41429} ] ], srid: 4326 }}, {"3BEN", "Bendigo", %Geo.Polygon{ coordinates: [ [ {144.22108, -36.80402}, {144.22403, -36.81683}, {144.23842, -36.8369}, {144.23915, -36.83774}, {144.24226, -36.83952}, {144.35757, -36.81618}, {144.37796, -36.80526}, {144.37834, -36.80323}, {144.36432, -36.77827}, {144.33487, -36.73067}, {144.28511, -36.72302}, {144.27086, -36.72793}, {144.24283, -36.74186}, {144.2425, -36.74258}, {144.23404, -36.76123}, {144.22699, -36.77946}, {144.22147, -36.80179}, {144.22108, -36.80402} ] ], srid: 4326 }}, {"3BRA", "Ballarat", %Geo.Polygon{ coordinates: [ [ {143.81838, -37.55851}, {143.8221, -37.56934}, {143.86874, -37.65697}, {143.87408, -37.65941}, {143.88982, -37.66256}, {143.89219, -37.66288}, {143.89685, -37.66331}, {143.90306, -37.65427}, {143.93457, -37.56917}, {143.93479, -37.56821}, {143.93527, -37.56569}, {143.9352, -37.56405}, {143.92666, -37.53498}, {143.92308, -37.5313}, {143.9197, -37.52833}, {143.85473, -37.52126}, {143.85077, -37.52114}, {143.8189, -37.55568}, {143.81838, -37.55851} ] ], srid: 4326 }}, {"3CAU", "Caulfield", %Geo.Polygon{ coordinates: [ [ {144.99437, -37.87432}, {144.99625, -37.88808}, {144.99758, -37.88967}, {144.99848, -37.89049}, {145.0043, -37.89496}, {145.0208, -37.89587}, {145.02723, -37.89588}, {145.05579, -37.89586}, {145.07226, -37.885}, {145.07297, -37.88417}, {145.07209, -37.87768}, {145.07129, -37.87618}, {145.0689, -37.87212}, {145.06842, -37.87148}, {145.0667, -37.86919}, {145.03922, -37.86874}, {145.03758, -37.86873}, {144.99437, -37.87432} ] ], srid: 4326 }}, {"3CBN", "Cranbourne", %Geo.Polygon{ coordinates: [ [ {145.22061, -38.11282}, {145.24562, -38.14771}, {145.25308, -38.15767}, {145.25957, -38.16365}, {145.26134, -38.16387}, {145.31952, -38.15644}, {145.37559, -38.13982}, {145.39589, -38.12753}, {145.39879, -38.11542}, {145.39974, -38.10948}, {145.35927, -38.09973}, {145.29549, -38.08463}, {145.27664, -38.0822}, {145.26485, -38.08087}, {145.23926, -38.07933}, {145.23473, -38.08454}, {145.22117, -38.11001}, {145.22061, -38.11282} ] ], srid: 4326 }}, {"3CTA", "Cheltenham", %Geo.Polygon{ coordinates: [ [ {145.01422, -37.97565}, {145.01713, -37.98202}, {145.02963, -37.99326}, {145.03073, -37.99404}, {145.03644, -37.99639}, {145.03757, -37.99651}, {145.06549, -37.99339}, {145.09049, -37.98589}, {145.0913, -37.98487}, {145.09272, -37.98179}, {145.09279, -37.98141}, {145.09284, -37.98086}, {145.09333, -37.9697}, {145.0934, -37.96364}, {145.09077, -37.96216}, {145.07648, -37.95472}, {145.07316, -37.95431}, {145.04862, -37.95133}, {145.03178, -37.95508}, {145.02923, -37.9577}, {145.01682, -37.97228}, {145.01422, -37.97565} ] ], srid: 4326 }}, {"3DAD", "Dandenong", %Geo.Polygon{ coordinates: [ [ {145.18579, -37.9739}, {145.18843, -38.0114}, {145.23225, -38.02034}, {145.2774, -38.02741}, {145.27843, -38.02745}, {145.27918, -38.02732}, {145.28612, -38.02518}, {145.29433, -38.01764}, {145.2945, -38.01741}, {145.29662, -38.01378}, {145.29737, -38.00995}, {145.29737, -38.00986}, {145.29728, -38.0037}, {145.29606, -38.00253}, {145.28524, -37.99209}, {145.22478, -37.95946}, {145.22115, -37.95819}, {145.22068, -37.95813}, {145.19104, -37.95997}, {145.19093, -37.95998}, {145.18848, -37.96163}, {145.1859, -37.97328}, {145.18579, -37.9739} ] ], srid: 4326 }}, {"3EXH", "Exhibition", %Geo.Polygon{ coordinates: [ [ {144.95951, -37.80629}, {144.96316, -37.81424}, {144.96497, -37.81817}, {144.98096, -37.82674}, {144.9822, -37.82719}, {144.98281, -37.82738}, {144.98605, -37.82805}, {144.98777, -37.82758}, {144.98792, -37.82753}, {144.98803, -37.82745}, {144.9881, -37.82739}, {144.98884, -37.82468}, {144.9891, -37.82312}, {144.98754, -37.81924}, {144.97856, -37.8085}, {144.97096, -37.80738}, {144.96925, -37.80716}, {144.96888, -37.80713}, {144.95951, -37.80629} ] ], srid: 4326 }}, {"3FSR", "Footscray", %Geo.Polygon{ coordinates: [ [ {144.84554, -37.7996}, {144.85255, -37.80552}, {144.87934, -37.82446}, {144.89918, -37.8291}, {144.92366, -37.81937}, {144.9331, -37.81386}, {144.935, -37.80985}, {144.93546, -37.80857}, {144.93597, -37.80689}, {144.90198, -37.78307}, {144.89913, -37.78139}, {144.89721, -37.78026}, {144.89343, -37.77995}, {144.89164, -37.77997}, {144.87375, -37.78397}, {144.8726, -37.78435}, {144.86224, -37.78876}, {144.85522, -37.79183}, {144.84646, -37.79577}, {144.84554, -37.7996} ] ], srid: 4326 }}, {"3GEE", "Geelong", %Geo.Polygon{ coordinates: [ [ {144.26791, -38.08607}, {144.32257, -38.16122}, {144.32288, -38.16162}, {144.32576, -38.1651}, {144.32622, -38.16565}, {144.32675, -38.16617}, {144.32769, -38.16705}, {144.32813, -38.16741}, {144.32851, -38.16766}, {144.32872, -38.16777}, {144.3687, -38.1886}, {144.36893, -38.18861}, {144.37329, -38.18845}, {144.38025, -38.18269}, {144.38224, -38.17989}, {144.3952, -38.15004}, {144.3952, -38.15002}, {144.36639, -38.10907}, {144.3657, -38.10822}, {144.3656, -38.10814}, {144.33102, -38.08984}, {144.28209, -38.07421}, {144.28202, -38.0742}, {144.27827, -38.07444}, {144.27724, -38.07455}, {144.2762, -38.0747}, {144.2753, -38.07488}, {144.27366, -38.07524}, {144.27267, -38.07557}, {144.27154, -38.07595}, {144.26922, -38.07692}, {144.26791, -38.08607} ] ], srid: 4326 }}, {"3HAW", "Hawthorn", %Geo.Polygon{ coordinates: [ [ {145.01434, -37.81629}, {145.01459, -37.81763}, {145.017, -37.82792}, {145.02147, -37.83263}, {145.02702, -37.83693}, {145.02747, -37.83722}, {145.028, -37.83747}, {145.02849, -37.83764}, {145.03931, -37.84076}, {145.04161, -37.84101}, {145.0596, -37.84228}, {145.05983, -37.84223}, {145.06961, -37.83468}, {145.07001, -37.82843}, {145.07001, -37.82818}, {145.06997, -37.82791}, {145.06988, -37.82763}, {145.06723, -37.81989}, {145.0658, -37.81662}, {145.04535, -37.80907}, {145.0431, -37.80865}, {145.03871, -37.80806}, {145.0381, -37.80798}, {145.01541, -37.81215}, {145.01475, -37.81438}, {145.01434, -37.81629} ] ], srid: 4326 }}, {"3HRS", "Horsham", %Geo.Polygon{ coordinates: [ [ {142.16898, -36.71383}, {142.16902, -36.72583}, {142.16904, -36.72952}, {142.16913, -36.7304}, {142.17531, -36.75297}, {142.21035, -36.76761}, {142.21428, -36.76762}, {142.22348, -36.73231}, {142.22346, -36.7255}, {142.21988, -36.70735}, {142.2198, -36.7071}, {142.21389, -36.70108}, {142.20782, -36.69682}, {142.20457, -36.69577}, {142.2024, -36.6958}, {142.18136, -36.69694}, {142.16898, -36.71383} ] ], srid: 4326 }}, {"3KAL", "Karingal", %Geo.Polygon{ coordinates: [ [ {145.14122, -38.15788}, {145.15009, -38.17472}, {145.15098, -38.17533}, {145.19335, -38.19036}, {145.19844, -38.19098}, {145.25308, -38.15767}, {145.25392, -38.15319}, {145.2501, -38.12497}, {145.24929, -38.12406}, {145.22929, -38.1163}, {145.22342, -38.1156}, {145.20859, -38.11456}, {145.20387, -38.11508}, {145.15106, -38.1263}, {145.14601, -38.12864}, {145.1445, -38.13361}, {145.14162, -38.15255}, {145.14122, -38.15788} ] ], srid: 4326 }}, {"3KEW", "Kew", %Geo.Polygon{ coordinates: [ [ {144.99902, -37.80557}, {144.99913, -37.80578}, {144.99968, -37.80647}, {144.99975, -37.80651}, {145.01661, -37.81429}, {145.01897, -37.81503}, {145.02246, -37.81578}, {145.0279, -37.81674}, {145.03127, -37.81714}, {145.03148, -37.81714}, {145.04782, -37.80488}, {145.04781, -37.8048}, {145.0423, -37.78697}, {145.02406, -37.78632}, {145.02318, -37.78635}, {145.02049, -37.78685}, {145.0192, -37.78716}, {145.01804, -37.78755}, {145.01722, -37.78794}, {145.00179, -37.79693}, {145.00116, -37.79753}, {145.00067, -37.79864}, {144.99916, -37.80478}, {144.99902, -37.80557} ] ], srid: 4326 }}, {"3KEY", "Keysborough", %Geo.Polygon{ coordinates: [ [ {145.12277, -38.01698}, {145.1298, -38.02898}, {145.13054, -38.02985}, {145.1337, -38.03322}, {145.13968, -38.03814}, {145.18186, -38.03376}, {145.18431, -38.03277}, {145.18786, -38.02087}, {145.19157, -38.00128}, {145.19322, -37.98566}, {145.1932, -37.98441}, {145.19281, -37.97887}, {145.18579, -37.9739}, {145.18398, -37.97289}, {145.17768, -37.97138}, {145.17733, -37.97133}, {145.16548, -37.97072}, {145.14297, -37.97226}, {145.12504, -38.00983}, {145.12277, -38.01698} ] ], srid: 4326 }}, {"3KGP", "Kings Park", %Geo.Polygon{ coordinates: [ [ {144.7478, -37.74173}, {144.75921, -37.74707}, {144.80567, -37.76586}, {144.81229, -37.7666}, {144.83589, -37.75851}, {144.84584, -37.7478}, {144.85026, -37.743}, {144.81959, -37.71584}, {144.81945, -37.71572}, {144.81849, -37.71504}, {144.80376, -37.7133}, {144.76031, -37.70884}, {144.75979, -37.70885}, {144.75934, -37.70888}, {144.75879, -37.70898}, {144.75853, -37.70905}, {144.75064, -37.71161}, {144.75034, -37.71305}, {144.74954, -37.71715}, {144.74831, -37.72376}, {144.7478, -37.74173} ] ], srid: 4326 }}, {"3LIL", "Lilydale", %Geo.Polygon{ coordinates: [ [ {145.28165, -37.76876}, {145.29194, -37.77887}, {145.30255, -37.78573}, {145.31041, -37.78838}, {145.31102, -37.78845}, {145.33836, -37.78883}, {145.35772, -37.78612}, {145.36099, -37.78552}, {145.37778, -37.77975}, {145.37787, -37.77968}, {145.39331, -37.75968}, {145.39355, -37.75873}, {145.39756, -37.72386}, {145.39791, -37.72073}, {145.30326, -37.71699}, {145.30256, -37.717}, {145.29889, -37.71812}, {145.29815, -37.71855}, {145.29784, -37.71892}, {145.28466, -37.75482}, {145.2828, -37.76232}, {145.28165, -37.76876} ] ], srid: 4326 }}, {"3MTE", "Mount Eliza", %Geo.Polygon{ coordinates: [ [ {145.06087, -38.2011}, {145.06189, -38.20541}, {145.08681, -38.21761}, {145.18963, -38.21204}, {145.19419, -38.18897}, {145.19446, -38.18757}, {145.19401, -38.18694}, {145.18696, -38.18091}, {145.18561, -38.17999}, {145.10774, -38.15219}, {145.08521, -38.16164}, {145.07987, -38.16845}, {145.07864, -38.17004}, {145.06087, -38.2011} ] ], srid: 4326 }}, {"3NBA", "North Balwyn", %Geo.Polygon{ coordinates: [ [ {145.06756, -37.77978}, {145.0821, -37.80593}, {145.08255, -37.80661}, {145.08316, -37.80668}, {145.09475, -37.80765}, {145.09957, -37.80774}, {145.14852, -37.79996}, {145.15083, -37.79831}, {145.15097, -37.7975}, {145.15511, -37.77319}, {145.15406, -37.76933}, {145.11864, -37.7531}, {145.09732, -37.74925}, {145.08555, -37.75305}, {145.07907, -37.75757}, {145.07127, -37.76701}, {145.06804, -37.77734}, {145.06763, -37.77904}, {145.06756, -37.77978} ] ], srid: 4326 }}, {"3RES", "Reservoir", %Geo.Polygon{ coordinates: [ [ {144.9765, -37.71942}, {144.98549, -37.74037}, {144.98713, -37.74089}, {144.99468, -37.74302}, {144.99761, -37.74331}, {145.02957, -37.74582}, {145.03013, -37.74585}, {145.05459, -37.72433}, {145.05479, -37.72414}, {145.05491, -37.724}, {145.05502, -37.72387}, {145.05898, -37.71837}, {145.05936, -37.71637}, {145.03812, -37.69797}, {145.02549, -37.69218}, {145.00813, -37.68682}, {145.00771, -37.68669}, {145.00127, -37.68685}, {144.99854, -37.68726}, {144.98299, -37.69105}, {144.98234, -37.69176}, {144.97945, -37.7}, {144.97716, -37.71022}, {144.9765, -37.71942} ] ], srid: 4326 }}, {"3RWO", "Ringwood", %Geo.Polygon{ coordinates: [ [ {145.20938, -37.80555}, {145.21525, -37.83566}, {145.21661, -37.83819}, {145.23134, -37.83995}, {145.23225, -37.84004}, {145.26479, -37.82254}, {145.26507, -37.82169}, {145.26581, -37.81922}, {145.26502, -37.79356}, {145.26403, -37.79075}, {145.26384, -37.79052}, {145.25934, -37.78651}, {145.25905, -37.78648}, {145.21133, -37.79282}, {145.2095, -37.79333}, {145.2094, -37.79393}, {145.20938, -37.80555} ] ], srid: 4326 }}, {"3SHP", "Shepparton", %Geo.Polygon{ coordinates: [ [ {145.32586, -36.38032}, {145.32587, -36.381}, {145.35023, -36.44164}, {145.35215, -36.44489}, {145.38003, -36.46638}, {145.38477, -36.46892}, {145.38874, -36.47062}, {145.38983, -36.47063}, {145.39072, -36.47059}, {145.39117, -36.47033}, {145.43931, -36.42859}, {145.46418, -36.37762}, {145.46534, -36.36099}, {145.46536, -36.35962}, {145.46522, -36.3591}, {145.43193, -36.32426}, {145.4179, -36.31664}, {145.41567, -36.31568}, {145.40758, -36.31568}, {145.36796, -36.33658}, {145.32619, -36.36149}, {145.32612, -36.36315}, {145.32586, -36.38032} ] ], srid: 4326 }}, {"3SMR", "South Morang", %Geo.Polygon{ coordinates: [ [ {145.03556, -37.66539}, {145.04032, -37.68429}, {145.04177, -37.68751}, {145.09964, -37.68947}, {145.10185, -37.68732}, {145.10206, -37.68693}, {145.10352, -37.68347}, {145.10356, -37.68335}, {145.10362, -37.68311}, {145.10786, -37.65823}, {145.10771, -37.64853}, {145.10668, -37.63676}, {145.09679, -37.62298}, {145.08105, -37.61367}, {145.07131, -37.61273}, {145.07015, -37.61308}, {145.06173, -37.61879}, {145.04735, -37.63632}, {145.03575, -37.66198}, {145.03556, -37.66539} ] ], srid: 4326 }}, {"3STK", "St Kilda", %Geo.Polygon{ coordinates: [ [ {144.96438, -37.85593}, {144.96509, -37.86301}, {144.96537, -37.86549}, {144.97387, -37.887}, {144.9744, -37.88771}, {144.9765, -37.88845}, {144.98881, -37.8915}, {144.99086, -37.89176}, {144.99294, -37.89201}, {144.99545, -37.89231}, {144.99705, -37.88387}, {144.99741, -37.88002}, {144.99469, -37.86344}, {144.99339, -37.86225}, {144.98257, -37.85553}, {144.97937, -37.85368}, {144.96814, -37.85153}, {144.96777, -37.85187}, {144.96438, -37.85593} ] ], srid: 4326 }}, {"3TAG", "Traralgon", %Geo.Polygon{ coordinates: [ [ {146.46126, -38.21716}, {146.465, -38.2243}, {146.46586, -38.22505}, {146.54939, -38.21466}, {146.55967, -38.20994}, {146.57665, -38.19702}, {146.57717, -38.19654}, {146.57726, -38.19643}, {146.57734, -38.19626}, {146.57744, -38.19581}, {146.57734, -38.19494}, {146.57629, -38.18821}, {146.57221, -38.18123}, {146.56377, -38.17451}, {146.55984, -38.17391}, {146.55045, -38.17347}, {146.50269, -38.17512}, {146.49879, -38.17596}, {146.4641, -38.20358}, {146.46126, -38.21716} ] ], srid: 4326 }}, {"3TMN", "Tullamarine", %Geo.Polygon{ coordinates: [ [ {144.80345, -37.65705}, {144.805, -37.66309}, {144.84052, -37.7205}, {144.84236, -37.72234}, {144.84589, -37.72475}, {144.84827, -37.72562}, {144.8845, -37.7335}, {144.88815, -37.73389}, {144.8895, -37.73402}, {144.89703, -37.72775}, {144.90278, -37.71455}, {144.90612, -37.69469}, {144.90629, -37.69349}, {144.90626, -37.69188}, {144.90183, -37.68248}, {144.84607, -37.64556}, {144.81725, -37.64828}, {144.80652, -37.65236}, {144.80414, -37.65399}, {144.80345, -37.65705} ] ], srid: 4326 }}, {"3TNB", "Thornbury", %Geo.Polygon{ coordinates: [ [ {144.97943, -37.75384}, {144.97956, -37.75507}, {144.98016, -37.7573}, {144.98317, -37.76058}, {144.99968, -37.76404}, {145.01538, -37.76546}, {145.01975, -37.76584}, {145.02649, -37.76613}, {145.02789, -37.76391}, {145.03209, -37.75679}, {145.03605, -37.74753}, {145.03614, -37.74702}, {145.03596, -37.74555}, {145.03583, -37.74494}, {145.0349, -37.74327}, {145.03408, -37.74195}, {145.03287, -37.74091}, {144.985, -37.74032}, {144.98489, -37.74032}, {144.9806, -37.74379}, {144.98056, -37.74401}, {144.97943, -37.75384} ] ], srid: 4326 }}, {"3WER", "Werribee", %Geo.Polygon{ coordinates: [ [ {144.57388, -37.86736}, {144.59029, -37.91203}, {144.60139, -37.92194}, {144.63181, -37.92699}, {144.63836, -37.92659}, {144.65585, -37.92065}, {144.6861, -37.91037}, {144.69166, -37.90842}, {144.69638, -37.90579}, {144.70477, -37.88267}, {144.70441, -37.88202}, {144.67208, -37.86892}, {144.61131, -37.84592}, {144.59248, -37.84325}, {144.59027, -37.84513}, {144.58782, -37.84765}, {144.58402, -37.85156}, {144.57501, -37.86134}, {144.57425, -37.86525}, {144.57388, -37.86736} ] ], srid: 4326 }}, {"3WHL", "Wheelers Hill", %Geo.Polygon{ coordinates: [ [ {145.13961, -37.9064}, {145.1444, -37.91866}, {145.148, -37.92475}, {145.17575, -37.92824}, {145.17993, -37.92874}, {145.18485, -37.92932}, {145.20232, -37.91704}, {145.20266, -37.91641}, {145.20279, -37.91573}, {145.2036, -37.90931}, {145.20363, -37.90847}, {145.2002, -37.89154}, {145.20018, -37.89146}, {145.19397, -37.88247}, {145.19296, -37.88143}, {145.19292, -37.88141}, {145.19021, -37.87974}, {145.18569, -37.87704}, {145.18519, -37.87696}, {145.18399, -37.87682}, {145.18239, -37.87669}, {145.15647, -37.87799}, {145.15622, -37.87812}, {145.14453, -37.89227}, {145.13982, -37.90294}, {145.13965, -37.90384}, {145.13961, -37.9064} ] ], srid: 4326 }}, {"4APL", "Aspley", %Geo.Polygon{ coordinates: [ [ {152.98051, -27.34408}, {152.98054, -27.34427}, {152.98523, -27.3528}, {152.99544, -27.37117}, {153.00107, -27.37759}, {153.00745, -27.37865}, {153.00928, -27.37891}, {153.05728, -27.38253}, {153.0582, -27.38242}, {153.06214, -27.38115}, {153.06236, -27.38107}, {153.06373, -27.37983}, {153.08579, -27.35856}, {153.09285, -27.3498}, {153.09292, -27.3487}, {153.0916, -27.34432}, {153.08223, -27.33409}, {153.07272, -27.32925}, {153.06706, -27.32932}, {152.99998, -27.33105}, {152.9949, -27.33177}, {152.98574, -27.33801}, {152.9832, -27.34008}, {152.98314, -27.34014}, {152.98138, -27.34234}, {152.98078, -27.34347}, {152.98051, -27.34408} ] ], srid: 4326 }}, {"4BBE", "Bundaberg", %Geo.Polygon{ coordinates: [ [ {152.31349, -24.85051}, {152.3142, -24.85894}, {152.32185, -24.89016}, {152.32574, -24.90246}, {152.33129, -24.91403}, {152.33678, -24.91475}, {152.3625, -24.91732}, {152.37473, -24.9163}, {152.3771, -24.91537}, {152.39853, -24.87148}, {152.40255, -24.84665}, {152.40183, -24.84489}, {152.40021, -24.84153}, {152.39526, -24.83432}, {152.35713, -24.81523}, {152.34244, -24.8094}, {152.332, -24.81791}, {152.33191, -24.818}, {152.31349, -24.85051} ] ], srid: 4326 }}, {"4BDB", "Bundamba", %Geo.Polygon{ coordinates: [ [ {152.7752, -27.63565}, {152.77522, -27.63613}, {152.77701, -27.64912}, {152.77775, -27.65303}, {152.77776, -27.65305}, {152.77907, -27.65329}, {152.79317, -27.65527}, {152.80119, -27.65634}, {152.82474, -27.6576}, {152.85514, -27.63141}, {152.85542, -27.63116}, {152.85567, -27.63087}, {152.87484, -27.60081}, {152.87446, -27.60001}, {152.85417, -27.58272}, {152.8262, -27.57468}, {152.82436, -27.575}, {152.79407, -27.58331}, {152.78571, -27.58638}, {152.78012, -27.59318}, {152.77944, -27.59539}, {152.7752, -27.63565} ] ], srid: 4326 }}, {"4CAB", "Caboolture", %Geo.Polygon{ coordinates: [ [ {152.84417, -27.0524}, {152.88289, -27.12619}, {152.88406, -27.12626}, {152.90807, -27.12621}, {152.90839, -27.12617}, {152.9876, -27.1002}, {152.98872, -27.09978}, {152.98986, -27.09878}, {153.00208, -27.08236}, {153.00248, -27.07527}, {152.99567, -27.05569}, {152.97733, -27.02733}, {152.94692, -27.00325}, {152.94137, -27.00242}, {152.89495, -27.01403}, {152.87178, -27.02113}, {152.87037, -27.02245}, {152.85701, -27.03615}, {152.84417, -27.0524} ] ], srid: 4326 }}, {"4CAI", "Cairns", %Geo.Polygon{ coordinates: [ [ {145.74598, -16.92982}, {145.75131, -16.9453}, {145.75519, -16.95341}, {145.75841, -16.95908}, {145.75875, -16.95945}, {145.76554, -16.96112}, {145.76778, -16.96094}, {145.77134, -16.95826}, {145.77266, -16.95667}, {145.78333, -16.94194}, {145.785, -16.92141}, {145.78374, -16.91638}, {145.7618, -16.9027}, {145.75795, -16.90156}, {145.75668, -16.90184}, {145.75053, -16.90726}, {145.74723, -16.91539}, {145.74598, -16.92982} ] ], srid: 4326 }}, {"4CPH", "Camp Hill", %Geo.Polygon{ coordinates: [ [ {153.04916, -27.47851}, {153.04936, -27.47917}, {153.05577, -27.48853}, {153.06817, -27.50234}, {153.08577, -27.51206}, {153.09624, -27.51544}, {153.11076, -27.51928}, {153.11266, -27.51973}, {153.14234, -27.52551}, {153.14485, -27.51245}, {153.14233, -27.50838}, {153.10053, -27.4447}, {153.05861, -27.44091}, {153.05358, -27.44061}, {153.05064, -27.4415}, {153.04996, -27.44309}, {153.04916, -27.47851} ] ], srid: 4326 }}, {"4EMP", "Eight Mile", %Geo.Polygon{ coordinates: [ [ {153.07108, -27.58192}, {153.08465, -27.6253}, {153.09674, -27.62711}, {153.16937, -27.62129}, {153.16952, -27.62116}, {153.17498, -27.61251}, {153.17882, -27.60493}, {153.18246, -27.57392}, {153.18246, -27.57346}, {153.18084, -27.56643}, {153.13444, -27.55223}, {153.13135, -27.55178}, {153.12765, -27.55254}, {153.09595, -27.56302}, {153.0949, -27.56337}, {153.07696, -27.57214}, {153.07603, -27.57264}, {153.07108, -27.58192} ] ], srid: 4326 }}, {"4GDN", "Goodna", %Geo.Polygon{ coordinates: [ [ {152.82605, -27.67026}, {152.83108, -27.68744}, {152.83559, -27.69756}, {152.83773, -27.70236}, {152.88243, -27.67139}, {152.93963, -27.62916}, {152.94087, -27.62265}, {152.94314, -27.61009}, {152.94507, -27.59747}, {152.92625, -27.56708}, {152.92604, -27.56687}, {152.92568, -27.56673}, {152.92509, -27.56658}, {152.92482, -27.56655}, {152.91576, -27.56563}, {152.9044, -27.56564}, {152.90423, -27.56564}, {152.87108, -27.57993}, {152.86992, -27.58098}, {152.82924, -27.64428}, {152.82605, -27.67026} ] ], srid: 4326 }}, {"4IPS", "Ipswich", %Geo.Polygon{ coordinates: [ [ {152.66763, -27.62186}, {152.66765, -27.62206}, {152.66768, -27.62234}, {152.67675, -27.66923}, {152.7562, -27.70431}, {152.75926, -27.70507}, {152.77164, -27.70692}, {152.82083, -27.69185}, {152.82107, -27.69019}, {152.78711, -27.60363}, {152.77266, -27.59656}, {152.75418, -27.59541}, {152.75266, -27.59552}, {152.69343, -27.60253}, {152.69309, -27.60261}, {152.67519, -27.60889}, {152.67513, -27.60892}, {152.67036, -27.6112}, {152.67005, -27.6115}, {152.669, -27.61324}, {152.66763, -27.62186} ] ], srid: 4326 }}, {"4KLG", "Petrie", %Geo.Polygon{ coordinates: [ [ {152.91152, -27.24726}, {152.91534, -27.25502}, {152.91753, -27.25696}, {152.9181, -27.25727}, {152.96211, -27.27762}, {153.01627, -27.28903}, {153.01936, -27.28931}, {153.04871, -27.28018}, {153.04958, -27.27867}, {153.0582, -27.25511}, {153.05851, -27.2539}, {153.03416, -27.20816}, {153.03182, -27.20721}, {153.03169, -27.20717}, {153.01067, -27.2042}, {152.99022, -27.20559}, {152.91215, -27.24258}, {152.91189, -27.24287}, {152.91162, -27.24589}, {152.91152, -27.24726} ] ], srid: 4326 }}, {"4MKY", "Mackay", %Geo.Polygon{ coordinates: [ [ {149.12965, -21.1678}, {149.13606, -21.206}, {149.13934, -21.22289}, {149.1459, -21.22492}, {149.14835, -21.2252}, {149.19377, -21.19126}, {149.20646, -21.15111}, {149.20616, -21.14302}, {149.20614, -21.1425}, {149.20608, -21.14234}, {149.20579, -21.14211}, {149.20522, -21.14189}, {149.18073, -21.13397}, {149.17412, -21.13353}, {149.16505, -21.13358}, {149.16192, -21.13445}, {149.13266, -21.16051}, {149.13073, -21.16444}, {149.12985, -21.16639}, {149.12965, -21.1678} ] ], srid: 4326 }}, {"4MRA", "Merrimac", %Geo.Polygon{ coordinates: [ [ {153.38622, -28.03694}, {153.38736, -28.04082}, {153.38863, -28.044}, {153.41951, -28.06818}, {153.42924, -28.0712}, {153.4358, -28.07295}, {153.43764, -28.0732}, {153.44192, -28.07279}, {153.44569, -28.07012}, {153.43523, -28.02349}, {153.40001, -28.02667}, {153.39885, -28.02723}, {153.38622, -28.03694} ] ], srid: 4326 }}, {"4NBR", "Nambour", %Geo.Polygon{ coordinates: [ [ {152.91977, -26.629}, {152.92434, -26.6477}, {152.92489, -26.6483}, {152.94487, -26.66782}, {152.95444, -26.67454}, {152.9761, -26.67804}, {152.98108, -26.67839}, {153.00183, -26.66312}, {153.00231, -26.66246}, {153.01617, -26.62565}, {153.01653, -26.62362}, {153.01435, -26.61924}, {152.96621, -26.58686}, {152.9631, -26.58573}, {152.92119, -26.61212}, {152.92014, -26.6185}, {152.91977, -26.629} ] ], srid: 4326 }}, {"4ROT", "Rockhampton", %Geo.Polygon{ coordinates: [ [ {150.45974, -23.38443}, {150.48955, -23.40551}, {150.5119, -23.4176}, {150.51774, -23.41837}, {150.51947, -23.41517}, {150.5283, -23.39309}, {150.53134, -23.37289}, {150.52614, -23.35899}, {150.50672, -23.32671}, {150.5042, -23.32613}, {150.50415, -23.32612}, {150.49866, -23.32718}, {150.46054, -23.37991}, {150.45974, -23.38443} ] ], srid: 4326 }}, {"4SLA", "Slacks Creek", %Geo.Polygon{ coordinates: [ [ {153.06936, -27.64608}, {153.07298, -27.66018}, {153.08024, -27.66563}, {153.08299, -27.66756}, {153.11553, -27.67824}, {153.11698, -27.67844}, {153.11944, -27.67737}, {153.17345, -27.64511}, {153.17405, -27.64171}, {153.17484, -27.62856}, {153.17052, -27.62272}, {153.16307, -27.6135}, {153.14518, -27.60836}, {153.14152, -27.60786}, {153.13116, -27.60835}, {153.12798, -27.60877}, {153.09687, -27.61595}, {153.07317, -27.62713}, {153.07006, -27.64209}, {153.06936, -27.64608} ] ], srid: 4326 }}, {"4SOP", "Southport", %Geo.Polygon{ coordinates: [ [ {153.3807, -27.95776}, {153.3851, -27.9823}, {153.39426, -27.99468}, {153.39441, -27.99474}, {153.39553, -27.99505}, {153.41451, -27.99987}, {153.41527, -27.99964}, {153.43075, -27.98795}, {153.43099, -27.93902}, {153.42932, -27.93626}, {153.407, -27.93929}, {153.38638, -27.94421}, {153.3807, -27.95776} ] ], srid: 4326 }}, {"4TNS", "Townsville", %Geo.Polygon{ coordinates: [ [ {146.70242, -19.2723}, {146.70302, -19.27298}, {146.71201, -19.28042}, {146.80031, -19.30415}, {146.80524, -19.30311}, {146.8247, -19.28903}, {146.82491, -19.28885}, {146.84677, -19.2555}, {146.84063, -19.24742}, {146.77411, -19.18278}, {146.76139, -19.18292}, {146.71215, -19.22894}, {146.70656, -19.23709}, {146.70242, -19.2723} ] ], srid: 4326 }}, {"4TOB", "Toowoomba", %Geo.Polygon{ coordinates: [ [ {151.924, -27.60366}, {151.93159, -27.61533}, {151.93345, -27.61701}, {151.93537, -27.61784}, {151.94081, -27.61982}, {151.94241, -27.62007}, {151.96674, -27.62263}, {152.00146, -27.59519}, {152.03873, -27.5603}, {152.04111, -27.55151}, {152.04145, -27.54959}, {152.04169, -27.54767}, {152.04158, -27.54645}, {152.0409, -27.54528}, {151.9547, -27.51196}, {151.95317, -27.51222}, {151.94708, -27.51333}, {151.94491, -27.51856}, {151.924, -27.60366} ] ], srid: 4326 }}, {"4WOB", "Woolloongabba", %Geo.Polygon{ coordinates: [ [ {152.99815, -27.48515}, {152.99836, -27.48691}, {153.01424, -27.50806}, {153.01683, -27.51061}, {153.01687, -27.51062}, {153.03796, -27.51037}, {153.03809, -27.51036}, {153.0388, -27.51009}, {153.04242, -27.5075}, {153.04251, -27.50742}, {153.052, -27.49278}, {153.05676, -27.48349}, {153.05691, -27.48307}, {153.0573, -27.48027}, {153.0571, -27.47967}, {153.03701, -27.4638}, {153.03573, -27.46378}, {153.03441, -27.46378}, {153.013, -27.47096}, {153.01288, -27.47102}, {153.01286, -27.47103}, {153.01271, -27.47112}, {153.00638, -27.47544}, {153.00477, -27.47688}, {153.00026, -27.48234}, {152.99868, -27.48441}, {152.99815, -27.48515} ] ], srid: 4326 }}, {"5CPK", "St Marys", %Geo.Polygon{ coordinates: [ [ {138.54543, -34.99186}, {138.54561, -34.99555}, {138.54582, -34.99934}, {138.54602, -35.00081}, {138.56372, -35.02967}, {138.57101, -35.03786}, {138.57106, -35.0379}, {138.57123, -35.03802}, {138.59896, -35.04992}, {138.60948, -35.05041}, {138.60963, -35.0504}, {138.63018, -35.04254}, {138.67178, -35.00269}, {138.65226, -34.99043}, {138.60955, -34.97787}, {138.60851, -34.97773}, {138.59251, -34.97777}, {138.5477, -34.9811}, {138.54712, -34.98133}, {138.54543, -34.99179}, {138.54543, -34.99186} ] ], srid: 4326 }}, {"5EDW", "Edwardstown", %Geo.Polygon{ coordinates: [ [ {138.54137, -34.9585}, {138.54141, -34.95918}, {138.5445, -34.97461}, {138.54689, -34.98139}, {138.55421, -34.98172}, {138.55529, -34.98167}, {138.5794, -34.98031}, {138.58096, -34.98015}, {138.58586, -34.97924}, {138.58605, -34.97914}, {138.58632, -34.97896}, {138.58684, -34.97161}, {138.58695, -34.96178}, {138.587, -34.95575}, {138.58695, -34.95531}, {138.58309, -34.94235}, {138.58054, -34.93854}, {138.58029, -34.9382}, {138.57997, -34.93824}, {138.57964, -34.93829}, {138.54885, -34.94319}, {138.54367, -34.94926}, {138.54137, -34.9585} ] ], srid: 4326 }}, {"5EZB", "Elizabeth", %Geo.Polygon{ coordinates: [ [ {138.57839, -34.73112}, {138.57868, -34.74427}, {138.58291, -34.74985}, {138.59246, -34.76197}, {138.59901, -34.76474}, {138.60781, -34.76783}, {138.6534, -34.7611}, {138.69061, -34.75416}, {138.69328, -34.75361}, {138.7204, -34.70139}, {138.7192, -34.70087}, {138.69032, -34.68858}, {138.6161, -34.69216}, {138.57998, -34.72521}, {138.57839, -34.73112} ] ], srid: 4326 }}, {"5MOD", "Modbury", %Geo.Polygon{ coordinates: [ [ {138.64093, -34.81828}, {138.64542, -34.83665}, {138.64648, -34.84094}, {138.69086, -34.86557}, {138.71825, -34.86298}, {138.71899, -34.86284}, {138.71923, -34.86261}, {138.73996, -34.81558}, {138.74097, -34.81302}, {138.72993, -34.80506}, {138.67457, -34.79733}, {138.67373, -34.7973}, {138.67224, -34.79739}, {138.65304, -34.80253}, {138.64709, -34.80609}, {138.64306, -34.8105}, {138.64166, -34.81529}, {138.64093, -34.81828} ] ], srid: 4326 }}, {"5PRO", "Prospect", %Geo.Polygon{ coordinates: [ [ {138.5752, -34.8749}, {138.57525, -34.87586}, {138.57544, -34.87862}, {138.58182, -34.90599}, {138.58191, -34.906}, {138.61328, -34.90934}, {138.61361, -34.90938}, {138.61371, -34.90933}, {138.61387, -34.90924}, {138.61406, -34.90905}, {138.62843, -34.89153}, {138.6296, -34.88957}, {138.61465, -34.86678}, {138.60515, -34.86578}, {138.58037, -34.86364}, {138.57895, -34.8637}, {138.5752, -34.8749} ] ], srid: 4326 }}, {"5PTA", "Port Augusta", %Geo.Polygon{ coordinates: [ [ {137.72913, -32.47522}, {137.72935, -32.48291}, {137.72998, -32.50176}, {137.73181, -32.50586}, {137.83977, -32.53195}, {137.84697, -32.52614}, {137.84927, -32.51724}, {137.85114, -32.50663}, {137.84424, -32.49984}, {137.77812, -32.46994}, {137.74097, -32.46011}, {137.73356, -32.46565}, {137.72913, -32.47522} ] ], srid: 4326 }}, {"5STI", "Stirling", %Geo.Polygon{ coordinates: [ [ {138.66824, -35.00539}, {138.67622, -35.02429}, {138.67649, -35.02446}, {138.69552, -35.03256}, {138.69688, -35.03294}, {138.76048, -35.0466}, {138.76169, -35.04487}, {138.78268, -35.01418}, {138.782, -35.01156}, {138.75219, -34.956}, {138.75202, -34.95579}, {138.7516, -34.95548}, {138.74939, -34.9543}, {138.69363, -34.94471}, {138.68577, -34.94511}, {138.68163, -34.95076}, {138.6712, -34.98804}, {138.6705, -34.99057}, {138.66824, -35.00539} ] ], srid: 4326 }}, {"6APP", "Applecross", %Geo.Polygon{ coordinates: [ [ {115.80696, -32.0024}, {115.80864, -32.01727}, {115.81495, -32.05957}, {115.82236, -32.08172}, {115.82302, -32.08344}, {115.85458, -32.08792}, {115.8582, -32.08732}, {115.87631, -32.08244}, {115.88023, -32.07955}, {115.88992, -32.06925}, {115.88951, -32.0562}, {115.85137, -31.99622}, {115.8212, -31.991}, {115.81719, -31.99104}, {115.81348, -31.99405}, {115.80696, -32.0024} ] ], srid: 4326 }}, {"6BSD", "Bassendean", %Geo.Polygon{ coordinates: [ [ {115.91633, -31.86733}, {115.91753, -31.89052}, {115.91763, -31.89157}, {115.92312, -31.92}, {115.93705, -31.93004}, {115.99321, -31.9319}, {115.99409, -31.92953}, {116.00349, -31.88104}, {116.00536, -31.86332}, {116.00536, -31.86312}, {115.99927, -31.84617}, {115.98478, -31.8437}, {115.95341, -31.84632}, {115.9225, -31.85291}, {115.91767, -31.85487}, {115.91717, -31.85554}, {115.91633, -31.86733} ] ], srid: 4326 }}, {"6CAN", "Cannington", %Geo.Polygon{ coordinates: [ [ {115.88042, -32.01201}, {115.88057, -32.01525}, {115.8858, -32.02184}, {115.92604, -32.05458}, {115.94304, -32.05448}, {115.95494, -32.04493}, {115.95575, -32.04411}, {115.97, -32.02837}, {115.97059, -32.0274}, {115.97096, -32.0268}, {115.97187, -32.02445}, {115.97761, -31.99771}, {115.97873, -31.9882}, {115.97342, -31.9869}, {115.94081, -31.98378}, {115.93479, -31.98548}, {115.88726, -32.00116}, {115.88285, -32.00542}, {115.88042, -32.01201} ] ], srid: 4326 }}, {"6CGE", "South Coogee", %Geo.Polygon{ coordinates: [ [ {115.75053, -32.26425}, {115.75605, -32.26846}, {115.79618, -32.29169}, {115.7964, -32.29171}, {115.79711, -32.29171}, {115.81216, -32.29142}, {115.85156, -32.27232}, {115.88695, -32.24573}, {115.88697, -32.24464}, {115.88424, -32.21897}, {115.8208, -32.16112}, {115.79946, -32.15385}, {115.79501, -32.15233}, {115.7925, -32.15226}, {115.79002, -32.15229}, {115.75723, -32.2215}, {115.75618, -32.22382}, {115.75535, -32.226}, {115.75155, -32.25543}, {115.75053, -32.26425} ] ], srid: 4326 }}, {"6DBL", "Doubleview", %Geo.Polygon{ coordinates: [ [ {115.77479, -31.91366}, {115.77556, -31.92185}, {115.78744, -31.92589}, {115.81192, -31.91741}, {115.81346, -31.91545}, {115.81868, -31.90688}, {115.82084, -31.90156}, {115.81001, -31.86649}, {115.80644, -31.86665}, {115.7824, -31.87051}, {115.77862, -31.87168}, {115.77557, -31.87643}, {115.7748, -31.91302}, {115.77479, -31.91366} ] ], srid: 4326 }}, {"6GLT", "Geraldton", %Geo.Polygon{ coordinates: [ [ {114.57809, -28.78394}, {114.63985, -28.83644}, {114.69187, -28.81604}, {114.70327, -28.8092}, {114.70637, -28.80578}, {114.71505, -28.79322}, {114.71508, -28.78365}, {114.71505, -28.78356}, {114.66937, -28.70792}, {114.62932, -28.66303}, {114.62475, -28.66052}, {114.61987, -28.66066}, {114.61305, -28.66554}, {114.60678, -28.6802}, {114.57814, -28.78271}, {114.57809, -28.78394} ] ], srid: 4326 }}, {"6HIL", "Hilton", %Geo.Polygon{ coordinates: [ [ {115.72324, -32.05425}, {115.75673, -32.09538}, {115.76402, -32.09545}, {115.80612, -32.08959}, {115.80755, -32.08914}, {115.82296, -32.08406}, {115.82417, -32.07459}, {115.82435, -32.07298}, {115.82482, -32.06321}, {115.82478, -32.06141}, {115.8238, -32.0595}, {115.81585, -32.0462}, {115.76213, -32.01783}, {115.76013, -32.01783}, {115.75064, -32.02117}, {115.73035, -32.04407}, {115.72762, -32.04718}, {115.72324, -32.05425} ] ], srid: 4326 }}, {"6KAT", "Katanning", %Geo.Polygon{ coordinates: [ [ {117.54005, -33.69037}, {117.54706, -33.69621}, {117.54966, -33.6983}, {117.55147, -33.69922}, {117.55248, -33.69966}, {117.5601, -33.70276}, {117.56031, -33.7028}, {117.56606, -33.70325}, {117.56923, -33.70278}, {117.56944, -33.70273}, {117.57443, -33.69174}, {117.57442, -33.68973}, {117.5722, -33.68383}, {117.56771, -33.67806}, {117.56631, -33.67725}, {117.56585, -33.67707}, {117.56363, -33.67704}, {117.55422, -33.67706}, {117.5423, -33.68632}, {117.54182, -33.68671}, {117.54005, -33.69037} ] ], srid: 4326 }}, {"6KEL", "Kelmscott", %Geo.Polygon{ coordinates: [ [ {115.96313, -32.13118}, {115.96446, -32.13231}, {115.97667, -32.14085}, {116.08822, -32.14627}, {116.0989, -32.14628}, {116.09892, -32.13716}, {116.09769, -32.13117}, {116.08834, -32.098}, {116.08786, -32.0979}, {116.00765, -32.0938}, {115.96497, -32.12949}, {115.96313, -32.13118} ] ], srid: 4326 }}, {"6MLO", "Mullaloo", %Geo.Polygon{ coordinates: [ [ {115.72521, -31.76044}, {115.72758, -31.80618}, {115.73065, -31.81154}, {115.73438, -31.81745}, {115.73615, -31.82023}, {115.7421, -31.82202}, {115.77472, -31.8194}, {115.77562, -31.81923}, {115.78216, -31.81722}, {115.78367, -31.81317}, {115.78347, -31.8096}, {115.78332, -31.80713}, {115.78211, -31.78937}, {115.77961, -31.77353}, {115.77927, -31.77244}, {115.77783, -31.77067}, {115.76397, -31.75532}, {115.74986, -31.75425}, {115.74809, -31.75426}, {115.72551, -31.75798}, {115.72521, -31.76044} ] ], srid: 4326 }}, {"6PNJ", "Pinjarra", %Geo.Polygon{ coordinates: [ [ {115.7999, -32.65316}, {115.81445, -32.65335}, {115.81895, -32.65335}, {115.83183, -32.65317}, {115.86683, -32.64641}, {115.88697, -32.63946}, {115.89114, -32.63118}, {115.89901, -32.61035}, {115.89942, -32.60287}, {115.8995, -32.60034}, {115.89921, -32.59865}, {115.89774, -32.59616}, {115.84235, -32.57704}, {115.8201, -32.57228}, {115.7999, -32.65316} ] ], srid: 4326 }}, {"6SUB", "Subiaco", %Geo.Polygon{ coordinates: [ [ {115.7861, -31.99111}, {115.78674, -31.99506}, {115.78713, -31.99655}, {115.79131, -32.00473}, {115.79228, -32.00525}, {115.80621, -32.00267}, {115.80833, -32.00191}, {115.82926, -31.99295}, {115.85856, -31.95539}, {115.85863, -31.95527}, {115.85912, -31.95427}, {115.85934, -31.95305}, {115.85954, -31.95174}, {115.85973, -31.95047}, {115.82676, -31.92211}, {115.82321, -31.92271}, {115.79108, -31.95339}, {115.7861, -31.99111} ] ], srid: 4326 }}, {"7HOB", "Hobart", %Geo.Polygon{ coordinates: [ [ {147.24318, -42.9328}, {147.24428, -42.93355}, {147.24508, -42.9336}, {147.34752, -42.93672}, {147.36194, -42.9317}, {147.363, -42.9262}, {147.36297, -42.92477}, {147.36259, -42.9203}, {147.36206, -42.91423}, {147.3492, -42.87983}, {147.34158, -42.86078}, {147.33086, -42.8427}, {147.29791, -42.84551}, {147.29771, -42.84554}, {147.28842, -42.8498}, {147.26524, -42.86362}, {147.24318, -42.9328} ] ], srid: 4326 }}, {"7LAU", "Launceston", %Geo.Polygon{ coordinates: [ [ {147.05378, -41.41394}, {147.05436, -41.41517}, {147.05946, -41.4206}, {147.11452, -41.4581}, {147.11621, -41.45889}, {147.12202, -41.46107}, {147.12349, -41.46098}, {147.12569, -41.46082}, {147.14693, -41.45876}, {147.18841, -41.44707}, {147.20127, -41.44032}, {147.19683, -41.41697}, {147.19539, -41.41185}, {147.15372, -41.37078}, {147.14884, -41.36806}, {147.14283, -41.36586}, {147.11499, -41.37093}, {147.06395, -41.38369}, {147.06006, -41.38587}, {147.05433, -41.39062}, {147.05378, -41.41394} ] ], srid: 4326 }}, {"8DRW", "Darwin", %Geo.Polygon{ coordinates: [ [ {130.81497, -12.45413}, {130.81765, -12.4595}, {130.81837, -12.46031}, {130.81963, -12.46115}, {130.82111, -12.46201}, {130.84391, -12.47282}, {130.8466, -12.47275}, {130.85083, -12.47038}, {130.90847, -12.42436}, {130.9084, -12.40252}, {130.8665, -12.39764}, {130.86413, -12.39765}, {130.82098, -12.40371}, {130.81804, -12.40452}, {130.81585, -12.406}, {130.8154, -12.40772}, {130.81497, -12.45413} ] ], srid: 4326 }}, {"9CVI", "Civic", %Geo.Polygon{ coordinates: [ [ {149.09483, -35.2743}, {149.09725, -35.2817}, {149.15999, -35.3231}, {149.16445, -35.32583}, {149.19838, -35.32105}, {149.20908, -35.30495}, {149.20935, -35.30438}, {149.20925, -35.30392}, {149.16947, -35.2425}, {149.16871, -35.24142}, {149.16574, -35.23904}, {149.15447, -35.23141}, {149.15211, -35.23066}, {149.12493, -35.23241}, {149.12486, -35.23245}, {149.10167, -35.25688}, {149.09483, -35.2743} ] ], srid: 4326 }}, {"9QBN", "Queanbeyan", %Geo.Polygon{ coordinates: [ [ {149.14644, -35.405}, {149.14882, -35.40728}, {149.15259, -35.41085}, {149.21616, -35.43799}, {149.23147, -35.44007}, {149.23816, -35.44094}, {149.24031, -35.43998}, {149.25072, -35.43378}, {149.25199, -35.43169}, {149.29301, -35.33787}, {149.29295, -35.33783}, {149.29146, -35.33729}, {149.29057, -35.3371}, {149.26251, -35.3312}, {149.25502, -35.33014}, {149.24898, -35.33018}, {149.20768, -35.33928}, {149.20684, -35.3396}, {149.19595, -35.34456}, {149.16766, -35.36749}, {149.14707, -35.39675}, {149.14644, -35.405} ] ], srid: 4326 }} ] @doc "Number of POI/CSA pairs seeded." def count, do: length(@pois) @doc """ Seeds all POI and CSA places and pairs each POI 1:1 with its CSA via a PlaceRef (POI -> CSA, role `:interconnects`). The SQ traverses CSA -> POI through this ref via Ash. Per-record and resilient: a record that fails (e.g. a constraint) is logged and skipped so the rest load. The `:build` actions upsert by id; the ref step checks for an existing pairing first, so re-running is idempotent. """ def seed do require Logger Enum.each(@pois, fn {ref, name, point} -> try do Nbn.build_poi!(%{id: ref, name: name, location: point}) rescue e -> Logger.error("Exception seeding POI #{ref}: #{inspect(e)}") end end) Enum.each(@csas, fn {ref, name, poly} -> try do Nbn.build_csa!(%{id: csa_id(ref), name: name, bounds: poly}) rescue e -> Logger.error("Exception seeding CSA #{ref}: #{inspect(e)}") end end) Enum.each(@pois, fn {ref, _name, _point} -> try do # Idempotent pairing. The :build actions upsert by id, but # create_place_ref! does NOT upsert — so guard it. We check the # relationship directly off the CSA (load place_refs -> source_place) # rather than via the filtered API: `%Ash.NotLoaded{}` would mean we # failed to load, `[]` means no pairing yet, a matching ref means done. unless paired?(csa_id(ref), ref) do Provider.create_place_ref!(%{ role: @interconnects, source: {:place, ref}, target: csa_id(ref) }) end rescue e -> Logger.error("Exception pairing POI #{ref} -> CSA: #{inspect(e)}") end end) seed_locations() :ok end @doc """ Seeds the demo customer premises: each a Location (street address) plus a LocationPoint (lat/long) that `:geo_locates` it. These Adelaide-Hills venues service-qualify to the Stirling CSA (5STI). Idempotent like `seed/0`. """ def seed_locations do require Logger Enum.each(@locations, fn {loc_id, _point_id, name, {nr, street, locality, postcode}, _coords} -> try do Nbn.build_location!(%{ id: loc_id, name: name, street_nr: nr, street_name: street, locality: locality, state_or_province: "SA", country: "Australia", postcode: postcode }) rescue e -> Logger.error("Exception seeding Location #{loc_id} (#{name}): #{inspect(e)}") end end) Enum.each(@locations, fn {_loc_id, point_id, name, _street, {lon, lat}} -> try do Nbn.build_location_point!(%{ id: point_id, name: name, location: %Geo.Point{coordinates: {lon, lat}, srid: 4326} }) rescue e -> Logger.error("Exception seeding LocationPoint #{point_id} (#{name}): #{inspect(e)}") end end) Enum.each(@locations, fn {loc_id, point_id, _name, _street, _coords} -> try do # LocationPoint :geo_locates Location (point -> address). Guard the # non-upserting create_place_ref! by reading the ref off the Location. unless geo_located?(loc_id, point_id) do Provider.create_place_ref!(%{ role: @geo_locates, source: {:place, point_id}, target: loc_id }) end rescue e -> Logger.error("Exception geo-locating Location #{loc_id}: #{inspect(e)}") end end) # Standalone non-premise points — a LocationPoint with no Location. Enum.each(@standalone_points, fn {point_id, name, {lon, lat}} -> try do Nbn.build_location_point!(%{ id: point_id, name: name, location: %Geo.Point{coordinates: {lon, lat}, srid: 4326} }) rescue e -> Logger.error("Exception seeding standalone point #{point_id} (#{name}): #{inspect(e)}") end end) :ok end defp csa_id(ref), do: "CSA-" <> ref # True if the CSA already has a PlaceRef from the given POI with the # interconnects role. Reads the relationship off the CSA via `load` # (place_refs -> source_place), defending against a missing CSA or an # unloaded relationship (treated as "not paired", so seeding proceeds). defp paired?(csa_id, poi_ref) do with {:ok, csa} <- Nbn.get_csa_by_id(csa_id), false <- is_nil(csa), {:ok, csa} <- Ash.load(csa, place_refs: [:source_place]), refs when is_list(refs) <- csa.place_refs do Enum.any?(refs, fn pr -> pr.role == @interconnects and pr.source_place != nil and pr.source_place.id == poi_ref end) else _ -> false end end # True if the Location already has a :geo_locates PlaceRef from the given # LocationPoint. Same load-off-the-target pattern as paired?/2. defp geo_located?(loc_id, point_id) do with {:ok, loc} <- Nbn.get_location_by_id(loc_id), false <- is_nil(loc), {:ok, loc} <- Ash.load(loc, place_refs: [:source_place]), refs when is_list(refs) <- loc.place_refs do Enum.any?(refs, fn pr -> pr.role == @geo_locates and pr.source_place != nil and pr.source_place.id == point_id end) else _ -> false end end end