Estadistica
13 views | +0 today
Follow
Your new post is loading...
Your new post is loading...
Scooped by William Jefferson Watler Reyes
Scoop.it!

Tutorial de descarga directa en QGIS 3 de imágenes IMERG de precipitación con Python —

Tutorial de descarga directa en QGIS 3 de imágenes IMERG de precipitación con Python — | Estadistica | Scoop.it
La nueva versión de QGIS es QGIS 3 y se ejecuta con Python 3 que introduce algunos cambios en la interacción con los servidores web con paquetes de "requests".Para aquellos que son nuevos en imágenes IMERG, estas son algo así como las nuevas imágenes TRMM con estimación...
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Estos serán los 10 lenguajes de programación más demandados en 2018

El lenguaje a escoger para el desarrollo de software ya no es solo una decisión técnica, sino una que puede tener un impacto fuerte en el negocio. Las aplicaciones posibles de estas herramientas de programación están evolucionando, y las necesidades comerciales van acompañando y apuntalando este camino a cada paso. Los desarrolladores que busquen mantenerse actualizados deben adquirir nuevas habilidades, renovar conocimientos de manera constante y renunciar a herramientas que están empezando a volverse obsoletas, tal y como esta publicación ha reportado en reiteradas ocasiones. Según datos de Coding Dojo citados por informationweek.com, los siguientes serán, probablemente, los lenguajes de programación que más deben tener en la mira los tomadores de decisión a la hora de enfrentarse a un nuevo proyecto: 1. JAVA Java, un popular y versátil lenguaje de código abierto, ha existido por más de 20 años y ahora es prácticamente omnipresente. “Java está en todo, desde la computadora y el teléfono hasta el Curiosity Rover en Marte”, señala Ryan Desmond, cofundador e instructor principal del campamento de codificación CodingNomads. La popularidad de Java se ve reforzada por el hecho de que impulsa Android, el sistema operativo más utilizado del mundo. “Por estas razones, Java no va a ningún lado, y la demanda y los salarios de los ingenieros de Java continúan estando entre los más altos”, asegura Desmond. 2. PYTHON El lenguaje de programación utilizado para el desarrollo web, Python, está cerca de la cúspide de la pirámide de la programación. Python también se usa ampliamente en informática científica, extracción de datos y aprendizaje automático. “Python sigue siendo el lenguaje de facto para la ciencia de datos, que es uno de los nichos de mayor crecimiento y más rentable de la industria informática”, señala Sam Kaufman, cofundador y director de tecnología de BugReplay. Por su parte, Derek Johnson, vicepresidente de desarrollo de negocios de Stride Search, cree que los programadores de Python están en demanda porque, entre otras razones, este es un lenguaje multiuso. 3. JAVASCRIPT JavaScript no perderá su popularidad durante 2018. Según Coding Dojo, JavaScript es utilizado actualmente por más del 80% de los desarrolladores y por 95% de todos los sitios web. Además, varios frameworks front-end para JavaScript, como React y AngularJS, tienen un enorme potencial de futuro a medida que el IoT y los dispositivos móviles se vuelven más populares. “JavaScript es el único lenguaje que se ejecuta nativamente en los navegadores, por lo que es una habilidad que casi todos los desarrolladores deben aprender”, asegura Laurie Voss, cofundadora y directora de operaciones de npm. 4. C++ C++ sigue siendo una herramienta de desarrollo de software superior. Una extensión del lenguaje de programación C de la vieja escuela, C++ se usa, generalmente, para crear software en aplicaciones y sistemas, juegos para PC, controladores, aplicaciones cliente-servidor y firmware incorporado. En el lado negativo, Coding Dojo señaló que muchos programadores encuentran que C++ es complejo y más difícil de aprender y usar que otros lenguajes de la competencia, como Python o JavaScript. A pesar de este inconveniente, el lenguaje sigue siendo esencial para la operación y el mantenimiento de los sistemas heredados utilizados por muchas grandes empresas. 5. C# C# es un lenguaje de programación orientado a Microsoft. Diseñado para ejecutarse en la plataforma .NET, C# tiene como objetivo hacer que el desarrollo de software sea más rápido y más fácil que los lenguajes anteriores de Microsoft. C#, al igual que C++, es ampliamente utilizado en el desarrollo de juegos. 6. PHP Muchos desarrolladores usan PHP para el desarrollo web, ya sea para agregar funciones que HTML no puede manejar o para interactuar con bases de datos MySQL. Según expertos, los lenguajes como Java, C++ y PHP han existido por siempre y no van a ir a ningún lado en el corto plazo, pero son más propensos a recibir un golpe por parte de nuevas opciones de lenguajes, a medida que avanzamos. 7. PERL Perl 5 y Perl 6 están avanzando, continuando como opciones populares entre los administradores de sistemas y redes y, a menudo, sirviendo como un lenguaje que conecta diferentes componentes de software. Aún así, como es el caso con muchos idiomas más antiguos, los mejores días de Perl ya han quedado atrás. “Hemos visto una tendencia constante a la baja para PHP y Perl”, observa Giancarlo Di Vece, presidente de Unosquare. 8. SWIFT Swift, el lenguaje para sistemas iOS y macOS que lanzó Apple en 2014, está ganando terreno en un mundo cada vez más móvil. La adopción de Swift ha crecido en popularidad desde su lanzamiento, de acuerdo con datos de IEEE Spectrum y Stackify. “No hace mucho tiempo, Swift no existía. Ahora supera a Objective-C para los desarrolladores de iOS. Al igual que Java versus Kotlin, Swift es más fácil de leer y escribir, con un código que está más cerca del inglés natural”, señala Paul Kopacki, director de marketing de Realm. 9. R R es un lenguaje en aumento de popularidad en los rankings de búsqueda internacionales y en los EE.UU. Además, fue considerado el lenguaje “menos desagradable” en una encuesta reciente, probablemente, atribuible a un número creciente de trabajos de análisis de Big Data. Según expertos, a medida que la minería de datos y el análisis crezcan, también lo hará la necesidad de programadores competentes en R. 10. RUST Aunque Rust es actualmente un lenguaje de nicho, su popularidad está creciendo constantemente, según datos de Google Trends. El lenguaje de sistemas de Mozilla podría llegar a ser popular entre la comunidad de desarrolladores web en 2018.
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Análisis de las aplicaciones de SNAP - Sentinels Application Plataform

