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
Weather-Related
- "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"
Moon-Related
- "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"
Tide-Related
- "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
- Weather Forecasts: Store forecasts and compare to actual
- Historical Analysis: Long-term pattern analysis
- Machine Learning: Predict best fishing times
- Alerts: Notify users of optimal conditions
- Comparison: Compare conditions across locations
- Visualization: Charts and graphs of patterns
- Superstition Verification: Verify superstitions with data
- Community Patterns: Aggregate patterns across users