In [ ]:
Copied!
import io
import geopandas as gpd
from owslib.wfs import WebFeatureService
import io
import geopandas as gpd
from owslib.wfs import WebFeatureService
É possível pesquisar dados pela interface gráfica do GeoServer.
In [ ]:
Copied!
wfs = WebFeatureService(
url='https://geoservicos.ibge.gov.br/geoserver/ows',
version='2.0.0',
)
wfs = WebFeatureService(
url='https://geoservicos.ibge.gov.br/geoserver/ows',
version='2.0.0',
)
In [ ]:
Copied!
list_layers = list(wfs.contents)
list_layers.sort()
print(f'Existem {len(list_layers)} camadas disponíveis no serviço WFS.')
# Display the first 10 layers
list_layers[0:10]
list_layers = list(wfs.contents)
list_layers.sort()
print(f'Existem {len(list_layers)} camadas disponíveis no serviço WFS.')
# Display the first 10 layers
list_layers[0:10]
É possível observar alguns "agrupamentos" de dados. O layer BDIA:geol_linha_fratura pertence ao "grupo" BDIA, por exemplo.
- BDIA: Banco de Informações Ambientais
- CCAR: Coordenação de Cartografia dentro da Diretoria de Geociências
- CETE: Coordenação de Estruturas Territoriais do IBGE, é a unidade responsável pela elaboração e manutenção de produtos cartográficos e geográficos do IBGE
- CGEO: Coordenação de Geografia
- CGED: Coordenação de Geodésia
- CGMAT: Coordenação de Geomática, que faz parte da Diretoria de Geociências (DGC)
- CREN: Coordenação de Recursos Naturais e Estudos Ambientais, uma unidade dentro da Diretoria de Geociências
In [ ]:
Copied!
primeiros_dez_itens = list(wfs.contents.items())[:10]
primeiros_dez_itens
primeiros_dez_itens = list(wfs.contents.items())[:10]
primeiros_dez_itens
In [ ]:
Copied!
for layer_name, layer in primeiros_dez_itens:
# if layer.queryable == 0:
print(f"Layer: {layer_name}")
print(f" Title: {layer.title}")
print(f" Abstract: {layer.abstract}")
print(f" BoundingBox: {layer.boundingBoxWGS84}")
print(f" CRS: {layer.crsOptions}")
print(f" Styles: {layer.styles}")
print(f" Keywords: {layer.keywords}")
# print(f" Queryable: {layer.queryable}")
# print(f" Opaque: {layer.opaque}")
# print(f" Dimensions: {layer.dimensions}")
print(f" MetadataURLs: {layer.metadataUrls}")
print()
for layer_name, layer in primeiros_dez_itens:
# if layer.queryable == 0:
print(f"Layer: {layer_name}")
print(f" Title: {layer.title}")
print(f" Abstract: {layer.abstract}")
print(f" BoundingBox: {layer.boundingBoxWGS84}")
print(f" CRS: {layer.crsOptions}")
print(f" Styles: {layer.styles}")
print(f" Keywords: {layer.keywords}")
# print(f" Queryable: {layer.queryable}")
# print(f" Opaque: {layer.opaque}")
# print(f" Dimensions: {layer.dimensions}")
print(f" MetadataURLs: {layer.metadataUrls}")
print()
In [ ]:
Copied!
set([layer.split(':')[0] for layer in list_layers])
set([layer.split(':')[0] for layer in list_layers])
In [ ]:
Copied!
# Obter os dados no formato GeoJSON (ou outro formato suportado)
response = wfs.getfeature(
typename='CREN:lm_bioma_250',
# bbox=(173700, 440400, 178700, 441400),
# srsname='EPSG:28992'
# srsname='EPSG:4326',
srsname='EPSG:4674',
outputFormat='application/json',
)
response
# Obter os dados no formato GeoJSON (ou outro formato suportado)
response = wfs.getfeature(
typename='CREN:lm_bioma_250',
# bbox=(173700, 440400, 178700, 441400),
# srsname='EPSG:28992'
# srsname='EPSG:4326',
srsname='EPSG:4674',
outputFormat='application/json',
)
response
In [ ]:
Copied!
gdf = gpd.read_file(filename=io.BytesIO(response.read()))
gdf.info()
gdf.head()
gdf = gpd.read_file(filename=io.BytesIO(response.read()))
gdf.info()
gdf.head()
In [ ]:
Copied!
gdf.crs
gdf.crs
In [ ]:
Copied!
gdf.explore()
gdf.explore()
In [ ]:
Copied!