Aplicando operações espaciais personalizadas

Trabalhando com Dados Geoespaciais em Python

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

Trabalhando com Dados Geoespaciais em Python

Comprimento total de rios a até 50 km de cada cidade?

Para um único ponto (cairo):

area = cairo.buffer(50000)

rivers_within_area = rivers.intersection(area)
print(rivers_within_area.length.sum() / 1000)
186.397219642
Trabalhando com Dados Geoespaciais em Python

O método apply()

Series.apply(): chama uma função para cada valor da Series

Series.apply(function, **kwargs)

  • function: função chamada para cada valor; o valor é passado como primeiro argumento
  • **kwargs: argumentos extras passados para a função

Para uma GeoSeries, a função é chamada como function(geom, **kwargs) para cada geom na GeoSeries

Trabalhando com Dados Geoespaciais em Python

Aplicando uma operação espacial personalizada

A função a aplicar:

def river_length(geom, rivers):
    area = geom.buffer(50000)
    rivers_within_area = rivers.intersection(area)
    return rivers_within_area.length.sum() / 1000

Chamada para uma única geometria:

river_length(cairo, rivers=rivers)
186.3972196423455

Aplicando em todas as cidades:

cities.geometry.apply(river_length, rivers=rivers)
Trabalhando com Dados Geoespaciais em Python

Aplicando uma operação espacial personalizada

Aplicando em todas as cidades:

cities.geometry.apply(river_length, rivers=rivers)
0        0.000000
1        0.000000
2      106.072198
          ...    
Trabalhando com Dados Geoespaciais em Python

Aplicando uma operação espacial personalizada

Aplicando em todas as cidades e salvando em uma nova coluna:

cities['river_length'] = cities.geometry.apply(river_length, rivers=rivers)
cities.head()
             name                       geometry  river_length
0    Vatican City    POINT (1386304.6 5146502.5)      0.000000
1      San Marino    POINT (1385011.5 5455558.1)      0.000000
2           Vaduz    POINT (1059390.7 5963928.5)    106.072198
..            ...                            ...           ...
Trabalhando com Dados Geoespaciais em Python

Vamos praticar!

Trabalhando com Dados Geoespaciais em Python

Preparing Video For Download...