Skip to content

Instantly share code, notes, and snippets.

@feromes
Last active March 29, 2020 13:24
Show Gist options
  • Save feromes/627f24edb0ef881a982e9a61a3c28739 to your computer and use it in GitHub Desktop.
Save feromes/627f24edb0ef881a982e9a61a3c28739 to your computer and use it in GitHub Desktop.
Exercícios de UTM para disciiiplina PTR5003
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PTR 5003 - Fundamentos de Informações Espaciais\n",
"\n",
"_Nome:_ *Fernando Gomes*\n",
"\n",
"_NUSP:_ *11863953*\n",
"\n",
"> Trabalho Prático\n",
"## Sistema UTM"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5. Calcule o fator de escala k para o seguinte local: φ = -26° 46’ 57” e λ = -45° 40’ 48”."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Primeiramente temos que obter os ângulos $\\lambda$ e $\\varphi$ em decimal e armazenalos nas variáveis `lambda` e `phi`"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Para o ângulo GMS -45 40 48 agora temos o ângulo decimal -45.68\n",
"Para o ângulo GMS -26 46 57 agora temos o ângulo decimal -26.7825\n",
"O fuso de referência é 23\n",
"O lambda de referência é -45\n"
]
}
],
"source": [
"import numpy as np\n",
"from math import ceil\n",
"\n",
"lambda_gms = '-45 40 48'\n",
"phi_gms = '-26 46 57'\n",
"\n",
"# função de converção de GMS (Grau, Minuto, Segundo) para ângulo decimal\n",
"def gms_para_decimal(angulo):\n",
" divisor = np.asarray((1, 60, 3600))\n",
" gms = np.fromstring(angulo, dtype=float, sep=' ')\n",
" operador = gms[0] / abs(gms[0])\n",
" return np.sum(np.abs(gms / divisor)) * operador\n",
"\n",
"lambda_dec = gms_para_decimal(lambda_gms)\n",
"fuso_referencia = ceil((180 + lambda_dec + 3) / 6)\n",
"lambda_referencia = fuso_referencia * 6 -180 -3\n",
"phi_dec = gms_para_decimal(phi_gms)\n",
"\n",
"print(f\"Para o ângulo GMS {lambda_gms} agora temos o ângulo decimal {lambda_dec}\")\n",
"print(f\"Para o ângulo GMS {phi_gms} agora temos o ângulo decimal {phi_dec}\")\n",
"print(f\"O fuso de referência é {fuso_referencia}\")\n",
"print(f\"O lambda de referência é {lambda_referencia}\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Agora devevos aplicar a fórmula para determinar o `k`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$k=\\frac{k_0}{\\sqrt{1-\\cos{\\varphi{}_m}\\sin{(\\lambda_m - \\lambda_0)}}}$$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"O fator de escala K portanto é 0.9943464242978314\n"
]
}
],
"source": [
"from math import sqrt, cos, sin, radians\n",
"\n",
"k0 = 0.9996\n",
"\n",
"k = k0 / sqrt(1 - cos(radians(phi_dec)) * sin(radians(lambda_dec - lambda_referencia)))\n",
"\n",
"print(f\"O fator de escala K portanto é {k}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8. Considerando o fator de escala calculado no item 5, pede-se calcular a distância sobre o plano UTM conhecendo-se a distância sobre o elipsíde (3579,864 m)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A distância no plano UTM é 3559.6249678725317\n"
]
}
],
"source": [
"distancia_plano_UTM = 3579.864 * k\n",
"print(f\"A distância no plano UTM é {distancia_plano_UTM}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9. Considerado que agora que você está em um ponto cujas coordenadas são as seguintes: φ = +26° 46’57” e λ = +45° 40’ 48”. Pede-se calcular o fator de escala k e comparar os resultados com o item 5. Explique."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Para o ângulo GMS -45 40 48 agora temos o ângulo decimal -45.68\n",
"Para o ângulo GMS -26 46 57 agora temos o ângulo decimal -26.7825\n",
"O fuso de referência é 23\n",
"O lambda de referência é -45\n",
"O fator de escala K portanto é 0.9943464242978314\n"
]
}
],
"source": [
"lambda_gms_2 = '+45 40 48'\n",
"phi_gms_2 = '+26 46 57'\n",
"\n",
"lambda_dec_2 = gms_para_decimal(lambda_gms_2)\n",
"fuso_referencia_2 = ceil((180 + lambda_dec_2 + 3) / 6)\n",
"lambda_referencia_2 = fuso_referencia_2 * 6 -180 -3\n",
"phi_dec_2 = gms_para_decimal(phi_gms_2)\n",
"\n",
"k = k0 / sqrt(1 - cos(radians(phi_dec)) * sin(radians(lambda_dec - lambda_referencia)))\n",
"\n",
"print(f\"Para o ângulo GMS {lambda_gms} agora temos o ângulo decimal {lambda_dec}\")\n",
"print(f\"Para o ângulo GMS {phi_gms} agora temos o ângulo decimal {phi_dec}\")\n",
"print(f\"O fuso de referência é {fuso_referencia}\")\n",
"print(f\"O lambda de referência é {lambda_referencia}\")\n",
"print(f\"O fator de escala K portanto é {k}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Os resultados de K são os mesmos que do exercício 5. pois ambos pontos estão na mesma posição em relação ao referencial k0."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment