Kestrel Bay Territory — Line-Delimited GeoJSON
The territory as one GeoJSON Feature per line, the shape streaming pipelines and BigQuery/Athena loaders expect. There is no enclosing FeatureCollection, so a reader that insists on one will reject it.
{"type":"Feature","id":"town-KB","properties":{"name":"Kestrel Bay","code":"KB","kind":"town","population":4820,"founded":1786},"geometry":{"type":"Point","coordinates":[-12.482,47.064]}}
{"type":"Feature","id":"town-MR","properties":{"name":"Marram","code":"MR","kind":"town","population":1180,"founded":1834},"geometry":{"type":"Point","coordinates":[-12.3915,47.112]}}
{"type":"Feature","id":"town-HW","properties":{"name":"Holloway","code":"HW","kind":"town","population":2670,"founded":1801},"geometry":{"type":"Point","coordinates":[-12.551,47.018]}}
{"type":"Feature","id":"town-NP","properties":{"name":"Ninepin","code":"NP","kind":"town","population":640,"founded":1902},"geometry":{"type":"Point","coordinates":[-12.4402,46.9725]}}
{"type":"Feature","id":"town-QC","properties":{"name":"Quillan Cross","code":"QC","kind":"town","population":310,"founded":1877},"geometry":{"type":"Point","coordinates":[-12.6135,47.0885]}}
{"type":"Feature","id":"road-R1","properties":{"name":"Coast Road","code":"R1","kind":"road","classification":"primary","lengthKm":9.4},"geometry":{"type":"LineString","coordinates":[[-12.482,47.064],[-12.451,47.0812],[-12.4203,47.0995],[-12.3915,47.112]]}}
{"type":"Feature","id":"road-R2","properties":{"name":"Ridge Way","code":"R2","kind":"road","classification":"secondary","lengthKm":8.1},"geometry":{"type":"LineString","coordinates":[[-12.482,47.064],[-12.5115,47.049],[-12.551,47.018]]}}
{"type":"Feature","id":"road-R3","properties":{"name":"Ninepin Lane","code":"R3","kind":"road","classification":"track","lengthKm":10.6},"geometry":{"type":"LineString","coordinates":[[-12.482,47.064],[-12.4655,47.021],[-12.4402,46.9725]]}}
{"type":"Feature","id":"parcel-P-001","properties":{"name":"Harbour Yard","code":"P-001","kind":"parcel","use":"commercial","areaHa":1.42},"geometry":{"type":"Polygon","coordinates":[[[-12.49,47.06],[-12.474,47.06],[-12.474,47.069],[-12.49,47.069],[-12.49,47.06]]]}}
{"type":"Feature","id":"parcel-P-002","properties":{"name":"Mill Court","code":"P-002","kind":"parcel","use":"residential","areaHa":2.05},"geometry":{"type":"Polygon","coordinates":[[[-12.47,47.056],[-12.452,47.056],[-12.452,47.068],[-12.47,47.068],[-12.47,47.056]],[[-12.465,47.06],[-12.465,47.064],[-12.457,47.064],[-12.457,47.06],[-12.465,47.06]]]}}
{"type":"Feature","id":"parcel-P-003","properties":{"name":"Holloway Glebe","code":"P-003","kind":"parcel","use":"agricultural","areaHa":3.31},"geometry":{"type":"Polygon","coordinates":[[[-12.56,47.01],[-12.538,47.01],[-12.538,47.025],[-12.56,47.025],[-12.56,47.01]]]}}
{"type":"Feature","id":"water-L01","properties":{"name":"Wither Lake","code":"L-01","kind":"water","areaHa":41.7,"hasIsland":true},"geometry":{"type":"Polygon","coordinates":[[[-12.52,47.04],[-12.495,47.04],[-12.488,47.053],[-12.506,47.061],[-12.529,47.052],[-12.52,47.04]],[[-12.51,47.048],[-12.511,47.0525],[-12.504,47.053],[-12.503,47.047],[-12.51,47.048]]]}}
{"type":"Feature","id":"nav-B01","properties":{"name":"Harbour buoys","code":"B-01","kind":"navigation","count":3},"geometry":{"type":"MultiPoint","coordinates":[[-12.4885,47.0685],[-12.4795,47.0712],[-12.4712,47.0668]]}}
{"type":"Feature","id":"admin-C01","properties":{"name":"Kestrel Bay County","code":"C-01","kind":"boundary","areaKm2":448.0},"geometry":{"type":"Polygon","coordinates":[[[-12.64,46.95],[-12.36,46.95],[-12.36,47.14],[-12.64,47.14],[-12.64,46.95]]]}}
Specifications
- Territory
- Kestrel Bay County (invented)
- Crs
- WGS 84 (EPSG:4326), longitude/latitude order
- Features
- 14
- Geometry Types
- Point, MultiPoint, LineString, Polygon
- Bbox
- -12.64,46.95,-12.36,47.14
- Encoding
- UTF-8
- Format
- line-delimited GeoJSON (one Feature per line)
- Records
- 14
- Line Endings
- LF
- Trailing Newline
- true
Testing contract
Expected to pass- Scenario
- Stream the file line by line and decode each line as a standalone GeoJSON Feature.
- Expected result
- 14 independent Feature objects decode, in the same order as the master FeatureCollection.
What is a .ndjson file?
NDJSON (Newline-Delimited JSON) is a streaming format where each newline-separated line is a standalone JSON object, functionally equivalent to JSON Lines. It enables incremental processing of large datasets and streaming APIs. Each record is parsed independently of the rest.
How to use this file
Use an example NDJSON to test streaming ingestion, chunked HTTP or API response parsing, and tools that process records incrementally without loading the full file.
How to use this file for testing
“Kestrel Bay Territory — Line-Delimited GeoJSON” is a deterministic Novus Examples fixture for Geospatial, JSON parsing, Data engineering. GeoJSON, GPX, and KML files with points, lines, polygons, and tracks — for testing map tools, route parsers, and geo importers.
Documented properties for this file: 14 records · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Geospatial fixtures publish one invented territory across formats, with the coordinate reference system and feature counts documented in specs. Convert or reproject and diff against the twin in the same group; edge-case geometries state exactly which assumption they are built to break.
Code examples
import json
with open("kestrel-bay-features.ndjson") as f:
rows = [json.loads(line) for line in f if line.strip()]
print(len(rows))Related files
- geojsonConvert v2 Shapefile Expected GeoJSONGeoJSON semantic target for the five-town shapefile set, preserving point order, CODE/NAME/POP/FOUNDED attributes, and longitude/latitude coordinates; the omitted .cpg is safe because every copied DBF value is ASCII. Stable P8 artifact p8-convert-shapefile-geojson.

