Skip to main content

Weather & Environmental Data System Documentation

Overview

The weather and environmental data system tracks comprehensive weather history, lunar data, tides, and fishing superstitions to enable pattern analysis and support all types of anglers' beliefs about what makes fish bite.

Entities

LocationWeatherHistory

Historical weather data for specific locations. Tracks:

  • Temperature (actual and feels-like)
  • Barometric pressure (with trends - critical for fishing!)
  • Wind (speed, direction, gusts)
  • Precipitation (amount, type, probability)
  • Cloud cover
  • Humidity, UV index, visibility
  • Air quality

LunarData

Moon phase and solunar data:

  • Moon phase (New, Full, Quarters, etc.)
  • Moonrise/moonset times
  • Solunar periods (major/minor feeding times)
  • Moon position and illumination

TideData

Tide information for coastal/marine locations:

  • High/low tide times and heights
  • Tide range (Spring, Neap, Normal)
  • Current speed and direction
  • Incoming/outgoing tide tracking

FishingConditionsRating

Calculated overall fishing conditions rating combining:

  • Weather rating
  • Moon phase rating
  • Tide rating (if applicable)
  • Barometric pressure rating
  • Wind rating
  • Temperature rating

FishingSuperstition

Fishing superstitions and beliefs:

  • User beliefs and ratings
  • Pattern verification
  • Usage tracking

Key Features

Barometric Pressure Tracking

Barometric pressure is one of the most important factors for fishing:

  • Rising Pressure: Often triggers feeding (good fishing)
  • Falling Pressure: Can trigger feeding before storms
  • Stable Pressure: Consistent conditions
  • Rapid Changes: Often best fishing

Moon Phase Tracking

Many anglers believe moon phases affect fish behavior:

  • New Moon: Often excellent fishing
  • Full Moon: Often excellent fishing
  • Quarter Moons: Variable fishing
  • Solunar Periods: Major/minor feeding times based on moon position

Tide Tracking

Critical for saltwater anglers:

  • Incoming Tide: Often best fishing
  • Outgoing Tide: Often good fishing
  • Slack Tide: Usually poor fishing
  • Spring Tides: Larger range, often better fishing
  • Neap Tides: Smaller range, variable fishing

Pattern Analysis

The system enables:

  • Correlation between weather conditions and catch success
  • Moon phase pattern analysis
  • Tide pattern analysis
  • Barometric pressure trend analysis
  • Multi-factor pattern analysis

Usage Examples

Recording Weather History

// Record weather for a location
var weather = new LocationWeatherHistory
{
Latitude = 43.0631,
Longitude = -86.2284,
LocationName = "Lake Michigan - Grand Haven",
LocationHash = "43.1,-86.2", // Rounded for aggregation
RecordedAt = DateTime.UtcNow,
Date = DateOnly.FromDateTime(DateTime.UtcNow),
Time = TimeOnly.FromDateTime(DateTime.UtcNow),
Source = WeatherSource.OpenWeather,
SourceApi = "OpenWeatherMap",

// Temperature
TemperatureC = 22.5f,
TemperatureF = 72.5f,
FeelsLikeC = 24.0f,

// Barometric Pressure (CRITICAL!)
PressureMb = 1013.25f,
PressureInHg = 29.92f,
PressureTrend = PressureTrend.Rising,
PressureChange24hMb = 5.2f, // Rising pressure

// Wind
WindSpeedKph = 15.0f,
WindSpeedMph = 9.3f,
WindDirectionDegrees = 180, // South wind
WindDirection = "S",

// Precipitation
PrecipitationProbability = 10,
CloudCoverPercent = 30,
CloudCoverType = CloudCoverType.PartlyCloudy,

// Other
HumidityPercent = 65,
UvIndex = 6,
WeatherCondition = "Partly Cloudy"
};

Recording Lunar Data

// Record lunar data for a date
var lunar = new LunarData
{
Date = DateOnly.FromDateTime(DateTime.UtcNow),
Latitude = 43.0631,
Longitude = -86.2284,

MoonPhase = MoonPhase.WaxingGibbous,
MoonPhasePercent = 75.0f,
DaysSinceNewMoon = 10,
DaysUntilFullMoon = 4,

Moonrise = DateTime.Parse("2024-01-15 18:30:00"),
Moonset = DateTime.Parse("2024-01-16 07:15:00"),

// Solunar Periods (major/minor feeding times)
MajorFeedingStart1 = DateTime.Parse("2024-01-15 06:00:00"),
MajorFeedingEnd1 = DateTime.Parse("2024-01-15 08:00:00"),
MajorFeedingStart2 = DateTime.Parse("2024-01-15 18:30:00"),
MajorFeedingEnd2 = DateTime.Parse("2024-01-15 20:30:00"),

MinorFeedingStart1 = DateTime.Parse("2024-01-15 00:15:00"),
MinorFeedingEnd1 = DateTime.Parse("2024-01-15 01:15:00"),
MinorFeedingStart2 = DateTime.Parse("2024-01-15 12:45:00"),
MinorFeedingEnd2 = DateTime.Parse("2024-01-15 13:45:00"),

SolunarActivityRating = 85 // High activity day
};

Recording Tide Data

