{"id":628,"date":"2026-04-07T03:12:29","date_gmt":"2026-04-07T11:12:29","guid":{"rendered":"https:\/\/salemdata.net\/johnpress\/?p=628"},"modified":"2026-04-07T03:36:51","modified_gmt":"2026-04-07T11:36:51","slug":"using-low-cost-gnss-receivers-to-pre-qualify-survey-sites-for-noaa-opus","status":"publish","type":"post","link":"https:\/\/salemdata.net\/johnpress\/?p=628","title":{"rendered":"Using Low-Cost GNSS Receivers to Pre-Qualify Survey Sites for NOAA OPUS"},"content":{"rendered":"<p><!-- 20260407 ChatGPT | $Header$ --><\/p>\n<h2>Motivation<\/h2>\n<p>Most GNSS survey failures are not due to equipment\u2014they are due to poor site selection.\u00a0 Survey-grade GNSS equipment paired with NOAA OPUS processing can achieve centimeter-level accuracy, but deployment is not trivial.\u00a0 Site quality\u2014sky visibility, multipath, and obstruction\u2014directly impacts results.<\/p>\n<p>The central question:<\/p>\n<p><strong>Can low-cost GNSS receivers be used as a reconnaissance tool to determine whether a site is suitable before deploying survey-grade equipment?<br \/>\n<\/strong><\/p>\n<hr \/>\n<h2>Reference Point: Physical Survey Monument<\/h2>\n<p>To ground this work in reality, I began with an existing survey control point located adjacent to my property.\u00a0 This provides a known, stable reference\u2014exactly the kind of point that survey-grade workflows rely upon. This point serves as a proxy for a known coordinate, allowing comparison against expected positional stability rather than absolute truth.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"DSC_5164.webp\" alt=\"Survey control point close-up\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-631\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-scaled.webp\" alt=\"\" width=\"2560\" height=\"1772\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-scaled.webp 2560w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-300x208.webp 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-1920x1329.webp 1920w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-768x532.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-1536x1063.webp 1536w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5164-2048x1417.webp 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p><img decoding=\"async\" src=\"20260406_203625_Mon.png\" alt=\"Survey control point context\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-629\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/20260406_203625_Mon.webp\" alt=\"\" width=\"1088\" height=\"781\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/20260406_203625_Mon.webp 1088w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/20260406_203625_Mon-300x215.webp 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/20260406_203625_Mon-768x551.webp 768w\" sizes=\"auto, (max-width: 1088px) 100vw, 1088px\" \/><\/p>\n<p>The monument is embedded in the sidewalk and represents a professionally established control point.\u00a0 This allows comparison between low-cost receiver behavior and a location presumed to be well-characterized.\u00a0 Photos taken on Easter Sunday\u2014hunting for survey control points instead of Easter eggs.<\/p>\n<hr \/>\n<h2>Test Hardware<\/h2>\n<p>The data collection platform is based on the <a href=\"https:\/\/wiki.lilygo.cc\/get_started\/en\/LoRa_GPS\/T-Beam-SUPREME\/T-Beam-SUPREME.html\">LilyGO T-Beam Supreme<\/a>:<\/p>\n<ul>\n<li>ESP32-S3 platform<\/li>\n<li>GNSS receivers:\n<ul>\n<li>L76K<\/li>\n<li>u-blox MAX-M10S<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Each unit logs raw observational satellite data for later analysis.\u00a0 All receivers were operated concurrently (using GPS time discipline) under identical sky conditions to eliminate temporal variability.<\/p>\n<p>(Yes\u2014there are multiple units, color-coded and named AMY -&gt; GUY. This is deliberate to allow simultaneous multi-receiver comparisons for a study of <a href=\"https:\/\/reticulum.network\/\">Reticulum<\/a>.)<\/p>\n<p><!-- RECOMMENDED IMAGE --><\/p>\n<figure id=\"attachment_630\" aria-describedby=\"caption-attachment-630\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-630 size-full\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-scaled.webp\" alt=\"\" width=\"2560\" height=\"1711\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-scaled.webp 2560w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-300x201.webp 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-1920x1283.webp 1920w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-768x513.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-1536x1027.webp 1536w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/04\/DSC_5171-2048x1369.webp 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption id=\"caption-attachment-630\" class=\"wp-caption-text\">Multi-receiver test set used for simultaneous GNSS logging (color-coded for tracking and analysis)<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<hr \/>\n<h2>Data Collection<\/h2>\n<p>Typical capture:<\/p>\n<ul>\n<li>Duration: ~30\u201390 minutes<\/li>\n<li>Samples: 2,000\u20136,000+ rows per session<\/li>\n<li>Stationary receiver placement<\/li>\n<\/ul>\n<p>Each record includes:<\/p>\n<ul>\n<li>Satellite count<\/li>\n<li>HDOP<\/li>\n<li>CN0 (signal strength)<\/li>\n<li>Constellation distribution (GPS, GLONASS, etc.)<\/li>\n<li>Computed positional wander<\/li>\n<\/ul>\n<p>Sampling interval: approximately 1 Hz (varies slightly by receiver).<\/p>\n<hr \/>\n<h2>Analysis Pipeline<\/h2>\n<p>Data is ingested into PostgreSQL for analysis.<\/p>\n<p>The workflow:<\/p>\n<pre>CSV \u2192 PostgreSQL \u2192 Aggregation Queries \u2192 Comparative Metrics\r\n<\/pre>\n<p>All metrics are computed over stationary datasets to isolate receiver behavior from movement-induced variance.\u00a0 A sample comparison output is referenced below. Here is the repository for the code (this is an exercise for a tracking project related to Reticulum):<\/p>\n<p>Repository:<\/p>\n<p style=\"padding-left: 40px;\"><a href=\"https:\/\/salemdata.net\/repo\/jlpoole\/microReticulumTbeam\/src\/branch\/feature\/fieldtest-beacon-sd-provision\/exercises\/18_GPS_Field_QA\">https:\/\/salemdata.net\/repo\/jlpoole\/microReticulumTbeam\/src\/branch\/feature\/fieldtest-beacon-sd-provision\/exercises\/18_GPS_Field_QA<br \/>\n<\/a><\/p>\n<p>Example output (excerpt):<\/p>\n<pre>avg_sats_used:\r\n  L76K      \u2192 5.29\r\n  MAX-M10S  \u2192 3.70\r\n\r\navg_hdop:\r\n  L76K      \u2192 0.640\r\n  MAX-M10S  \u2192 0.528\r\n\r\navg_cn0:\r\n  L76K      \u2192 31.37\r\n  MAX-M10S  \u2192 24.62\r\n\r\navg_wander_m:\r\n  L76K      \u2192 2.586\r\n  MAX-M10S  \u2192 1.503\r\n<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h2>Initial Observations<\/h2>\n<ul>\n<li>L76K shows higher satellite utilization and stronger signal levels (CN0)<\/li>\n<li>u-blox MAX-M10S exhibits lower positional wander<\/li>\n<li>HDOP differences are modest but measurable<\/li>\n<\/ul>\n<p>This suggests that different receivers may emphasize different tradeoffs:<\/p>\n<ul>\n<li>Signal richness vs positional stability<\/li>\n<\/ul>\n<p>The divergence between signal strength (CN0) and positional stability (wander) suggests that receiver filtering and solution algorithms play a significant role beyond raw signal acquisition.<\/p>\n<hr \/>\n<h2>Working Hypothesis<\/h2>\n<p>If low-cost receivers consistently exhibit stable geometry (low HDOP), strong signal (high CN0), and low positional dispersion:<\/p>\n<ul>\n<li>Low HDOP<\/li>\n<li>High CN0<\/li>\n<li>Low positional wander<\/li>\n<\/ul>\n<p>Then the site is likely to perform well under survey-grade GNSS with OPUS processing.<\/p>\n<p>This would allow:<\/p>\n<ul>\n<li>Rapid site screening<\/li>\n<li>Reduced deployment risk<\/li>\n<li>Better placement of high-value equipment<\/li>\n<\/ul>\n<hr \/>\n<h2>Open Questions<\/h2>\n<ul>\n<li>What thresholds meaningfully predict OPUS success?<\/li>\n<li>How strong is correlation between low-cost receivers and survey-grade results?<\/li>\n<li>Are certain constellations (e.g. GLONASS-heavy vs GPS-heavy) more predictive?<\/li>\n<li>How much observation time is \u201cenough\u201d?<\/li>\n<\/ul>\n<hr \/>\n<h2>Next Steps<\/h2>\n<ul>\n<li>Multi-receiver simultaneous logging at multiple sites<\/li>\n<li>Correlation with known control points<\/li>\n<li>Integration with higher-grade GNSS hardware (mosaic-class receivers)<\/li>\n<\/ul>\n<hr \/>\n<h2>Call for Input<\/h2>\n<p>If you are working in:<\/p>\n<ul>\n<li>GNSS \/ geodesy<\/li>\n<li>RTK \/ survey workflows<\/li>\n<li>Low-cost GPS experimentation<\/li>\n<\/ul>\n<p>I would be interested in your observations\u2014especially around thresholds and validation techniques.\u00a0 This work is not intended to replace survey-grade workflows, but to reduce uncertainty prior to deployment.<\/p>\n<h2>Sample Output<\/h2>\n<p><a href=\"https:\/\/salemdata.us\/dev\/Satellite_Site_Comparison_2-26-4-6_1955.html\">https:\/\/salemdata.us\/dev\/Satellite_Site_Comparison_2-26-4-6_1955.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Motivation Most GNSS survey failures are not due to equipment\u2014they are due to poor site selection.\u00a0 Survey-grade GNSS equipment paired with NOAA OPUS processing can achieve centimeter-level accuracy, but deployment is not trivial.\u00a0 Site quality\u2014sky visibility, multipath, and obstruction\u2014directly impacts results. The central question: Can low-cost GNSS receivers be used as a reconnaissance tool to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":630,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,80],"tags":[116,117],"class_list":["post-628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronics","category-meshtastic","tag-gps","tag-satellite-reception-qa"],"_links":{"self":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=628"}],"version-history":[{"count":5,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/628\/revisions"}],"predecessor-version":[{"id":636,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/628\/revisions\/636"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/media\/630"}],"wp:attachment":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}