Is Latitude/Longitude Valid
Private Function IsValidLatitudeLongitude(lat As Double, lon As Double) As Boolean
If lat < -90 OrElse lat > 90 OrElse lon <= -180 OrElse lon > 180 Then
Return False
End If
Return True
End Function
Is Latitude/Longitude within OS National Grid
Whilst some parts of Northern Ireland could be represented by the OS National Grid for Great Britain, they are normally represented using the Irish National Grid.
Public Shared Function IsValidGpsForOsGrid(lat As Double, lon As Double) As Boolean
' test valid for all land areas within England, Wales and Scotland (including islands)
' offshore locations close to the extreme limits of the OS National Grid could return false "Invalid" result
If lon < -8 Or lon > 1.9 Then Return False
If lat < 49.87 Or lat > 61 Then Return False
If lat < -7 And lon < 54 Then Return False
Return True
End Function
Converting Degrees to Degrees and Minutes
Private Function Degrees_To_DegreesMinutes(deg As Double) As DegreesMinutes
Dim ret As DegreesMinutes
ret.Degrees = Math.Floor(deg)
ret.Minutes = 60 * (deg - ret.Degrees)
Return ret
End Function
'
Public Structure DegreesMinutes
Dim Degrees As Integer
Dim Minutes As Double
End Structure
Converting Degrees To Degrees, Minutes and Seconds
Private Function Degrees_To_DegreesMinutesSeconds(deg As Double) As DegreesMinutesSeconds
Dim ret As DegreesMinutesSeconds
Dim minutes As Double
ret.Degrees = Math.Floor(deg)
minutes = 60 * (deg - ret.Degrees)
ret.Minutes = Math.Floor(minutes)
ret.Seconds = 60 * (minutes - ret.Minutes)
Return ret
End Function
'
Public Structure DegreesMinutesSeconds
Dim Degrees As Integer
Dim Minutes As Integer
Dim Seconds As Double
End Structure
Converting Degrees and Minutes To Degrees
Private Function DegreesMinutesToDegrees(degrees As Double, minutes As Double) As Double
Return degrees + (minutes / 60)
End Function
Converting Degrees, Minutes and Seconds To Degrees
Private Function DegreesMinutesSecondsToDegrees(degrees As Double, minutes As Double, seconds As Double) As Double
Return degrees + (minutes / 60) + (seconds / 3600)
End Function
DigitalDan.co.uk