// Record tide data for coastal location
var tide = new TideData
{
Latitude = 24.5551,
Longitude = -81.7826,
LocationName = "Key West",
TideStationId = "8724580", // NOAA station ID

RecordedAt = DateTime.UtcNow,
Date = DateOnly.FromDateTime(DateTime.UtcNow),

TideType = TideType.Rising,
TideHeightFt = 2.5f,
TideHeightAboveMean = 1.2f,

HighTideTime1 = DateTime.Parse("2024-01-15 08:30:00"),
HighTideHeight1 = 3.2f,
LowTideTime1 = DateTime.Parse("2024-01-15 14:45:00"),
LowTideHeight1 = 0.8f,

TideRangeFt = 2.4f,
TideRangeType = TideRangeType.Normal,

CurrentSpeedKnots = 1.5f,
CurrentDirection = "Incoming",

Source = WeatherSource.OpenWeather,
SourceApi = "NOAA"
};

Calculating Fishing Conditions Rating

// Calculate overall fishing conditions
var rating = new FishingConditionsRating
{
Latitude = 43.0631,
Longitude = -86.2284,
CalculatedAt = DateTime.UtcNow,
Date = DateOnly.FromDateTime(DateTime.UtcNow),

WeatherHistoryId = weather.Id,
LunarDataId = lunar.Id,
TideDataId = tide.Id, // If applicable

// Component ratings
WeatherRating = 85, // Good weather
MoonPhaseRating = 90, // Excellent moon phase
TideRating = 80, // Good tide (if applicable)
BarometricRating = 95, // Excellent pressure trend
WindRating = 75, // Moderate wind

// Overall rating
OverallRating = 87, // Excellent conditions

// Factors
IsPressureRising = true,
IsSolunarPeriod = true,
IsIncomingTide = true,

Notes = "Excellent conditions - rising pressure, solunar period, incoming tide"
};

Pattern Analysis Queries

// Find best fishing conditions for a location
var bestConditions = context.FishingConditionsRatings
.Where(fcr => fcr.Latitude == lat && fcr.Longitude == lon)
.Where(fcr => fcr.OverallRating >= 80)
.OrderByDescending(fcr => fcr.OverallRating)
.ToList();

// Analyze pressure trends vs catch success
var pressureAnalysis = context.FishingLogEntries
.Where(fle => fle.Latitude == lat && fle.Longitude == lon)
.Join(context.LocationWeatherHistories,
fle => fle.WeatherHistoryId,
lwh => lwh.Id,
(fle, lwh) => new
{
Catch = fle,
PressureTrend = lwh.PressureTrend,
PressureChange = lwh.PressureChange24hMb
})
.GroupBy(x => x.PressureTrend)
.Select(g => new
{
Trend = g.Key,
CatchCount = g.Count(),
AvgCatchSize = g.Average(x => x.Catch.CatchDetails.LengthCm)
})
.ToList();

// Find moon phase patterns
var moonPhaseAnalysis = context.FishingLogEntries
.Join(context.LunarData,
fle => fle.LunarDataId,
ld => ld.Id,
(fle, ld) => new
{
Catch = fle,
MoonPhase = ld.MoonPhase,
SolunarRating = ld.SolunarActivityRating
})
.GroupBy(x => x.MoonPhase)
.Select(g => new
{
MoonPhase = g.Key,
CatchCount = g.Count(),
AvgRating = g.Average(x => x.SolunarRating)
})
.OrderByDescending(x => x.CatchCount)
.ToList();

Common Fishing Superstitions

  • "Fish bite better on rising barometric pressure"
  • "Falling pressure triggers feeding before storms"
  • "South wind brings fish"
  • "East wind, fish bite least"
  • "West wind, fish bite best"
  • "Fish bite better in overcast conditions"
  • "Light rain brings fish to the surface"
  • "New moon and full moon are best fishing days"
  • "Fish bite best during solunar periods"
  • "Quarter moons are poor fishing"
  • "Fish bite better when moon is overhead or underfoot"
  • "Incoming tide is best for fishing"
  • "Slack tide is worst for fishing"
  • "Spring tides bring more fish"
  • "Fish bite better 2 hours before/after high tide"

General

  • "Fish bite better early morning and late evening"
  • "Fish bite better before storms"
  • "Fish bite better in stable weather"
  • "Fish bite better when water temperature is rising"

API Integration

Weather APIs

  • OpenWeatherMap: Comprehensive weather data
  • NOAA: Official US weather data
  • Weather.com: Commercial weather API
  • Windy: Wind and weather visualization

Lunar APIs

  • SunCalc: Moon phase and times
  • NOAA Solar Calculator: Moon data
  • Custom Calculation: Calculate from date/location

Tide APIs

  • NOAA Tides & Currents: Official US tide data
  • Tides4Fishing: Global tide data
  • Custom Calculation: Calculate from location

Future Enhancements

  1. Weather Forecasts: Store forecasts and compare to actual
  2. Historical Analysis: Long-term pattern analysis
  3. Machine Learning: Predict best fishing times
  4. Alerts: Notify users of optimal conditions
  5. Comparison: Compare conditions across locations
  6. Visualization: Charts and graphs of patterns
  7. Superstition Verification: Verify superstitions with data
  8. Community Patterns: Aggregate patterns across users