---
# System prepended metadata

title: 'Ilustração com mapas, dados georeferenciados e programação - Aula 1'

---


## Sesc Av. Paulista
# Ilustrações experimentais usando mapas e dados geográficos - Aula 1

### `hackmd.io/@sesc-av-paulista/ilustra-mapas-2025-a1` - [índice](https://hackmd.io/@sesc-av-paulista/ilustra-mapas-2025)
![sketch_2025_02_24](https://hackmd.io/_uploads/r1k-NUcJWx.png) 

## Manipulando dados georeferenciados com programação em Python  

### Apresentação

### Ferramentas

- [Thonny IDE (Python) + py5](https://abav.lugaralgum.com/como-instalar-py5/)
- Biblioteca **osmnx** (`osmnx`)
    - Dados do projeto **OpenStreetMap**
    - `geopandas` (GeoDataFrame), `shapely` (geometrias), `networkx` (grafos).

```python
"""
Meus estudos de mapas - docstring

"""
import py5   # biblioteca de desenho
import osmnx as ox  # para pegar dados do OSM

sé = ox.geocode('Praça da Sé, São Paulo, SP, Brasil')
municipio = ox.geocode_to_gdf('São Paulo, Brasil')

def setup():
    py5.size(600, 600)
    x_min, y_min, x_max, y_max = municipio.total_bounds
    map_w, map_h = (x_max - x_min), (y_max - y_min)
    x_scale = y_scale = py5.height / map_h
    translate_and_scale_gdf(municipio, -x_min, -y_min, x_scale, -y_scale)
    forma = municipio.geometry[0]
    py5.shape(forma, 0, 600)
    py5.save_frame('são paulo.png')

    
def translate_and_scale_gdf(gdf, x, y, x_scale, y_scale):
    gdf['geometry'] = gdf.geometry.translate(x, y)
    gdf['geometry'] = gdf.geometry.scale(
        xfact=x_scale, yfact=y_scale, origin=(0, 0))

py5.run_sketch(block=False)


```

### Perguntas

Vamos testar o CRS `EPSG:31983` semana que vem! Parece ser Sirgas mas em metros :) 

### Códigos
```python
"""
Tina
meus estudos de mapas
"""

import py5
import osmnx as ox

sé = ox.geocode('Praça da Sé, São Paulo, SP Brasil')
municipio = ox.geocode_to_gdf('São Paulo, Brasil')

def setup():
    py5.size(600,600)


py5.save_frame ('São Paulo.png')

```

Jessuca

```python 
"""
meus estudos de mapas jessica
"""

import osmnx as ox # para pegar dados do osm
import py5  # biblioteca de desenho

sé = ox.geocode('Praça da Sé, São Paulo, sp, Brasil')
municipio = ox.geocode_to_gdf('São Paulo, Brasil')

def setup():
    py5.size(600, 600)
    forma = municipio.geometry[0]
    py5.shape(forma, 0, 0, 600, 600)
    
py5.run_sketch()

```
Manacapuro - Laura

```python
"""
laura
"""

import osmnx as ox # para pegar os dados OSM
import py5 #biblioteca de desenho

manacapuru = ox.geocode('Manacapuru, AM, Brasil')

municipio = ox.geocode_to_gdf('Manacapuru, AM, Brasil')

def setup():
    py5.size(600, 600)
    x_min, y_min, x_max, y_max = municipio.total_bounds
    map_w, map_h = (x_max - x_min), (y_max - y_min)
    x_scale = y_scale = py5.height / map_h
    translate_and_scale_gdf(municipio, -x_min, -y_min, x_scale, -y_scale)
    forma = municipio.geometry[0]
    py5.shape(forma, 0, 600)
    py5.save_frame('manacapuru.png')
    
def translate_and_scale_gdf(gdf, x, y, x_scale, y_scale):
    gdf['geometry'] = gdf.geometry.translate(x, y)
    gdf['geometry'] = gdf.geometry.scale(
        xfact=x_scale, yfact=y_scale, origin=(0, 0))

py5.run_sketch(block=False)
```
