Source code for mapsbr.helpers.ibgetools
from . import utils
from .request import get_geojson
[docs]def ibge_encode(locations, geolevel):
"""
Vectorized function to turn locations
names into their corresponding IBGE code.
Parameters
----------
locations : str, iterables, Series, GeoSeries
Series with locations' names.
geolevel : str, default "states"
Geographic level, e.g. "estados", "mesoregions".
Returns
-------
ndarray
Raises
------
AssertionError
If try to pass numbers or strings as numbers.
ValueError
If invalid geographic level is passed.
"""
err_msg = "Cannot encode numbers or strings representing numbers"
# assert that all values do not represent / are numbers
assert not utils.is_number(locations).all(), err_msg
return utils.vectorized_get(name_to_code(geolevel), locations)
[docs]def ibge_decode(locations, geolevel):
"""
Vectorized function to turn locations
codes into their corresponding IBGE name.
Parameters
----------
locations : str, iterables, Series, GeoSeries
Series with locations' codes.
geolevel : str
Geographic level, e.g. "estados", "mesoregions".
Returns
-------
ndarray
Raises
------
AssertionError
If all values passed are strings or
if invalid geographic level is passed.
"""
# assert all values are numbers
assert utils.is_number(locations).all(), "Cannot decode strings"
return utils.vectorized_get(code_to_name(geolevel), locations)
[docs]def name_to_code(geolevel):
"""
Make dictionary to map location name
to IBGE code.
"""
url = build_url(geolevel)
locations = get_geojson(url)
return {location["nome"]: location["id"] for location in locations}
[docs]def code_to_name(geolevel):
"""
Make dictionary to map location code
to IBGE name.
"""
url = build_url(geolevel)
locations = get_geojson(url)
return {location["id"]: location["nome"] for location in locations}
[docs]def build_url(geolevel):
baseurl = "https://servicodados.ibge.gov.br/api/v1/localidades/"
location = arguments_dict.get(geolevel, None)
url = f"{baseurl}{location}"
return url
arguments_dict = {
"estado": "estados",
"estados": "estados",
"state": "estados",
"states": "estados",
"mesorregiao": "mesorregioes",
"mesorregioes": "mesorregioes",
"mesoregion": "mesorregioes",
"mesoregions": "mesorregioes",
"macrorregiao": "regioes",
"macrorregioes": "regioes",
"macroregion": "regioes",
"macroregions": "regioes",
"microrregiao": "microrregioes",
"microrregiao": "microrregioes",
"microrregioes": "microrregioes",
"microregion": "microrregioes",
"microregions": "microrregioes",
"municipio": "municipios",
"municipios": "municipios",
"municipality": "municipios",
"municipalities": "municipios",
}