Análisis de las aplicaciones de SNAP - Sentinels Application Plataform | Estadistica | Scoop.it
La herramienta SNAP (acrónimo en inglés de Sentinels Application Plataform) ya está actualizada a su última versión 6.0 desde el pasado 15 de enero. Otra de las sencillas aplicaciones gratuitas proporcionadas por la Agencia Espacial Europea para el análisis de imágenes satélite provenientes, principalmente, de su flota de satélites Sentinels, o para el análisis de cualquier imagen aérea basada en bandas multiespectrales de trabajo. Podemos acceder al portal de descargas de la Agencia Espacial Europea para descargar la última versión de SNAP e incluso descargar los paquetes de herramientas Sentinel Toolboxes. Un repertorio de herramientas específicas que permiten trabajar con los datos radar proporcionados por Sentinel 1, y las imágenes de Sentinel 2 y Sentinel 3. Junto al software de descarga también podremos acceder al repertorio de tutoriales en video que ofrece la ESA para el manejo en el entorno de SNAP. SNAP es uno de los programas de teledetección que podemos emplear, de manera gratuita, para realizar análisis de imágenes aéreas, imágenes rádar, realizar combinaciones de bandas multiespectrales o elaborar índices de humedad, vegetación, radiación o cualquier otro indicador descriptivo de carácter territorial. Aunque ESA cuanta con múltiples herramientas similares, SNAP tiene la ventaja de tener un repertorio de opciones analíticas bastante amplio, aunque es algo más lento en los análisis y el renderizado de imágenes si lo comparamos con otras aplicaciones similares. Deberemos ser pacientes, especialmente en imágenes de gran tamaño y peso. Se basa en el análisis ráster de bandas espectrales para la interpretación del territorio, la generación de mapas temáticos y la elaboración de productos EO susceptibles de ser analizados a partir de bandas de mapeo. Por ejemplo en el seguimiento de glaciares, el impacto de incendios forestales o la evolución de los cambios de usos del suelo en el tiempo. Permite trabajar con funciones habituales que encontraremos dentro del análisis de álgebra de mapas en software como QGIS, ArcGIS o gvSIG pero incorporando funciones más amplias basadas en el análisis de los valores radiométricos de las imágenes y el estudio de las longitudes de onda de emisión de los objetos. La incorporación de Python en SNAP nos ayudará, además, a realizar scripts para realizar funciones de procesado personalizadas siempre que aceptemos esta posibilidad durante el inicio de la instalación de SNAP. Recuerda que las imágenes satélite están formadas por bandas que pueden ser combinadas y analizadas simultáneamente para obtener nuestros análisis cuando combinamos píxels o los introducimos estratégicamente por los canales RGB. Cada banda es visualizada en niveles de grises en función de los valores radiométricos de sus píxels identificando aspectos particulares de cada elemento en superficie. Un doble clic sobre cada banda de trabajo permitirá visualizarla en la vista principal de SNAP. Aunque SNAP incorpora una lanzadera directa a los productos de Sentinel, el análisis de imágenes es extrapolable a otras misiones como Landsat pudiendo emplear de manera análoga el análisis de sus imágenes. Incluso podemos trabajar datos obtenidos por los mapeos y mosaicos de nuestros drones. Por ejemplo para elaborar los tradicionales índices de vegetación NDVI en el ámbito de la agricultura de precisión. La aplicación SNAP puede ser gestionada desde dos puntos de vista: uno mediante la carga de imágenes físicas de manera directa o bien conectándonos a los servicios de Sentinel Data Hub (hoy en día denominado Copernicus Open Access Hub). Para ello bastará con logarnos con nuestros usuarios del portal y conectar a SNAP con la nube. Podremos realizar esta sencilla función a través de la pestaña Product Lybrary. Un entorno desde el que gestionar los directorios de nuestras imágenes satélite y conectar con ESA SciHub. A diferencia de su hermano pequeño, LEOWorks, SNAP presenta una interfaz  adicional en 3D por lo que podemos visualizar nuestros análisis territoriales bajo un visor global accediendo a la pestaña World View y contemplando el contexto territorial de análisis mediante múltiples vistas. Las vistas de referencia o navegación y la vista principal de análisis se mantienen dentro de la interfaz de SNAP siguiendo el mismo legado de otras aplicaciones satélite de Agencia Espacial Europea. Otra de las ventajas que encontraremos será la posibilidad de trabajar con datos DEM para la incorporación de Modelos Digitales de Elevación en nuestros análisis. Y junto a las previsibles funciones de análisis ráster, SNAP permite trabajar la gestión de elementos vectoriales mediante la digitalización de entidades sobre las imágenes aéreas exportando la información ráster proveniente de la interpolación de las superficies vectoriales o integrando directamente la información en formatos propios de Google Earth. Podremos seguir trabajando archivos vectoriales bajo una interfaz visual bastante similar a las tradicionales aplicaciones de la ESA. En este caso, para poder abordar los análisis deberemos contar con nuestro repertorio de imágenes satélite, pudiendo emplear nuestros datos provenientes del mapeo de drones (por ejemplo, empleando Parrot Sequoia), recurrir a plataformas de descarga de imágenes satélite como Land Viewer o emplear directamente los datos de descarga de los portales de imágenes de Sentinel 2 o Sentinel 3. Encontraremos las funciones de análisis desglosadas para archivos vectoriales y archivos ráster dentro del menú superior de SNAP, pudiendo acceder a las funciones habituales de combinación de bandas desde el menú superior en la función Window > Open RGB Image Window. Dentro de esta función podremos realizar las habituales combinaciones de bandas para: Imágenes a color natural: para la composición de imágenes habituales basadas en la combinación de bandas del espectro visible en el rojo, verde y azul. Imágenes a falso color: que nos permitirán analizar bandas dentro y fuera del espectro visible para realzar elementos de interés como la presencia de masas de agua, incendios, o vegetación. Así, por ejemplo, podremos pasar cada una de las bandas de trabajo del visible por los canales RGB para obtener nuestra imagen a color real, o emplear bandas de la franja visible combinadas con bandas fuera del espectro visible para obtener imágenes a falso color. Por ejemplo, la combinación de bandas RGB 843 nos permitirá obtener una imagen basada en el realce de la vegetación gracias a los elevados niveles de reflexión de las longitudes de onda del infrarrojo provenientes de la banda 8. El tratamiento de esta banda por el canal rojo hará que la vegetación se muestre a través de colores rojos, rosados y pardos en función del tipo de vegetación y fase de crecimiento. Un tratamiento análogo para Landsat requerirá, por ejemplo, de emplear una combinación de bandas RGB 453. Ten en cuenta que, cada satélite, trabaja en un rango del espectro visible, por lo que no todas las bandas provenientes de satélites operan en la misma franja y su combinación no genera el mismo tipo de indicador. Aquí te mostramos algunos ejemplos de combinaciones RGB  basadas en bandas Landsat y Sentinel. Una vez generada la imagen podremos exportar nuestras imágenes en los formatos habituales de archivos ráster para poder incorporarlos en nuestro SIG o continuar con análisis paralelos en otras plataformas como ENVI y BEAM. Si quieres seguir profundizando en los análisis de SNAP podrás trabajar los valores radiométricos de nuestros píxels para identificar el comportamiento de los objetos dentro de cada una de las bandas e identificarlos recurriendo a las firmas espectrales. Podremos realizar esta función accediendo a cada una de las bandas individualmente o analizando la curva radiométrica para la composición en cada uno de los canales. El análisis de píxels te permitirá emplear funciones de reclasificación supervisada y no supervisada reagrupando píxels que se comporten de igual manera para la elaboración de mapas reclasificados basados en usos del suelo o unidades homogéneas que describan elementos territoriales similares (masas de agua, zonas forestales, zonas urbanas, yacimientos, cobertura nival…). Dispondremos de esta opción desde el menú superior Raster > Cassification. Ten en cuenta que SNAP siempre será más listo que tú y cuando trabajes con combinaciones de bandas sabrá las resoluciones espaciales tratadas obligandote a trabajar de manera estandarizada con resoluciones homogéneas. Si aún así, SNAP se hace grande para ti… no te preocupes. También puedes recurrir a otros programas gratuitos de la Agencia Espacial Europea, como LEOWorks, una aplicación más ligera que SNAP con una dinámica de trabajo similar y con un procesado de imágenes más rápido. ¡Comenta desde tu cuenta de Facebook!
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

