{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Tarea 1: Proyecciones cartográficas [50 puntos]\n", "\n", "Leer este blog antes de empezar con esta tarea: https://maggieavery.github.io/PyEarth_EPS88_jupyterbook/folder_01/W1_maps.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hagamos nuestro primer mapa! [5 points]\n", "\n", "Vamos a utilizar ```cartopy``` junto con ```matplotlib``` para hacer mapas. ```cartopy``` puede transformar puntos, líneas e imágenes en diferentes proyecciones cartográficas. ```matplotlib``` proporciona herramientas para visualizar estas proyecciones. Los importaremos utilizando las convención estándar. **Debes presionar reproducir (o de manera más eficiente shift + enter) en la celda que importa estas librerias para que el resto del código funcione.**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import cartopy.crs as ccrs\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Es necesario acostumbrarse a la sintaxis del uso de estas funciones. Aquí crearemos una figura, para ello crearemos un objeto 'axis' con una proyección definida y luego trazaremos las líneas de costa y una imagen de archivo que muestra la elevación." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(10,5))\n", "ax = plt.axes(projection=ccrs.Mollweide())\n", "ax.coastlines()\n", "ax.stock_img()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Grafiquemos la ubicación de Beauchef en un mapa. Primero queremos asignar la latitud (-33.4578) y la longitud (-70.6642) de Beauchef a las variables: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fcfm_latitude = \n", "fcfm_longitude = " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ahora podemos usar la función ```plt.scatter``` para trazar la ubicación de Beauchef. Usar la función ```plt.scatter``` ```fcfm_longitude``` como el valor x,``` fcfm_latitude``` como el valor y mientras también le decimos que lo transforme en coordenadas de mapa (``` transform = ccrs.PlateCarree () ```) y hacer que el punto sea rojo (``` color = 'red'```). Podemos guardar la figura usando ```plt.savefig ()``` poniendo el nombre del archivo con la extensión dentro del ```()```. En este caso, llamémoslo ```'Mollweide_projection_w_Beauchef.png```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(10,5))\n", "ax = plt.axes(projection=ccrs.Mollweide())\n", "ax.stock_img()\n", "plt.scatter([fcfm_longitude], [fcfm_latitude], transform=ccrs.PlateCarree(), color='red')\n", "plt.savefig('Mollweide_projection_w_Beauchef.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vuelve a revisar tu Jupyter notebook de clase del cumplemoto e ingresa la latitud de longitud en la celda de abajo asignándolos a```birthquake_latitude``` and ```birthquake_longitude```." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "birthquake_latitude = \n", "birthquake_longitude = " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ahora puede usar la celda de abajo para hacer un mapa que traza tanto Beauchef como la ubicación de tu cumplemoto, así como la línea más corta entre ellos." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(10,5))\n", "ax = plt.axes(projection=ccrs.Robinson())\n", "ax.stock_img()\n", "plt.scatter([fcfm_longitude, birthquake_longitude], [fcfm_latitude, birthquake_latitude], transform=ccrs.PlateCarree(), color='red')\n", "plt.plot([fcfm_longitude, birthquake_longitude], [fcfm_latitude, birthquake_latitude], transform=ccrs.PlateCarree(), color='red')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ahora a probar diferentes proyecciones! [5 points]\n", "Revisar este link puede ser de utilidad: https://scitools.org.uk/cartopy/docs/latest/crs/projections.html . Primero probaremos con la proyección de Mercator.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(10,5))\n", "ax = plt.axes(projection=ccrs.Mercator())\n", "\n", "ax.stock_img()\n", "ax.gridlines()\n", "\n", "# agregue círculos de áreas iguales para ver cómo están distorsionados por la proyección\n", "ax.tissot(facecolor='orange', alpha=0.4) #alpha setea la transparecia\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cambie la proyección (reemplazando el '__') y experimente con diferentes proyecciones (este es un ejercicio personal, no es necesario que muestres todas las proyecciones). Elije una y grafíquela en la siguiente celda. ¿Cuál es el principal problema de proyectar una geometría esférica en un plano?." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Su respuesta aquí*" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(10,5))\n", "ax = plt.axes(projection=ccrs._())\n", "\n", "ax.stock_img()\n", "ax.gridlines()\n", "\n", "# agregue círculos de áreas iguales para ver cómo están distorsionados por la proyección\n", "ax.tissot(facecolor='orange', alpha=0.4) #alpha setea la transparecia\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Haz el mapa de los 3 terremotos de mayor magnitud el día que naciste [50 puntos]\n", "\n", "Use las celdas a continuación para hacer un solo mapa que muestre la ubicación de tu nacimiento y de los 3 terremotos de mayor magnitud el día en que naciste (use cualquier proyección que desee). Calcule e imprima la distancia de cada terremoto desde el punto donde naciste (puede usar la librería numpy/math y este link https://www.movable-type.co.uk/scripts/latlong.html). Cuando haya creado el mapa, guárdelo en un archivo png y súbalo junto a su Jupyter notebook a U-Cursos. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.1" }, "livereveal": { "auto_select": "none", "autolaunch": "true", "footer": " ", "header": "", "start_slideshow_at": "selected" } }, "nbformat": 4, "nbformat_minor": 4 }