You are on page 1of 14

1)Distancia entre dos puntos utilizando coordenadas

UTM

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

'declaracion de variables
Dim e1, e2 As Double
Dim n1, n2 As Double
Dim d, x, y As Double

'e1 y e2 son coordenadas este, n1 y n2 son coordenadas norte


e1 = TextBox1.Text
n1 = TextBox2.Text
e2 = TextBox3.Text
n2 = TextBox4.Text

x = (e2 - e1) ^ 2
y = (n2 - n1) ^ 2

' calculo de la distancia


d = Math.Sqrt(x + y)

TextBox5.Text = d

End Sub
End Class
2)Distancia entre dos puntos utilizando coordenadas
geográficas

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


'declaracion de variables
Dim g1, g2, g3, g4 As Double
Dim m1, m2, m3, m4 As Double
Dim s1, s2, s3, s4 As Double
Dim lat1, lat2, lon1, lon2 As String
Dim lat1rad, lat2rad, lon1rad, lon2rad As Double
Dim p, r, d As Double

lat1 = TextBox1.Text
lon1 = TextBox2.Text
lat2 = TextBox3.Text
lon2 = TextBox4.Text

g1 = TextBox5.Text
m1 = TextBox6.Text
s1 = TextBox7.Text

g2 = TextBox8.Text
m2 = TextBox9.Text
s2 = TextBox10.Text

g3 = TextBox11.Text
m3 = TextBox12.Text
s3 = TextBox13.Text

g4 = TextBox14.Text
m4 = TextBox15.Text
s4 = TextBox16.Text

'trasformando a radianes

lat1rad = (g1 + m1 / 60 + s1 / 3600) * (Math.PI) / 180


lon1rad = (g2 + m2 / 60 + s2 / 3600) * (Math.PI) / 180

lat2rad = (g3 + m3 / 60 + s3 / 3600) * (Math.PI) / 180


lon2rad = (g4 + m4 / 60 + s4 / 3600) * (Math.PI) / 180