¿Por qué es importante saber programar en GIS?

¿Por qué es importante saber programar en GIS? | Estadistica | Scoop.it
El GIS se ha convertido en una herramienta imprescindible para muchos sectores, y esto a su vez está generando la creación de nuevos perfiles laborales mucho más demandados que el clásico técnico de GIS. Uno de los perfiles que el sector laboral demanda más es el de desarrollador GIS, para el cual, es un requisito fundamental y obvio, conocer al menos los lenguajes básicos de programación GIS. Podríamos definir o enmarcar a éste desarrollador GIS en dos bloques: El primero, el que se encarga de desarrollar o potenciar herramientas o geoprocesamientos en la parte de escritorio o servidor, ya sea con ArcGIS, QGIS, etc, lo que implica el conocimiento de Python y sus respectivos paquetes ArcPy y PyQGIS. Nos gustaría destacar que muchas aplicaciones se construyen con tecnologías o lenguajes que no asociaríamos con el GIS de primeras como puede ser Java. En el segundo grupo nos encontraríamos  con los desarrolladores web. Éstos son los que realizan aplicaciones web o móviles para la visualización de contenido GIS. En éste sector se podría decir que la programación web para GIS con APIs de JavaScript como Leaflet, OpenLayers o la Api de Esri van a ir sustituyendo poco a poco los tradicionales mapas estáticos, al proporcionar un mayor dinamismo e interacción con la información. Una vez vistos los dos perfiles de desarrollador te estarás preguntando el por qué es realmente importante saber programar. Existen varios aspectos, estos dependerán de tus intereses y objetivos. Vamos a ver tres de los cuales consideramos importantes: Índice Implementar procesos GIS para nuestro trabajo o investigaciones Muchas veces, o bien por nuestro trabajo u otras necesidades, nos encontramos en la tesitura de querer implementar las funcionalidades de las herramientas GIS. Al llegar a este punto lo que nos detiene es la ausencia de conocimientos de programación, ya que, posiblemente sepamos lo que tenemos que hacer y cómo hacerlo. En otras muchas ocasiones tenemos tareas muy repetitivas, las cuales, si fuesen automatizadas nos ahorrarían mucho tiempo. Para poder realizar todo esto sería necesario conocer en primera medida Python, el lenguaje en el cual se basan los dos principales GIS: ArcGIS y QGIS. Hacer más accesibles los datos GIS al público general Ya bien sea por que somos unos fanáticos en la realización de mapas, o nuestro trabajo nos implica el mostrar datos de forma interactiva o con gráficos asociados, podemos contar con unos grandes aliados: JavaScript, HTML5, y CSS3. Con la programación web podemos crear increíbles mapas interactivos con información asociada e incluso con gráficos y estadísticas interactivas. Gracias a  frameworks como D3.JS, que permite crear diferentes gráficos o DataTable; proporciona tablas dinámicas e interactivas; podemos realizar vistosos mapas o DashBoard que reúnen la componente espacial y estadística. Aquí podéis ver un simple ejemplo elaborado por nosotros. Ampliar las expectativas laborales siendo un experto programador GIS Por último y no menos importante, la opción de ampliar nuestras expectativas laborales. La gran mayoría de puestos de trabajo que se ofertan en portales laborales son para desarrolladores GIS. Existe una amplia diferencia dentro del sector del GIS y no solo a nivel de oferta si no en retribución económica. En el portal Glassdoor podemos buscar el salario para diferentes áreas, Desarrollador GIS (GIS Developer) con un salario de 78.601 dólares al año en EE.UU, Analista GIS (GIS Analyst) 54.846 dólares/año y Técnico GIS (GIS Technician) 45.059 dólares/año.   Nos gustaría destacar que Estados unidos es uno de los países donde los salarios GIS son más elevados  y el mercado laboral más dinámico. Quizás en tu país los salarios sean más bajos pero seguramente la proporción sea muy similar. Éstos datos son una muestra muy clara de cómo se mueve el sector. Quizás, tras ver éstas estadísticas te plantees de otra forma el adquirir una formación hacia el desarrollo. Los profesionales del GIS venimos de ramas en las cuales la programación ha brillado por su ausencia, o se ha tratado de forma muy fugaz.  Eso no es un inconveniente,  en todo, caso puede ser un punto fuerte. El poseer una carga teórica muy potente en nuestros respectivos campos, nos ayudara a preparar o mejorar los procesos de una forma más acorde a los resultados esperados, siendo aquí la programación un plus. Si tras leer este articulo tienes ganas de adentrarte en el mundo del desarrollo GIS, decirte que es muy sencillo. Existen multitud de tutoriales o vídeos en internet, pero si quieres ir sobre seguro y formarte de forma adecuada, siempre podrás optar por uno de nuestros cursos. En mappingGIS tenemos una gran variedad de cursos para desarrollo GIS, desde PyQGIS, Arcpy y web GIS, solo tienes que seleccionar el que creas más conveniente para ti y empezaras a adquirir conocimientos prácticos desde el primero día.
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