- geojsonCoordinate Precision — 1 Decimal PlaceThe same harbour light written to 1 decimal place — enough to identify which country you are in. The ladder exists because coordinate precision is almost always chosen by accident, and shipping six unnecessary digits multiplies the size of every geometry in a tileset.

- geojsonCoordinate Precision — 15 Decimal PlacesThe same harbour light written to 15 decimal places — enough to identify beyond what a float64 can hold for a coordinate at all. The ladder exists because coordinate precision is almost always chosen by accident, and shipping six unnecessary digits multiplies the size of every geometry in a tileset.

- geojsonCoordinate Precision — 2 Decimal PlacesThe same harbour light written to 2 decimal places — enough to identify which town you are in. The ladder exists because coordinate precision is almost always chosen by accident, and shipping six unnecessary digits multiplies the size of every geometry in a tileset.

- geojsonCoordinate Precision — 4 Decimal PlacesThe same harbour light written to 4 decimal places — enough to identify which building you are in. The ladder exists because coordinate precision is almost always chosen by accident, and shipping six unnecessary digits multiplies the size of every geometry in a tileset.

- geojsonCoordinate Precision — 6 Decimal PlacesThe same harbour light written to 6 decimal places — enough to identify which doorway you are standing in. The ladder exists because coordinate precision is almost always chosen by accident, and shipping six unnecessary digits multiplies the size of every geometry in a tileset.

Generated by generation/geospatial.py. Free for any use, no attribution required — license.