'caso 1
If (lat1 = "N" And lat2 = "N") Then
If (lon1 = "W" And lon2 = "W") Or (lon1 = "E" And lon2 = "E") Then
r = (((Math.Cos(Math.PI / 2 - lat1rad)) * (Math.Cos(Math.PI / 2 - lat2rad)) +
(Math.Sin(Math.PI / 2 - lat1rad)) * (Math.Sin(Math.PI / 2 - lat2rad)) * (Math.Cos(lon2rad - lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
TextBox17.Text = d
End If
End If

'caso 2
If (lat1 = "S" And lat2 = "S") Then
If (lon1 = "W" And lon2 = "W") Or (lon1 = "E" And lon2 = "E") Then
r = (((Math.Cos(Math.PI / 2 + lat1rad)) * (Math.Cos(Math.PI / 2 + lat2rad)) +
(Math.Sin(Math.PI / 2 + lat1rad)) * (Math.Sin(Math.PI / 2 + lat2rad)) * (Math.Cos(lon2rad - lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 3
If (lat1 = "N" And lat2 = "S") Then
If (lon1 = "W" And lon2 = "W") Or (lon1 = "E" And lon2 = "E") Then
r = (((Math.Cos(Math.PI / 2 - lat1rad)) * (Math.Cos(Math.PI / 2 + lat2rad)) +
(Math.Sin(Math.PI / 2 - lat1rad)) * (Math.Sin(Math.PI / 2 + lat2rad)) * (Math.Cos(lon2rad - lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 4
If (lat1 = "S" And lat2 = "N") Then
If (lon1 = "W" And lon2 = "W") Or (lon1 = "E" And lon2 = "E") Then
r = (((Math.Cos(Math.PI / 2 + lat1rad)) * (Math.Cos(Math.PI / 2 - lat2rad)) +
(Math.Sin(Math.PI / 2 + lat1rad)) * (Math.Sin(Math.PI / 2 - lat2rad)) * (Math.Cos(lon2rad - lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 5
If (lat1 = "N" And lat2 = "N") Then
If (lon1 = "W" And lon2 = "E") Or (lon1 = "E" And lon2 = "W") Then
r = (((Math.Cos(Math.PI / 2 - lat1rad)) * (Math.Cos(Math.PI / 2 - lat2rad)) +
(Math.Sin(Math.PI / 2 - lat1rad)) * (Math.Sin(Math.PI / 2 - lat2rad)) * (Math.Cos(lon2rad + lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 6
If (lat1 = "S" And lat2 = "S") Then
If (lon1 = "W" And lon2 = "E") Or (lon1 = "E" And lon2 = "W") Then
r = (((Math.Cos(Math.PI / 2 + lat1rad)) * (Math.Cos(Math.PI / 2 + lat2rad)) +
(Math.Sin(Math.PI / 2 + lat1rad)) * (Math.Sin(Math.PI / 2 + lat2rad)) * (Math.Cos(lon2rad + lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 7
If (lat1 = "N" And lat2 = "S") Then
If (lon1 = "W" And lon2 = "E") Or (lon1 = "E" And lon2 = "W") Then
r = (((Math.Cos(Math.PI / 2 - lat1rad)) * (Math.Cos(Math.PI / 2 + lat2rad)) +
(Math.Sin(Math.PI / 2 - lat1rad)) * (Math.Sin(Math.PI / 2 + lat2rad)) * (Math.Cos(lon2rad + lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If

'caso 8
If (lat1 = "S" And lat2 = "N") Then
If (lon1 = "W" And lon2 = "E") Or (lon1 = "E" And lon2 = "W") Then
r = (((Math.Cos(Math.PI / 2 + lat1rad)) * (Math.Cos(Math.PI / 2 - lat2rad)) +
(Math.Sin(Math.PI / 2 + lat1rad)) * (Math.Sin(Math.PI / 2 - lat2rad)) * (Math.Cos(lon2rad + lon1rad))))
p = Math.Acos(r)
d = 6378.137 * p
End If
End If
TextBox17.Text=d
End Sub
End Class

3. trasformar coordenadas geográficas a UTM


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

'declaracion de variables
Dim a, b As Double
Dim g1, g2, m1, m2, s1, s2 As Double
Dim latitud, longitud As String
Dim h, ƛ, ƛrad, Δƛ, c, α, ex, se, cse As Double
Dim gdlat, gdlon, latrad, lonrad As Double
Dim Ao, A1, A2, J2, J4, J6, ξ, n, v, Co As Double
Dim z, β, Ȣ, Bo As Double
Dim x, y As Double

a = TextBox1.Text 'semieje mayor


b = TextBox2.Text 'semieje menor

latitud = TextBox3.Text
longitud = TextBox4.Text

g1 = TextBox5.Text
m1 = TextBox6.Text
s1 = TextBox7.Text
g2 = TextBox8.Text
m2 = TextBox9.Text
s2 = TextBox10.Text
'calculos previos

ex = ((a ^ 2 - b ^ 2) ^ (1 / 2)) / a 'exentricidad


se = ((a ^ 2 - b ^ 2) ^ (1 / 2)) / b 'segunda exentricidad
cse = (se) ^ 2 'cuadrado de la segunda exentricidad

c = (a ^ 2) / b 'radio polar de curvatura

α = (a - b) / a 'aplanamiento

'sobre la longitud y latitud

If (longitud = "W" Or longitud = "w") And (latitud = "n" Or latitud = "N") Then

'convirtiendo a grados decimales


gdlat = g1 + m1 / 60 + s1 / 3600
gdlon = (-1) * (g2 + m2 / 60 + s2 / 3600)

'convirtiendo a radianes

latrad = gdlat * (Math.PI) / 180


lonrad = gdlon * (Math.PI) / 180
'sobre el Huso

h = Int((gdlon) / 6 + 31)
ƛ = h * 6 - 183
ƛrad = ƛ * (Math.PI) / 180
Δƛ = lonrad - ƛrad

'Ecuaciones de Cotichia- Surace

'Calculo de Parametros

Ao = Math.Cos(latrad) * Math.Sin(Δƛ)
ξ = (Math.Log((1 + Ao) / (1 - Ao))) * 0.5
n = Math.Atan((Math.Tan(latrad)) / (Math.Cos(Δƛ))) - latrad
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(latrad)) ^ 2)))
Co = (0.00676817 / 2) * (ξ ^ 2) * (Math.Cos(latrad)) ^ 2
A1 = Math.Sin(2 * latrad)
A2 = A1 * (Math.Cos(latrad)) ^ 2
J2 = latrad + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(latrad)) ^ 2) / 3
z = (3 * cse) / 4
β = (5 * (z ^ 2)) / 3
Ȣ = (35 * (z ^ 3)) / 27
Bo = 0.9996 * c * (latrad - z * J2 + β * J4 - Ȣ * J6)

'Calculo final de Coordenadas

x = ξ * v * (1 + Co / 3) + 500000
y = n * v * (1 + Co) + Bo
End If

If (longitud = "E" Or longitud = "e") And (latitud = "n" Or latitud = "N") Then

'convirtiendo a grados decimales


gdlat = g1 + m1 / 60 + s1 / 3600
gdlon = (g2 + m2 / 60 + s2 / 3600)

'convirtiendo a radianes

latrad = gdlat * (Math.PI) / 180


lonrad = gdlon * (Math.PI) / 180
'sobre el Huso

h = Int((gdlon) / 6 + 31)
ƛ = h * 6 - 183
ƛrad = ƛ * (Math.PI) / 180
Δƛ = lonrad - ƛrad

'Ecuaciones de Cotichia- Surace

'Calculo de Parametros

Ao = Math.Cos(latrad) * Math.Sin(Δƛ)
ξ = (Math.Log((1 + Ao) / (1 - Ao))) * 0.5
n = Math.Atan((Math.Tan(latrad)) / (Math.Cos(Δƛ))) - latrad
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(latrad)) ^ 2)))
Co = (0.00676817 / 2) * (ξ ^ 2) * (Math.Cos(latrad)) ^ 2
A1 = Math.Sin(2 * latrad)
A2 = A1 * (Math.Cos(latrad)) ^ 2
J2 = latrad + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(latrad)) ^ 2) / 3
z = (3 * cse) / 4
β = (5 * (z ^ 2)) / 3
Ȣ = (35 * (z ^ 3)) / 27
Bo = 0.9996 * c * (latrad - z * J2 + β * J4 - Ȣ * J6)

'Calculo final de Coordenadas

x = ξ * v * (1 + Co / 3)
y = n * v * (1 + Co) + Bo
End If

If (longitud = "W" Or longitud = "w") And (latitud = "s" Or latitud = "S") Then

'convirtiendo a grados decimales


gdlat = g1 + m1 / 60 + s1 / 3600
gdlon = (-1) * (g2 + m2 / 60 + s2 / 3600)

'convirtiendo a radianes

latrad = gdlat * (Math.PI) / 180


lonrad = gdlon * (Math.PI) / 180
'sobre el Huso

h = Int((gdlon) / 6 + 31)
ƛ = h * 6 - 183
ƛrad = ƛ * (Math.PI) / 180
Δƛ = lonrad - ƛrad

'Ecuaciones de Cotichia- Surace

'Calculo de Parametros

Ao = Math.Cos(latrad) * Math.Sin(Δƛ)
ξ = (Math.Log((1 + Ao) / (1 - Ao))) * 0.5
n = Math.Atan((Math.Tan(latrad)) / (Math.Cos(Δƛ))) - latrad
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(latrad)) ^ 2)))
Co = (0.00676817 / 2) * (ξ ^ 2) * (Math.Cos(latrad)) ^ 2
A1 = Math.Sin(2 * latrad)
A2 = A1 * (Math.Cos(latrad)) ^ 2
J2 = latrad + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(latrad)) ^ 2) / 3
z = (3 * cse) / 4
β = (5 * (z ^ 2)) / 3
Ȣ = (35 * (z ^ 3)) / 27
Bo = 0.9996 * c * (latrad - z * J2 + β * J4 - Ȣ * J6)

'Calculo final de Coordenadas

x = ξ * v * (1 + Co / 3) + 500000
y = n * v * (1 + Co) + Bo + 10000000
End If

If (longitud = "e" Or longitud = "E") And (latitud = "s" Or latitud = "S") Then

'convirtiendo a grados decimales


gdlat = g1 + m1 / 60 + s1 / 3600
gdlon = (g2 + m2 / 60 + s2 / 3600)

'convirtiendo a radianes

latrad = gdlat * (Math.PI) / 180


lonrad = gdlon * (Math.PI) / 180
'sobre el Huso

h = Int((gdlon) / 6 + 31)
ƛ = h * 6 - 183
ƛrad = ƛ * (Math.PI) / 180
Δƛ = lonrad - ƛrad

'Ecuaciones de Cotichia- Surace

'Calculo de Parametros

Ao = Math.Cos(latrad) * Math.Sin(Δƛ)
ξ = (Math.Log((1 + Ao) / (1 - Ao))) * 0.5
n = Math.Atan((Math.Tan(latrad)) / (Math.Cos(Δƛ))) - latrad
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(latrad)) ^ 2)))
Co = (0.00676817 / 2) * (ξ ^ 2) * (Math.Cos(latrad)) ^ 2
A1 = Math.Sin(2 * latrad)
A2 = A1 * (Math.Cos(latrad)) ^ 2
J2 = latrad + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(latrad)) ^ 2) / 3
z = (3 * cse) / 4
β = (5 * (z ^ 2)) / 3
Ȣ = (35 * (z ^ 3)) / 27
Bo = 0.9996 * c * (latrad - z * J2 + β * J4 - Ȣ * J6)

'Calculo final de Coordenadas


x = ξ * v * (1 + Co / 3)
y = n * v * (1 + Co) + Bo + 10000000
End If

TextBox11.Text = x
TextBox12.Text = y
End Sub
End Class

4. transformar coordenadas utm a geográficas


Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

'declaracion de variables

Dim a, b As Double
Dim x, y, x1, y1 As Double
Dim huso As Integer
Dim latert As String
Dim ϕ, ǿ, Ƭ, ƛo, ƛ, Δƛ, c, α, ex, se, cse As Double
Dim a3, b1, Ao, A1, A2, J2, J4, J6, ξ, n, v, Co As Double
Dim z, β, Ȣ, Bo As Double
Dim latitud, longitud As String
Dim g1, g2, m1, m2, s1, s2 As Double

a = TextBox1.Text 'semieje mayor


b = TextBox2.Text 'semieje menor

x = TextBox3.Text
y = TextBox4.Text
huso = TextBox5.Text
latert = TextBox6.Text 'valor N o S de lalatitud para eliminar retranqueo
'calculos previos

ex = ((a ^ 2 - b ^ 2) ^ (1 / 2)) / a 'exentricidad


se = ((a ^ 2 - b ^ 2) ^ (1 / 2)) / b 'segunda exentricidad
cse = (se) ^ 2 'cuadrado de la segunda exentricidad

c = (a ^ 2) / b 'radio polar de curvatura

If latert = "N" Or latert = "n" Then


'tratamiento previo de X e Y, ycalculo del meridiano central

x1 = x - 500000
y1 = y
ƛo = huso * 6 - 183

'Ecuaciones de Cotichia- Surace para el cambio de coordenadas UTM a Geograficas


ǿ = y1 / (6366197.724 * 0.9996)
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(ǿ)) ^ 2)))
a3 = (x1 / v)
A1 = Math.Sin(2 * ǿ)
A2 = A1 * (Math.Cos(ǿ)) ^ 2
J2 = ǿ + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(ǿ)) ^ 2) / 3
α = (3 * cse) / 4
β = (5 * (α ^ 2)) / 3
Ȣ = (35 * (α ^ 3)) / 27
Bo = 0.9996 * c * (ǿ - α * J2 + β * J4 - Ȣ * J6)
b1 = (y1 - Bo) / v
Co = (0.00676817 / 2) * (a3 ^ 2) * (Math.Cos(ǿ)) ^ 2
ξ = a3 * (1 - Co / 3)
n = b1 * (1 - Co) + ǿ
Δƛ = Math.Tan((Math.Sinh(ξ)) / Math.Cos(n))
Ƭ = Math.Atan((Math.Cos(Δƛ)) * (Math.Tan(n)))

