Skip to content

Getting source data: GeoJSON files

GeoJSON is a plain-text format for describing geographic shapes — points, lines, polygons. It’s just JSON with a known structure. Most fisheries and marine boundary datasets are published in either GeoJSON or shapefile format; you usually want GeoJSON because finwave’s import dialog accepts it directly without conversion.

A minimal GeoJSON file looks like:

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[[ -123.5, 49.0 ], [ -123.0, 49.0 ], [ -123.0, 49.5 ], [ -123.5, 49.5 ], [ -123.5, 49.0 ]]]
},
"properties": {
"AREA": 28,
"SUBAREA": 1,
"NAME": "Subarea 28-1",
"LABEL": "28-1"
}
}
]
}

Each Feature is one zone. Its geometry carries the polygon coordinates (as [longitude, latitude] pairs). Its properties carry everything else — codes, names, descriptions, parent IDs, anything the publisher decided was relevant.

DFO Pacific Fisheries Management Areas (Canada)

Section titled “DFO Pacific Fisheries Management Areas (Canada)”

The authoritative source is the BC Data Catalogue:

Click “Access / Download” → custom download → choose GeoJSON as the format. You’ll get a zipped file containing pfma.geojson. Unzip and use that file with finwave’s import dialog.

Property names you’ll see in the DFO file:

PropertyUse it as
LABELCode (28-1, 102-3 — short, unique within the layer)
MANAGEMENT_AREA_NAMEName (Subarea 28-1)
MANAGEMENT_AREAParent code (28, 102 — the integer that subareas roll up to)
MANAGEMENT_SUBAREAThe subarea number — usually combined with MANAGEMENT_AREA to form the LABEL

Note: DFO ships the dataset at subarea granularity. There are ~480 real subareas plus ~100 unlabeled buffer/edge fragments (where MANAGEMENT_AREA = 0 and LABEL is empty). The import dialog will skip the unlabeled rows automatically.

If you want parent-area polygons (the ~42 numbered areas like 28, 121, 142), import the subarea file with Parent code property = MANAGEMENT_AREA — finwave will synthesize the parent polygons by unioning the children of each parent code. You then get a clean two-level hierarchy in one import.

If you’ve got polygons in a shapefile (.shp), convert to GeoJSON with mapshaper — drop the .shp, .dbf, .prj, .shx files in, then export as GeoJSON. Free, browser-based, no upload to a third party.

If you’ve got polygons in a KML / KMZ, the same mapshaper tool handles those too.

If you have just coordinates in a spreadsheet, draw the polygons on the map directly using finwave’s draw tool — see Drawing & editing.

Before importing, open the file in a text editor (or a JSON viewer) and skim the first feature. Ask:

  • What property holds a unique short code per zone? That’s your Code property. Good codes are short (under ~10 chars), use only letters/digits/dashes/underscores. Bad codes have spaces, slashes, or are missing entirely.
  • What property holds the human-readable name? That’s your Name property. Falls back to the Code if missing.
  • Is there a parent-pointer property? A column that names another zone — like DFO’s MANAGEMENT_AREA integer pointing at the parent of each subarea. If yes, you’ll use that as your Parent code property during import to wire up the hierarchy in one shot.
  • Is the geometry in WGS84? Every authoritative source publishes in WGS84 (the standard “lon/lat” projection). If you’re not sure, the import dialog will reject features whose coordinates obviously aren’t in [-180, 180] × [-90, 90] range.

If you’re stuck identifying which property is which, just drop the file in the Import dialog without filling any property override — finwave’s defaults try code / id / PFMA_NAME / AREA_NAME for the Code, and name / NAME / AREA_NAME for the Name. The result table will show what got picked; if it’s wrong, set the override and retry.