SE SASKATCHEWAN WELLBORE INVENTORY
Snapshot retrieved 27 October 2026; IRIS extract date 26 October 2026.

PURPOSE AND COVERAGE
This package supplements the regional model's 4,074 historical formation-top
control wells with the current public GeoAtlas well inventory. It includes
horizontal, directional and vertical wellbores, with planned/cancelled records
separately identified. The historical control set was never a complete modern
well inventory; missing horizontal wells in that set do not establish a lack
of drilling.

Query rectangle: longitude -105 to -101.2, latitude49 to51 degrees. The browser
inventory retains records whose surface, bottomhole or mapped path intersects
the actual Saskatchewan study boundary in model.json. Full source snapshots
retain all features returned by the rectangle query, including35 wellbores
outside the final model mask.

SOURCES
Government of Saskatchewan, Ministry of Energy and Resources.
Vertical Wells:
https://gis.saskatchewan.ca/arcgis/rest/services/Economy/Petroleum/MapServer/0
Non Vertical Wells:
https://gis.saskatchewan.ca/arcgis/rest/services/Economy/Petroleum/MapServer/1
Legacy Petroleum Wells (historical bottom formation only):
https://gis.saskatchewan.ca/arcgis/rest/services/Petroleum/MapServer/0
Official field descriptions and licence:
https://gisappl.saskatchewan.ca/WebDocs/Geo_Atlas/MetaData/NonVertical_well.html
Historical KB source already incorporated into the regional model:
https://services3.arcgis.com/zcv98lgAl8xQ04cW/arcgis/rest/services/SPFPS_TVD_SK_data/FeatureServer/0

Contains information licensed under the Government of Saskatchewan Standard
Unrestricted Use Data Licence (Version 2.0).
https://gisappl.saskatchewan.ca/Html5Ext/Resources/GOS_Standard_Unrestricted_Use_Data_Licence_v2.0.pdf

COMPLETENESS AND IDENTIFIERS
All source OBJECTIDs were retrieved before feature queries. Batches requested
explicit IDs and each returned ID set was compared with the requested set.
Separate count queries verified24,626 vertical-layer records and29,613
nonvertical-layer records. There was no2000-record pagination cutoff.
The legacy layer returned28,645 records. Full unmodified response feature
attributes and geometries are retained in the *_full.json files.

Current layers include completion associations. These were aggregated by
exact WELLBORE_CWI, preserving different Boss, Leg and Whipstock identifiers
and all source OBJECTIDs. There are52,372 distinct bore identifiers before
the model mask and52,337 after it; these represent43,264 well origins.
Do not equate completion rows, wellbores and parent well origins.

CLASSIFICATION
The WELLDRILLINGTRAJECTORY attribute determines horizontal, vertical or
directional classification. The map-layer name alone is not the classifier:
some horizontal records are represented only by points, and some vertical
records have map polylines.

The default drilled/in-progress inventory includes46,886 bores:24,842
horizontal,21,122 vertical and922 directional/slant. This includes18 currently
Drilling bores; their reported depth must not be called a completed finalTD.
The5,451 Planned or Cancelled bore records remain available separately.
Planned sidetracks are not called drilled simply because the parent well
has been drilled.

GEOMETRY, DEPTH AND ELEVATION
Horizontal coordinates are EPSG:2957 NAD83(CSRS)/UTM zone13N, matching the
regional model. Original map paths are retained with0.01m coordinate rounding.
They are2D map representations from IRIS surface/bottomhole information.
They are not a series of surveyed3D stations: the service supplies no
per-vertex measured depth, TVD, inclination, azimuth or elevation.
The package contains29,306 mapped plan traces and zero surveyed3D tracks.

The current WELLBORE_BH_MEASUREDDEPTH and WELLBORE_BH_TRUEVERTICALDEPTH fields
explicitly give depths in metres belowKB (mkb). They become tdMDM and tdTVDM.
Zero, null and invalid depths are represented as missing, never invented.
All drilled/in-progress bores except3 have reportedTVD; one of those3 has
MD only. Both reportedMD andTVD are retained where available.

Only4,030 bores have a KB elevation matched to the historical model controls,
requiring exact normalized UWI and surface coordinates within100m; multiple
candidate KB values must agree within0.11m. KB is not inferred from a nearby
well or terrain. Its historical vertical datum limitations are unchanged.
For those matched records a display endpoint can be KB minus reportedTVD.
For unmatched records, any reference-plane origin is a visualization
convention and cannot be labelled sea-level or absolute reservoir elevation.

The user requested vertical fallback where surveys are unavailable. Any
straight vertical line drawn for these records is an assumption, including
for horizontal wells. ReportedTVD should be used before any MD-as-TVD fallback.
TreatingMD asTVD must be explicitly labelled an assumption and must not erase
the source trajectory classification or the separate2D plan trace.

FORMATION AT TD VERSUS COMPLETION FORMATION
CompletionFormations reports completed/producing/injecting intervals. It is
not the same field as formation at the total drilled depth.
The legacy BOTTOM_FM field is joined only with a unique exact normalized
wellboreUWI. It is exposed as formationAtTD only if the legacy total depth and
current reportedMD agree within5m; this produces23,657 historical source
matches. That check reduces mismatch but does not make old interpretations
current or independently reinterpreted. Unmatched/current-unknown TD formations
remain unknown. The original legacy source total depth is not labelledTVD.
Historical bottom formations with mismatched depth are retained in the full
source snapshot, not silently assigned as the current TD formation.

pool_completion_formations.json groups official completion formation strings
by the pool code present in COMPLETIONPOOL. It can validate name-derived pool
categories; it does not establish detailed pool depth, pay or3D fluid contacts.

FILES AND REPRODUCTION
well_data_compact.json is a17.9MB column-and-dictionary encoded browser
inventory. decode-well-data.js restores normal well objects; its sourceRecords
adapter recovers the exact layer/OBJECTID associations. Raw source attributes
are retained independently in the three *_full.json files.
well_provenance.json and well_stats.json contain counts, checks and exclusions.
retrieval_manifest.json records source URLs, byte counts, hashes and retrieval.
The *_ids.json files hold complete ID sets used for retrieval.

Requirements for processing: Python3.12 and Shapely2.2.0. Re-run:
python fetch_wells.py
python build_well_data.py --model path/to/model.json --source-dir path/to/package --output-dir path/to/output
python pack_well_data.py
The packer reads/writes in its own directory. The supplied regional model's
model.json is required for mask and KB joins and is in the main model package.

Hashes in package_manifest.json describe every other packaged member.