'calculo final de coordenadas geograficas

ƛ = (Δƛ * 180) / (Math.PI) + ƛo 'valor de la longitud en grados decimales


ϕ = (ǿ + (1 + cse * (Math.Cos(ǿ)) ^ 2 - 1.5 * cse * (Math.Sin(ǿ)) *
(Math.Cos(ǿ)) * (Ƭ - ǿ)) * (Ƭ - ǿ)) * 180 / (Math.PI)

End If

If latert = "S" Or latert = "s" Then


'tratamiento previo de X e Y, ycalculo del meridiano central

x1 = x - 500000
y1 = y - 10000000
ƛo = huso * 6 - 183

'Ecuaciones de Cotichia- Surace para el cambio de coordenadas UTM a Geograficas


ǿ = y1 / (6366197.724 * 0.9996)
v = ((c * 0.9996) / (Math.Sqrt(1 + 0.00676817 * (Math.Cos(ǿ)) ^ 2)))
a3 = (x1 / v)
A1 = Math.Sin(2 * ǿ)
A2 = A1 * (Math.Cos(ǿ)) ^ 2
J2 = ǿ + A1 / 2
J4 = (3 * J2 + A2) / 4
J6 = (5 * J4 + A2 * (Math.Cos(ǿ)) ^ 2) / 3
α = (3 * cse) / 4
β = (5 * (α ^ 2)) / 3
Ȣ = (35 * (α ^ 3)) / 27
Bo = 0.9996 * c * (ǿ - α * J2 + β * J4 - Ȣ * J6)
b1 = (y1 - Bo) / v
Co = (0.00676817 / 2) * (a3 ^ 2) * (Math.Cos(ǿ)) ^ 2
ξ = a3 * (1 - Co / 3)
n = b1 * (1 - Co) + ǿ
Δƛ = Math.Tan((Math.Sinh(ξ)) / Math.Cos(n))
Ƭ = Math.Atan((Math.Cos(Δƛ)) * (Math.Tan(n)))