El nuevo Foro de QGIS ya está aquí

El nuevo Foro de QGIS ya está aquí | Estadistica | Scoop.it
Estamos de estreno con el nuevo foro de QGIS de habla hispana que acaba de salir del horno para soporte y punto de encuentro entre GISters amantes del software QGIS. Un lugar donde el ejército de giseros de la comunidad QGIS puede solicitar y ofrecer ayuda en el entorno del programa y sus...
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Ejecución de scripts R y Python en MSSQL : hackplayers

Ejecución de scripts R y Python en MSSQL : hackplayers | Estadistica | Scoop.it
Computer security, ethical hacking and more...
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Geodatos con Python

Geodatos con Python | Estadistica | Scoop.it
Desde Escuela de Datos, Sebastián Oliva, fellow 2017, enseña cómo usar Python para generar mapas a partir de datos georreferenciados. Pues seguir el webinar del 31 de octubre paso a paso en el video que compartimos contigo y el cuaderno que publicamos abajo. También puedes consultar el cuaderno de trabajo de Sebastián aquí. Mapas y Python Es obvia la importancia de los mapas, para la visualizacion de datos. Las coordenadas, latitud y longitud, pueden describir un punto sobre la tierra. Utilizamos estandares como WGS-84 para atar esas coordenadas a un punto real. Utilizando MatPlotlib, podemos aprovechar Basemap, una libreria que provee funcionalidad básica de mapa, con la cual podemos construir y componer. Agregar poligonos, puntos, areas, barras, colores, etc; se hace mediante estas librerias. Librerias La libreria mas utilizada en el ecosistema Jupyter-Matplotlib es Basemap. Tambien existen otras, entre ellas, Plotly, que son muy poderosas y convenientes pero tienen dependencias externas. Basemap: el “industry standard”. Un poco complicado para el setup, bastante poderoso e integrado con matplotlib. Plotly: Una libreria que permite desplegar datos mediante Javascript en la Web QGis: Una aplicación completa para el manejo de datos GIS, tiene bindings en Python y es posible utilizar como libreria para aplicaciónes tanto GUI como en notebooks o para analizar en scripts y exportar. OSMnx: Basada en Open Street Map, Permite tanto analisis como visualización de mapas a nivel de calle, region, ciudad y más. Para este webinar, vamos a indagar mas en Basemap, que es el mas accesible. Basemap Basemap es una extensión de la funcionalidad disponible Existen varias formas de instalarlo, así que puede ser un poco confuso. Dependiendo de el método en el cual tengas instalado matplotlib hace variar la forma apropiada de instalarlo. Ambiente de Trabajo $ #ESTE_ENV = midevenviroment $ source ~/miniconda3/envs/$ESTE_ENV/bin/activate $ conda install jupyter-notebook $ conda install gdal -c conda-forge $ conda install basemap -c conda-forge $ conda install pandas seaborn ## En caso hayan instalado basemap en algun directorio no standard: utiliza un link para la carpeta data. $ ln -s /home/tian/miniconda3/pkgs/basemap-1.1.0-py36_2/lib/python3.6/site-packages/mpl_toolkits/basemap/data/ /usr/share/basemap In [16]: # Importamos lo ya usual. import matplotlib.pyplot as plt import matplotlib.cm import pandas as pd import numpy as np import seaborn # Algunas librerias extra que usaremos from matplotlib.colors import Normalize import matplotlib.colors as colors from numpy import array from numpy import max # Aqui cargamos Basemap from mpl_toolkits.basemap import Basemap from matplotlib.patches import Polygon from matplotlib.collections import PatchCollection sns.set(style="white", color_codes=True) %matplotlib inline Mapeando los terremotos globales de la ultima semana Vamos a usar la feed de datos del US Geological, ellas tienen disponibles datos referenciados de actividad geologica a nivel mundial, regional y de EEUU. In [17]: quakes = pd.read_csv("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_week.csv";) # Creamos la lista de latitudes y longitudes. lats, lons = list(quakes['latitude']), list(quakes['longitude']) In [60]: mags = list(quakes['mag']) quakes.head() Out[60]: time latitude longitude depth mag magType nst gap dmin rms … updated place type horizontalError depthError magError magNst status locationSource magSource 0 2017-10-31T16:29:08.330Z 36.746834 -121.467163 9.00 2.78 md 56.0 61.0 0.02078 0.15 … 2017-10-31T16:32:56.802Z 11km SW of Ridgemark, California earthquake 0.24 0.45 0.16 66.0 automatic nc nc 1 2017-10-31T16:23:50.380Z 19.839001 -155.555664 23.85 2.06 md 44.0 110.0 0.08413 0.13 … 2017-10-31T16:27:14.110Z 23km SSE of Waimea, Hawaii earthquake 0.61 0.81 0.19 8.0 automatic hv hv 2 2017-10-31T16:15:45.210Z 37.603668 -118.955666 1.43 1.08 md 8.0 198.0 0.01381 0.02 … 2017-10-31T16:25:02.360Z 5km SSE of Mammoth Lakes, California earthquake 1.38 1.29 0.17 6.0 automatic nc nc 3 2017-10-31T16:14:54.100Z 37.598167 -118.954330 1.40 1.43 md 21.0 150.0 0.01940 0.03 … 2017-10-31T16:23:02.354Z 5km SSE of Mammoth Lakes, California earthquake 0.34 0.70 0.26 19.0 automatic nc nc 4 2017-10-31T15:54:17.460Z 19.265667 -155.392166 3.49 2.34 ml 47.0 106.0 0.02847 0.21 … 2017-10-31T16:00:00.580Z 11km NE of Pahala, Hawaii earthquake 0.37 1.25 0.32 8.0 automatic hv hv 5 rows × 22 columns Iniciemos con el mapa In [25]: eq_map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0, lat_0=0, lon_0=-130) eq_map.drawcoastlines() eq_map.drawcountries() eq_map.fillcontinents(color = 'gray') eq_map.drawmapboundary() plt.show() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1631: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead. fill_color = ax.get_axis_bgcolor() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead. axisbgc = ax.get_axis_bgcolor() In [64]: figu, ax = plt.subplots(figsize=(20,10)) eq_map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0, lat_0=0, lon_0=-130) eq_map.drawcoastlines() eq_map.drawcountries() eq_map.fillcontinents(color = 'gray') eq_map.drawmapboundary() eq_map.drawmeridians(np.arange(0, 360, 30)) eq_map.drawparallels(np.arange(-90, 90, 30)) ## Coordenadas a posiciones x,y = eq_map(lons, lats) eq_map.plot(x, y, '^', markersize=6) plt.show() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1631: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead. fill_color = ax.get_axis_bgcolor() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead. axisbgc = ax.get_axis_bgcolor() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3298: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0. b = ax.ishold() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3307: MatplotlibDeprecationWarning: axes.hold is deprecated. See the API Changes document (http://matplotlib.org/api/api_changes.html) for more details. ax.hold(b) In [33]: x[0] Out[33]: 17740352.000926033 Veamos esto mas a detalle. In [28]: df = pd.read_csv('hiv_cr_data.csv') df.columns df.shape # (71, 8) df.describe() df.columns df.loc[df.coordenadas == df.coordenadas] subset = df.loc[df.coordenadas == df.coordenadas] coordenadas = subset[['sitio','latitud', 'longitud', 'coordenadas']] coordenadas.head() Out[28]: sitio latitud longitud coordenadas 0 Esquina Sureste de la Iglesia del Corazón de J… 10.018010 -84.216480 (10.01801 , -84.21648) 1 Parque Central de Alajuela 10.016787 -84.213914 (10.016787 , -84.213914) 2 Parque de las Palmas, costado sur del hospital… 10.020168 -84.214064 (10.020168 , -84.214064) 3 Mall Internacional 10.006020 -84.212740 (10.00602 , -84.21274) 4 Ojo de Agua 9.985120 -84.195540 (9.98512 , -84.19554) In [66]: coordenadas.count() Out[66]: sitio 67 latitud 67 longitud 67 coordenadas 67 dtype: int64 In [67]: coordenadas.coordenadas.head() Out[67]: 0 (10.01801 , -84.21648) 1 (10.016787 , -84.213914) 2 (10.020168 , -84.214064) 3 (10.00602 , -84.21274) 4 (9.98512 , -84.19554) Name: coordenadas, dtype: object In [35]: (10.01801 , -84.21648) Out[35]: (10.01801, -84.21648) In [30]: fig, ax = plt.subplots(figsize=(10,20)) mapa = Basemap(projection='merc', lat_0 = 9.74, lon_0 = -83.5, resolution = 'i', llcrnrlon=-88.1, llcrnrlat=5.5, urcrnrlon=-80.1, urcrnrlat=11.8) mapa.drawmapboundary(fill_color='#479EE0') mapa.drawcoastlines() from ast import literal_eval as make_tuple def unpac(t): # haciendo trampa en la vida return pd.Series(make_tuple(t)) def plot_area(pos): ps = unpac(pos) x, y = mapa(ps[1], ps[0]) mapa.plot(x, y, 'o', markersize=7, color='#444444', alpha=0.8) coordenadas.coordenadas.apply(plot_area) plt.show() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3298: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0. b = ax.ishold() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3307: MatplotlibDeprecationWarning: axes.hold is deprecated. See the API Changes document (http://matplotlib.org/api/api_changes.html) for more details. ax.hold(b) In [12]: clox = array(coordenadas['longitud']) clay = array(coordenadas['latitud']) clo = list(clox) cla = list(clay) In [51]: clay.mean() clay Out[51]: array([ 10.01801 , 10.016787, 10.020168, 10.00602 , 9.98512 , 10.001528, 9.998438, 9.99943 , 9.998952, 9.996179, 9.98495 , 9.99961 , 9.935734, 9.93335 , 9.93284 , 9.93355 , 9.9356 , 9.9359 , 9.93454 , 9.927243, 9.93387 , 9.93191 , 9.93378 , 9.937275, 9.937206, 9.93281 , 9.868255, 9.864336, 9.864255, 9.86715 , 9.97685 , 9.99725 , 9.974695, 9.61626 , 9.39646 , 9.42387 , 9.43062 , 9.930423, 9.930036, 9.934636, 9.929361, 9.937733, 9.930169, 9.927714, 9.934579, 9.927496, 9.93141 , 9.938098, 9.927755, 9.933922, 9.936659, 9.932065, 9.927739, 9.930635, 9.932147, 9.93535 , 9.93286 , 9.927324, 10.018506, 10.018993, 10.002973, 9.408455, 9.39838 , 9.403425, 9.40677 , 9.866258, 9.865848]) In [58]: plt.figure(2) #fig.add_subplot(223) fig2, ax2 = plt.subplots(figsize=(20,10)) mapa2 = Basemap(projection='merc', lat_0 = 9.74, lon_0 = -83.5, resolution = 'i', llcrnrlon=-88.1, llcrnrlat=7.5, urcrnrlon=-80.1, urcrnrlat=11.8) pos_x, pos_y = mapa2(clox, clay) mapa2.drawmapboundary(fill_color='#A6CAE0', linewidth=0) mapa2.fillcontinents(color='darkgrey', alpha=0.3) mapa2.drawcoastlines(linewidth=0.1, color="white") paleta = seaborn.diverging_palette(10, 220, sep=80, as_cmap=True) #sns.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True) hb = plt.hexbin(pos_x, pos_y, gridsize=4, mincnt=1, edgecolor='none', cmap = paleta) cb = fig2.colorbar(hb, ax=ax2) plt.show() /usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead. axisbgc = ax.get_axis_bgcolor() <matplotlib.figure.Figure at 0x7f8646f5d7f0> Cool links
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Determinación de Áreas no Superpuestas de Múltiples Capas con QGIS y PyQGIS - Tutorial

