In [1]:
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 10 08:47:17 2017
@author: Philipe Leal
"""
try:
import sys
except:
print("Problemas na abertura do SYS")
try:
import os
except:
print("Problemas na abertura do OS")
try:
import numpy as np
except:
print("Problemas na abertura do numpy")
try:
from osgeo import gdal, ogr, osr
except:
sys.exit("Erro: a biblioteca GDAL não foi encontrada!")
try:
from utils import *
except:
print("Problemas na abertura de utils")
try:
gdal.UseExceptions()
ogr.UseExceptions()
osr.UseExceptions()
except:
print("Nao foi possivel usar excecoes pelo osgeo")
try:
GDALDataset.ExecuteSQL()
except:
print("Nao foi possível executar SQL pelo GDAL")
try:
import pandas as pd
print("Pandas aberto com sucesso")
import geopandas as gpd
print("GeoPandas aberto com sucesso")
except:
print("Pandas e Geopandas nao foram abertos!")
import matplotlib.pyplot as plt
print("Matplotlib.Pyplot aberto com sucesso")
%matplotlib inline
In [2]:
shp_focos_path = "C:/Doutorado/3_Trimestre/PDI_2/focos/Tocantins/Focos_setembro_Tocantins.shp"
try:
print("Tentando abrir arquivo focos com geopandas...")
focos = gpd.read_file(shp_focos_path)
print("Geopandas importou o arquivo de focos de queimada")
Biblioteca = "Geopandas"
except:
driver = ogr.GetDriverByName('ESRI Shapefile')
print("Driver bem definido")
dataSource = driver.Open(shp_focos_path, 0) # 0 means read-only. 1 means writeable.
print("dataSource aberto:\n {0}".format(dataSource))
# Check to see if shapefile is found.
if dataSource is None:
print ('Could not open %s' % (shp_focos_path))
else:
print ('Opened %s' % (shp_focos_path))
try:
layer = dataSource.GetLayer()
print("Layer aberto com sucesso!")
try:
featureCount = layer.GetFeatureCount()
print("Feature Count carregado!\n")
print ("Number of features in %s: %d" % (os.path.basename(shp_focos_path),featureCount))
Biblioteca = "OSGEO"
except:
print("Nao foi possivel contar features!")
except:
print("Layer nao foi carregado!")
In [3]:
if Biblioteca == "OSGEO":
layerDefinition = focos.GetLayerDefn()
for i in range(layerDefinition.GetFieldCount()):
fieldName = layerDefinition.GetFieldDefn(i).GetName()
fieldTypeCode = layerDefinition.GetFieldDefn(i).GetType()
fieldType = layerDefinition.GetFieldDefn(i).GetFieldTypeName(fieldTypeCode)
fieldWidth = layerDefinition.GetFieldDefn(i).GetWidth()
GetPrecision = layerDefinition.GetFieldDefn(i).GetPrecision()
print (fieldName + " - " + fieldType+ " " + str(fieldWidth) + " " + str(GetPrecision))
else:
print(focos.dtypes)
In [4]:
# Convertendo timestamp em datetime format:
focos["timestamp"] = pd.to_datetime(focos["timestamp"]) # convertendo
print(focos.dtypes) # notar a mudanca do tipo de atributo timestamp
type(focos)
Out[4]:
In [5]:
# Importando Shapefile de Municipios:
municipios = gpd.read_file(r"C:\Doutorado\Unidades_Federativas_Shapefile\BR\BRMUE250GC_SIR.shp")
municipios.head(2)
Out[5]:
In [6]:
# alterando nomenclatura das colunas do Geodataframe:
municipios.columns = ["nome", "cod_ibge", "geometry"]
municipios.head()
Out[6]:
In [7]:
municipios.plot(color='white', edgecolor='black', figsize=(6, 4));
In [9]:
# Filtrando Municípios de Tocantins
municipios_Tocant = municipios[municipios["cod_ibge"].str[0:2] == "17"]
In [10]:
# Garantindo sistema de Referencia entre Shapfiles:
municipios.crs = {'init': 'epsg:4326'}
focos.crs = {'init': 'epsg:4326'}
# agrupando shapefiles por localizacao
Join_Tocant = gpd.sjoin(focos, municipios_Tocant, how="right", op='intersects')
# Visualizacao do agrupamento Espacial. Notar que sjoin realiza, na verdade, uma multiplicacao das feições,
# replicando o numero de poligonos finais conforme o numero de focos.
Join_Tocant.head(3)
Out[10]:
In [11]:
Join_Tocant_agrupado = Join_Tocant.groupby('nome').id.count()
print("Antes\n\n",Join_Tocant_agrupado.head(),"\n\n")
Join_Tocant_agrupado.name='nfocos'
Join_Tocant_agrupado.index.name = "Municipios"
Join_Tocant_agrupado.name = "Numero_Focos/Municipio_em_Setembro"
print("Depois: com correcao dos atributos pd.Series \n\n",Join_Tocant_agrupado.head())
In [12]:
municipios_Tocant.head()
Out[12]:
In [13]:
mun_toc_indexado_pelo_nome = municipios_Tocant.set_index('nome')
# notar como o indexador foi alterado e "index_right" para "nome"
mun_toc_indexado_pelo_nome.head()
Out[13]:
In [14]:
toc_mun_focos = pd.concat([mun_toc_indexado_pelo_nome,Join_Tocant_agrupado],axis=1)
toc_mun_focos.head()
Out[14]:
In [15]:
Fig_Focos_Tocantins_setembro_2016 = toc_mun_focos.plot(column='Numero_Focos/Municipio_em_Setembro', legend = True, cmap = "gist_ncar", scheme = 'Fisher_jenks', k = 10, edgecolor = 'black', linewidth = 0.4, markersize = 2, figsize = (15, 15))
Fig_Focos_Tocantins_setembro_2016.plot();
In [16]:
Fig_Focos_Tocantins_setembro_2016.figure.savefig(fname = 'C:/Users/Philipe Leal/Dropbox/Profissao/Python/Shapefile/Geopandas/figuras_Tocantins/', filename = "Focos_setembro.png", dpi=300, facecolor='w', edgecolor='w',
orientation='portrait', papertype=None, format=None,
transparent=False, bbox_inches=None, pad_inches=0.1,
frameon=None)
In [ ]:
# Plotando gráfico join:
Plot_1 = Join_Tocant.plot(cmap='Paired', figsize=(14, 8), legend=True);
# Add title
Plot_1.set_title("N° de Focos em Setembro por Municipio de Tocantins");
# Add legend:
Plot_1.set_label(s = (2,2))
In [ ]:
# Plotando gráfico join:
Plot_1 = Join_Tocant_agrupado.plot(cmap='Paired', figsize=(14, 8), legend=True);
# Add title
Plot_1.set_title("N° de Focos em Setembro por Municipio de Tocantins");
# Add legend:
Plot_1.set_label(s = (2,2))