'calculo final de coordenadas geograficas

ƛ = (Δƛ * 180) / (Math.PI) + ƛo 'valor de la longitud en grados decimales


ϕ = (ǿ + (1 + cse * (Math.Cos(ǿ)) ^ 2 - 1.5 * cse * (Math.Sin(ǿ)) *
(Math.Cos(ǿ)) * (Ƭ - ǿ)) * (Ƭ - ǿ)) * 180 / (Math.PI)

End If

If ƛ < 0 Then
g2 = Int(ƛ + 1)
m2 = Int(((ƛ - g2) * 60) + 1)
s2 = ((ƛ - g2) * 60 - m2) * 60 + 1
longitud = "W"
Else
g2 = Int(ƛ)
m2 = Int((ƛ - g2) * 60)
s2 = ((ƛ - g2) * 60 - m2) * 60
longitud = "E"
End If

If ϕ < 0 Then
g1 = Int(ϕ + 1)
m1 = Int(((ϕ - g1) * 60) + 1)
s1 = (((ϕ - g1) * 60) - m1) * 60 + 1
latitud = "S"
Else
g1 = Int(ϕ)
m1 = Int((ϕ - g1) * 60)
s1 = (((ϕ - g1) * 60) - m1) * 60
latitud = "N"
End If

TextBox7.Text = latitud
TextBox16.Text = longitud
TextBox8.Text = ϕ
TextBox9.Text = g1
TextBox10.Text = m1
TextBox11.Text = s1
TextBox12.Text = ƛ
TextBox13.Text = g2
TextBox14.Text = m2
TextBox15.Text = s2
End Sub
End Class

You might also like