Determinación de Áreas no Superpuestas de Múltiples Capas con QGIS y PyQGIS - Tutorial | Estadistica | Scoop.it
Los procesos geoespaciales están presentes en la mayoría de las actividades e investigación de las personas debido a lo cual es importante optimizar el tiempo involucrado por los especialistas y mejorar la calidad de los análisis espaciales. PyQGIS es la extensión de Python en QGIS, este marco de trabajo permite el manejo de las herramientas de QGIS junto con las funciones de Python e incluso paquetes externos de Python mejorando la velocidad y la calidad de nuestro geoproceso y representación espacial. Este tutorial muestra el procedimiento espacial para determinar las áreas no superpuestas en una región de interés con respecto a 7 capas diferentes. Este tutorial cubre los siguientes puntos como scripts en Python: Añadido y representación de las capas y la región de interés Corte de todas las capas a la región de interés Corrección topológica con Grass GIS Disolver las capas cortadas Determinar las zonas no superpuestass   Tutorial   Código El siguiente es el código usado por partes. Parte 1 import os mainLayerFolder = 'C:\Users\Saul\Documents\Ih_AnalisisdeAreasNoSuperpuestasporMultiplesCapasconQGISyPyQGIS\Shp' listLayers = [] for item in os.listdir(mainLayerFolder + '/Layers/'):     if item[-3:]=='shp':         listLayers.append(item) dictLayers = {} for layer in listLayers:     dictLayers[layer[:-4]] = iface.addVectorLayer(mainLayerFolder + '\\Layers\\' + layer , layer[:-4] , "ogr")      areaOfInterest = iface.addVectorLayer(mainLayerFolder + '\\AreaofInterest\\AreaOfInterest.shp' ,'AreaOfInterest',"ogr") Parte 2 from processing.tools import * dictLayersClip = {} for layer in dictLayers.keys():     general.runalg("qgis:clip",\                         dictLayers[layer],\                         areaOfInterest,\                         mainLayerFolder + '\\LayersClip\\'+layer+'_Clip.shp')     dictLayersClip[layer+'_Clip'] = iface.addVectorLayer(mainLayerFolder + '\\LayersClip\\'+layer+'_Clip.shp',layer+'_Clip',"ogr") Parte 3 from processing.tools import * dictLayersClipClean = {} for layer in dictLayersClip.keys():          if dictLayersClip[layer].featureCount() > 0:         extent = dictLayersClip[layer].extent()         xmin = extent.xMinimum()         xmax = extent.xMaximum()         ymin = extent.yMinimum()         ymax = extent.yMaximum()              outputLayer = mainLayerFolder + '\\LayersClipClean\\'+layer+'_Clean.shp'         general.runalg("grass7:v.clean",\                             dictLayersClip[layer],\                             0,\                             0.1,\                             "%f , %f, %f, %f "% (xmin , xmax , ymin , ymax),\                             -1.0,\                             0.0001,\                             outputLayer,\                             None\                             )                                      dictLayersClipClean[layer+'_Clean'] = iface.addVectorLayer(outputLayer , layer+'_Clean', "ogr") Parte 4 from processing.tools import * dictLayersClipCleanDiss = {} for layer in dictLayersClipClean.keys():     outputLayer = mainLayerFolder + '\\LayersClipCleanDiss\\'+layer+'_Diss.shp'     print(outputLayer)     general.runalg("qgis:dissolve",\                         #areaOfInterest,\                         dictLayersClipClean[layer],\                         True,\                         None,                         outputLayer)                              dictLayersClipCleanDiss[layer+'_Diss'] = iface.addVectorLayer(outputLayer , layer+'_Diss' , "ogr") Parte 5 from processing.tools import * dictInter = {} layerList = dictLayersClipCleanDiss.keys() for item in range(len(layerList)):     outputFolder = mainLayerFolder + '\\LayersClipCleanDissInter\\'     #outputLayer = outputFolder + 'Step' + str(item) + '_______' + layerList[item] + '_Inter.shp'     outputLayer = outputFolder + 'Step' + str(item) + '.shp'     print(outputLayer)          if item == 0:         general.runalg("qgis:difference",\                         areaOfInterest,\                         dictLayersClipCleanDiss[layerList[item]],\                         True,\                         outputLayer)                                      elif item > 0:         general.runalg("qgis:difference",\                         dictInter['Step' + str(item-1)],\                         dictLayersClipCleanDiss[layerList[item]],\                         True,\                         outputLayer)          dictInter['Step' + str(item)]=iface.addVectorLayer(outputLayer , 'Step' + str(item), "ogr")   Datos de ingreso Puede descargar los datos de entrada para este tutorial de este enlace: https://www.hatarilabs.com/s/Ih_AnalisisdeAreasNoSuperpuestasporMultiplesCapasconQGISyPyQGIS-7bpf.rar
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Tutorial de Python en español

Tutorial de Python en español | Estadistica | Scoop.it
Tutorial de Python en español. Python es un lenguaje de programación poderoso y fácil de aprender. Cuenta con estructuras de datos eficientes y de alto nivel y un enfoque simple pero efectivo a la programación orientada a objetos. La elegante sintaxis de Python y su tipado dinámico, junto con su naturaleza interpretada, hacen de éste un lenguaje ideal para scripting y desarrollo rápido de aplicaciones en diversas áreas y sobre la mayoría de las plataformas. El intérprete de Python y la extensa biblioteca estándar están a libre disposición en forma binaria y de código fuente para las principales plataformas desde el sitio web de Python, https://www.python.org/, y puede distribuirse libremente. El mismo sitio contiene también distribuciones y enlaces de muchos módulos libres de Python de terceros, programas y herramientas, y documentación adicional. El intérprete de Python puede extenderse fácilmente con nuevas funcionalidades y tipos de datos implementados en C o C++ (u otros lenguajes accesibles desde C). Python también puede usarse como un lenguaje de extensiones para aplicaciones personalizables. Este tutorial introduce de manera informal al lector a los conceptos y características básicas del lenguaje y el sistema de Python. Es bueno tener un interprete de Python a mano para experimentar, sin embargo todos los ejemplos están aislados, por lo tanto el tutorial puede leerse estando desconectado. Para una descripción de los objetos y módulos estándar, mirá La referencia de la biblioteca. La referencia de la biblioteca provee una definición más formal del lenguaje. Para escribir extensiones en C o C++, leé Extendiendo e Integrando el Intérprete de Python y la Referencia de la API Python/C. Hay también numerosos libros que tratan a Python en profundidad. Este tutorial no pretende ser exhaustivo ni tratar cada una de las características, o siquiera las características más usadas. En cambio, introduce la mayoría de las características más notables de Python, y te dará una buena idea del gusto y estilo del lenguaje. Luego de leerlo, serás capaz de leer y escribir módulos y programas en Python, y estarás listo para aprender más de los variados módulos de la biblioteca de Python descriptos en La referencia de la biblioteca. Contenido: Introducción Abriendo tu apetito Usando el intérprete de Python Una introducción informal a Python Más sobre definición de funciones Estructuras de datos Módulos Entrada y salida Errores y excepciones Clases Pequeño paseo por la Biblioteca Estándar Pequeño paseo por la Biblioteca Estándar – Parte II Entornos Virtuales y Paquetes ¿Y ahora qué? Edición de entrada interactiva y sustitución de historial Aritmética de Punto Flotante: Problemas y Limitaciones Links a la documentación de Python Glosario Línea de comandos y entorno Apéndices DESCARGAR MANUAL AQUI Autor original: Guido van Rossum Editor original: Fred L. Drake, Jr. Traducido y empaquetado por la comunidad de Python Argentina | http://www.python.org.ar
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Swift supera a Objective C, queda décimo en la lista de lenguajes de programación más utilizados en

Swift supera a Objective C, queda décimo en la lista de lenguajes de programación más utilizados en | Estadistica | Scoop.it
Swift, el nuevo lenguaje de programación que Apple presentó hace cuatro años, se ha convertido en el décimo más utilizado del mundo. El dato viene de Redmonk, en donde llevan años haciendo un ranking de popularidad de lenguajes de programación basándose en muchos parámetros como la cantidad de código publicado en repositorios de código utilizados por programadores de todo el mundo. La lista completa de ese ranking, más fácil de leer que en el gráfico de arriba, es: 1 JavaScript 2 Java 3 Python 4 PHP 5 C# 6 C++ 7 CSS 8 Ruby 9 C 10 Swift 11 Objective-C 12 Shell 13 R 14 TypeScript 15 Scala 16 Go 17 PowerShell 18 Perl 19 Haskell 20 Lua Como vemos, Swift ya ha superado Objective-C, el lenguaje en el que se programaban las Apps de iOS antes, en tan sólo cuatro años, lo que habla muy bien de su aceptación entre la comunidad de programadores, a pesar de los problemas iniciales que tiene cualquier lenguaje de programación en sus primeros días.
more...
No comment yet.
Scooped by William Jefferson Watler Reyes
Scoop.it!

Nuevos programas formativos: piensa en tu futuro

Incorporamos nuevos programas formativos dentro del área de Big Data y Business Intelligence, Seguridad y Sistemas Informáticos y Arquitectura e Ingeniería.
more...
No comment yet.