Zephyrnet Logo

Compreender e prever ilhas de calor urbanas em Gramener usando recursos geoespaciais do Amazon SageMaker | Amazon Web Services

Data:

Este é um post convidado de coautoria de Shravan Kumar e Avirat S da Gramener.

gramener, um Estranho empresa, contribui para o desenvolvimento sustentável, concentrando-se na agricultura, silvicultura, gestão de água e energia renovável. Ao fornecer às autoridades as ferramentas e os conhecimentos de que necessitam para tomar decisões informadas sobre o impacto ambiental e social, a Gramener está a desempenhar um papel vital na construção de um futuro mais sustentável.

Ilhas de calor urbanas (UHIs) são áreas dentro das cidades que experimentam temperaturas significativamente mais altas do que as áreas rurais circundantes. As UHIs são uma preocupação crescente porque podem levar a vários problemas ambientais e de saúde. Para enfrentar este desafio, a Gramener desenvolveu uma solução que utiliza dados espaciais e técnicas avançadas de modelagem para compreender e mitigar os seguintes efeitos da UHI:

  • Discrepância de temperatura – Os UHIs podem fazer com que as áreas urbanas sejam mais quentes do que as regiões rurais vizinhas.
  • Impacto na saúde – As temperaturas mais elevadas nas UHI contribuem para um aumento de 10-20% nas doenças e mortes relacionadas com o calor.
  • Consumo de energia - Os UHIs amplificam as demandas de ar condicionado, resultando em um aumento de até 20% no consumo de energia.
  • A qualidade do ar - Os UHIs pioram a qualidade do ar, levando a níveis elevados de poluição atmosférica e partículas, o que pode aumentar os problemas respiratórios.
  • Impacto econômico – Os UHI podem resultar em milhares de milhões de dólares em custos adicionais de energia, danos em infra-estruturas e despesas com cuidados de saúde.

A solução GeoBox da Gramener permite que os usuários acessem e analisem facilmente dados geoespaciais públicos por meio de sua poderosa API, permitindo integração perfeita em fluxos de trabalho existentes. Isto agiliza a exploração e economiza tempo e recursos valiosos, permitindo que as comunidades identifiquem rapidamente os pontos críticos de UHI. A GeoBox então transforma dados brutos em insights acionáveis ​​apresentados em formatos fáceis de usar, como raster, GeoJSON e Excel, garantindo uma compreensão clara e implementação imediata de estratégias de mitigação de UHI. Isto permite que as comunidades tomem decisões informadas e implementem iniciativas de desenvolvimento urbano sustentável, apoiando, em última análise, os cidadãos através da melhoria da qualidade do ar, da redução do consumo de energia e de um ambiente mais fresco e saudável.

Este post demonstra como a solução GeoBox da Gramener usa recursos geoespaciais do Amazon SageMaker para realizar análises de observação da Terra e desbloquear insights de UHI a partir de imagens de satélite. Os recursos geoespaciais do SageMaker facilitam para cientistas de dados e engenheiros de aprendizado de máquina (ML) construir, treinar e implantar modelos usando dados geoespaciais. Os recursos geoespaciais do SageMaker permitem transformar e enriquecer com eficiência conjuntos de dados geoespaciais em grande escala e acelerar o desenvolvimento de produtos e o tempo de obtenção de insights com modelos de ML pré-treinados.

Visão geral da solução

A Geobox visa analisar e prever o efeito UHI aproveitando características espaciais. Ajuda a compreender como as alterações propostas na infra-estrutura e no uso do solo podem impactar os padrões de ICU e identifica os principais factores que influenciam o ICU. Este modelo analítico fornece estimativas precisas da temperatura da superfície terrestre (TST) em um nível granular, permitindo que Gramener quantificar mudanças no efeito IHU com base em parâmetros (nomes de índices e dados utilizados).

A Geobox permite que os departamentos municipais façam o seguinte:

  • Melhor adaptação climática planejamento – Decisões informadas reduzem o impacto de eventos de calor extremo.
  • Apoio à expansão de espaços verdes – Mais espaços verdes melhoram a qualidade do ar e a qualidade de vida.
  • Colaboração interdepartamental aprimorada – Esforços coordenados melhoram a segurança pública.
  • Preparação estratégica para emergências – O planejamento direcionado reduz o potencial de emergências.
  • Colaboração nos serviços de saúde – A cooperação leva a intervenções de saúde mais eficazes.

Fluxo de trabalho da solução

Nesta seção, discutimos como os diferentes componentes funcionam juntos, desde a aquisição de dados até a modelagem espacial e previsão, servindo como o núcleo da solução UHI. A solução segue um fluxo de trabalho estruturado, com foco principal no atendimento de UHIs em uma cidade do Canadá.

Fase 1: Pipeline de dados

O satélite Landsat 8 captura imagens detalhadas da área de interesse a cada 15 dias às 11h30, proporcionando uma visão abrangente da paisagem e do meio ambiente da cidade. Um sistema de grade é estabelecido com um tamanho de grade de 48 metros usando a biblioteca Supermercado Python do Mapbox no nível de zoom 19, permitindo uma análise espacial precisa.

Pipeline de dados

Fase 2: Análise exploratória

Integrando camadas de dados populacionais e de infraestrutura, a Geobox permite que os usuários visualizem a distribuição variável da cidade e obtenham insights morfológicos urbanos, permitindo uma análise abrangente da estrutura e do desenvolvimento da cidade.

Além disso, as imagens Landsat da fase 1 são usadas para obter insights como o Índice de Vegetação por Diferença Normalizada (NDVI) e o Índice Acumulado de Diferença Normalizada (NDBI), com dados meticulosamente dimensionados para a grade de 48 metros para consistência e precisão.

Análise Exploratória

As seguintes variáveis ​​são usadas:

  • Temperatura da superfície terrestre
  • Cobertura do canteiro de obras
  • NDVI
  • Cobertura de blocos de construção
  • NDBI
  • Área de construção
  • Albedo
  • Contagem de edifícios
  • Índice de Água por Diferença Normalizada Modificado (MNDWI)
  • Altura do edifício
  • Número de andares e área útil
  • Relação da área do piso

Fase 3: Modelo analítico

Esta fase compreende três módulos, empregando modelos de ML em dados para obter insights sobre LST e sua relação com outros fatores influentes:

  • Módulo 1: Estatísticas zonais e agregação – As estatísticas zonais desempenham um papel vital na computação de estatísticas usando valores do raster de valor. Envolve a extração de dados estatísticos para cada zona com base no raster da zona. A agregação é realizada com resolução de 100 metros, permitindo uma análise abrangente dos dados.
  • Módulo 2: Modelagem espacial – Gramener avaliou três modelos de regressão (efeitos fixos lineares, espaciais e espaciais) para desvendar a correlação entre a temperatura da superfície terrestre (TST) e outras variáveis. Entre esses modelos, o modelo de efeito fixo espacial produziu o maior valor médio de R ao quadrado, especialmente para o período de 2014 a 2020.
  • Módulo 3: Previsão de variáveis ​​– Para prever variáveis ​​no curto prazo, Gramener empregou técnicas de suavização exponencial. Estas previsões ajudaram a compreender os valores futuros do LST e as suas tendências. Além disso, eles mergulharam na análise de escala de longo prazo usando dados do Representative Concentration Pathway (RCP8.5) para prever valores de LST durante longos períodos.

Modelo analítico

Aquisição e pré-processamento de dados

Para implementar os módulos, Gramener utilizou o notebook geoespacial SageMaker dentro Estúdio Amazon SageMaker. O kernel do notebook geoespacial é pré-instalado com bibliotecas geoespaciais comumente usadas, permitindo a visualização direta e o processamento de dados geoespaciais no ambiente de notebook Python.

Gramener empregou vários conjuntos de dados para prever tendências de LST, incluindo avaliação de edifícios e dados de temperatura, bem como imagens de satélite. A chave para a solução UHI foi usar dados do satélite Landsat 8. Este satélite de imagens da Terra, uma joint venture entre o USGS e a NASA, serviu como componente fundamental do projeto.

Com o PesquisaRasterDataCollection API, o SageMaker fornece uma funcionalidade desenvolvida especificamente para facilitar a recuperação de imagens de satélite. Gramener usou esta API para recuperar dados do satélite Landsat 8 para a solução UHI.

A SearchRasterDataCollection A API usa os seguintes parâmetros de entrada:

  • RNA – O nome de recurso da Amazon (ARN) da coleta de dados raster usados ​​na consulta
  • Área de interesse – Um polígono GeoJSON representando a área de interesse
  • Filtro de intervalo de tempo – O intervalo de tempo de interesse, indicado como {StartTime: <string>, EndTime: <string>}
  • Filtros de propriedade – Filtros de propriedades complementares, como especificações para cobertura de nuvens máxima aceitável, também podem ser incorporados

O exemplo a seguir demonstra como os dados do Landsat 8 podem ser consultados por meio da API:

search_params = {
    "Arn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/gmqa64dcu2g9ayx1", # NASA/USGS Landsat
    "RasterDataCollectionQuery": {
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {
                "PolygonGeometry": {
                    "Coordinates": coordinates
                }
            }
        },
        "TimeRangeFilter": {
            "StartTime": "2014-01-01T00:00:00Z",
            "EndTime": "2020-12-31T23:59:59Z",
        },
        "PropertyFilters": {
            "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 20.0}}}],
            "LogicalOperator": "AND",
        }
    },
}

response = geospatial_client.search_raster_data_collection(**search_params)

Para processar dados de satélite em grande escala, Gramener usou Processamento do Amazon SageMaker com o contêiner geoespacial. O SageMaker Processing permite o dimensionamento flexível de clusters de computação para acomodar tarefas de tamanhos variados, desde o processamento de um único quarteirão até o gerenciamento de cargas de trabalho em escala planetária. Tradicionalmente, criar e gerenciar manualmente um cluster de computação para tais tarefas era caro e demorado, principalmente devido às complexidades envolvidas na padronização de um ambiente adequado para o tratamento de dados geoespaciais.

Agora, com o contêiner geoespacial especializado no SageMaker, gerenciar e executar clusters para processamento geoespacial tornou-se mais simples. Este processo requer um esforço mínimo de codificação: basta definir a carga de trabalho, especificar a localização dos dados geoespaciais em Serviço de armazenamento simples da Amazon (Amazon S3) e selecione o contêiner geoespacial apropriado. O SageMaker Processing provisiona automaticamente os recursos de cluster necessários, facilitando a execução eficiente de tarefas geoespaciais em escalas que vão desde o nível da cidade até o nível do continente.

Tratamento

O SageMaker gerencia totalmente a infraestrutura subjacente necessária para o trabalho de processamento. Ele aloca recursos de cluster durante o trabalho e os remove após a conclusão do trabalho. Finalmente, os resultados do trabalho de processamento são salvos no bucket S3 designado.

Um trabalho de processamento do SageMaker usando a imagem geoespacial pode ser configurado da seguinte forma no bloco de notas geoespacial:

from sagemaker import get_execution_role
from sagemaker.sklearn.processing import ScriptProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput

execution_role_arn = get_execution_role()

geospatial_image_uri = '081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest'
processor = ScriptProcessor(
    command=['python3'],
    image_uri=geospatial_image_uri,
    role=execution_role_arn,
    instance_count=20,
    instance_type='ml.m5.xlarge',
    base_job_name='geospatial-processing-spectral-indices'
)

O parâmetro instance_count define quantas instâncias o trabalho de processamento deve usar e o instance_type define que tipo de instância deve ser usado.

O exemplo a seguir mostra como um script Python é executado no cluster de tarefas de processamento. Quando o comando run é invocado, o cluster é inicializado e provisiona automaticamente os recursos de cluster necessários:

processor.run(
    code='calculate_variables.py',
    inputs=[
        ProcessingInput(
            source=s3_manifest_url,
            destination='/opt/ml/processing/input_data/',
            s3_data_type="ManifestFile",
            s3_data_distribution_type="ShardedByS3Key"
        ),
    ],
    outputs=[
        ProcessingOutput(
            source='/opt/ml/processing/output_data/',
            destination=s3_output_prefix_url
        )
    ]
)

Modelagem espacial e previsões LST

No trabalho de processamento, uma série de variáveis, incluindo a radiância espectral do topo da atmosfera, a temperatura de brilho e a refletância do Landsat 8, são calculadas. Além disso, são calculadas variáveis ​​morfológicas como razão de área útil (FAR), cobertura de canteiro de obras, cobertura de blocos de construção e valor de entropia de Shannon.

O código a seguir demonstra como essa aritmética de banda pode ser realizada:

def calculate_ndvi(nir08, red): 
    return (nir08 - red) / (nir08 + red) 
 
def calculate_ndbi(swir16, nir08): 
    return (swir16 - nir08) / (swir16 + nir08) 
 
def calculate_st(bt): 
    return ((bt * 0.00341802) + 149.0) - 273 
 
def indices_calc(data): 
    with concurrent.futures.ThreadPoolExecutor() as executor: 
        ndvi_future = executor.submit(calculate_ndvi, data.sel(band="SR_B5"), data.sel(band="SR_B4")) 
        ndbi_future = executor.submit(calculate_ndbi, data.sel(band="SR_B6"), data.sel(band="SR_B5")) 
        st_future = executor.submit(calculate_st, data.sel(band="ST_B10")) 
 
        ndvi = ndvi_future.result() 
        ndbi = ndbi_future.result() 
        st = st_future.result() 
 
    ndvi.attrs = data.attrs 
    ndbi.attrs = data.attrs 
    st.attrs = data.attrs 
 
    return ndvi, ndbi, st 

Após o cálculo das variáveis, são realizadas estatísticas zonais para agregar os dados por grade. Isto envolve o cálculo de estatísticas com base nos valores de interesse dentro de cada zona. Para estes cálculos foi utilizado um tamanho de grade de aproximadamente 100 metros.

def process_iteration(st, ndvi, ndmi, date, city_name): 
    datacube['st'] = (st.dims, st.values) 
    datacube['ndvi'] = (ndvi.dims, ndvi.values) 
    datacube['ndmi'] = (ndmi.dims, ndmi.values) 
    df = datacube.groupby("id").mean().to_dataframe().reset_index() 
    merged_grid = hexgrid_utm.join(df, on='id', how='left', lsuffix='_')[['id', 'hex_id', 'geometry', 'st', 'ndvi', 'ndmi']] 
    merged_grid.to_file(f"{DATA}/{city_name}/{city_name}_outputs_{date}.geojson", driver='GeoJSON') 
    print("Working on:", date) 
 
def iterative_op(city_json, st, ndvi, ndmi, city_name): 
    with concurrent.futures.ThreadPoolExecutor() as executor: 
        futures = [ 
            executor.submit(process_iteration, st[i], ndvi[i], ndmi[i], date, city_name) 
            for i, _ in enumerate(city_json.time) 
            for date in city_json.date 
        ] 
        for future in concurrent.futures.as_completed(futures): 
            future.result() 
 
    print('Process completed') 

Após agregar os dados, é realizada a modelagem espacial. Gramener usou métodos de regressão espacial, como regressão linear e efeitos espaciais fixos, para explicar a dependência espacial nas observações. Esta abordagem facilita a modelagem da relação entre variáveis ​​e LST em um nível micro.

O código a seguir ilustra como essa modelagem espacial pode ser executada:

features = [ 
    'ndvi', 
    'ndbi', 
    'st', 
    'build_count', 
    'bbc' 
] 
 
def compute_spatial_weights(df, k=8): 
    knn = KNN.from_dataframe(df, k=k) 
    return df[features].apply(lambda y: weights.spatial_lag.lag_spatial(knn, y)).rename(columns=lambda c: 'w_' + c) 
 
def ordinary_least_squares(df_year, spatial=False): 
    formula = f"lst ~ {' + '.join(features)}"  
    if spatial: 
        df_year = df_year.join(compute_spatial_weights(df_year)) 
        formula += f" + {' + '.join(['w_' + f for f in features])}"  
     
    return smf.ols(formula, data=df_year).fit() 
 
def process(df, year): 
    df_year = pd.merge(df[df['year'] == year].fillna(0), grids[['idx', 'name']], on='idx') 
    ols_model = ordinary_least_squares(df_year) 
    ols_spatial_model = ordinary_least_squares(df_year, spatial=True) 
    ols_spatial_fe_model = ordinary_least_squares(df_year, spatial=True) 
     
    return { 
        'year': year, 
        'ols_model': ols_model, 
        'ols_spatial_model': ols_spatial_model, 
        'ols_spatial_fe_model': ols_spatial_fe_model, 
        'ols_r2': [ols_model.rsquared, ols_spatial_model.rsquared, ols_spatial_fe_model.rsquared] 
    } 

Gramener usou suavização exponencial para prever os valores de LST. A suavização exponencial é um método eficaz para previsão de séries temporais que aplica médias ponderadas a dados anteriores, com os pesos diminuindo exponencialmente ao longo do tempo. Este método é particularmente eficaz na suavização de dados para identificar tendências e padrões. Ao utilizar a suavização exponencial, é possível visualizar e prever tendências de LST com maior precisão, permitindo previsões mais precisas de valores futuros com base em padrões históricos.

Para visualizar as previsões, Gramener usou o notebook geoespacial SageMaker com bibliotecas geoespaciais de código aberto para sobrepor as previsões do modelo em um mapa base e fornecer visualização em camadas de conjuntos de dados geoespaciais diretamente no notebook.

Visualização

Conclusão

Esta postagem demonstrou como a Gramener está capacitando os clientes a tomar decisões baseadas em dados para ambientes urbanos sustentáveis. Com o SageMaker, a Gramener obteve economias substanciais de tempo na análise de UHI, reduzindo o tempo de processamento de semanas para horas. Esta rápida geração de insights permite que os clientes da Gramener identifiquem áreas que exigem estratégias de mitigação de ICU, planejem proativamente o desenvolvimento urbano e projetos de infraestrutura para minimizar o ICU e obtenham uma compreensão holística dos fatores ambientais para uma avaliação de risco abrangente.

Descubra o potencial de integração de dados de observação da Terra nos seus projetos de sustentabilidade com o SageMaker. Para obter mais informações, consulte Comece a usar os recursos geoespaciais do Amazon SageMaker.


Sobre os autores

Abhishek Mittal é arquiteto de soluções para a equipe mundial do setor público da Amazon Web Services (AWS), onde trabalha principalmente com parceiros ISV em todos os setores, fornecendo-lhes orientação arquitetônica para construir arquitetura escalável e implementar estratégias para impulsionar a adoção de serviços AWS. Ele é apaixonado pela modernização de plataformas tradicionais e pela segurança na nuvem. Fora do trabalho, ele é um entusiasta de viagens.

Janosch Woschitz é arquiteto de soluções sênior na AWS, especializado em IA/ML. Com mais de 15 anos de experiência, ele apoia clientes em todo o mundo no aproveitamento de IA e ML para soluções inovadoras e na construção de plataformas de ML na AWS. Sua experiência abrange aprendizado de máquina, engenharia de dados e sistemas distribuídos escaláveis, complementada por uma sólida experiência em engenharia de software e experiência no setor em domínios como direção autônoma.

Shravan Kumar é Diretor Sênior de Sucesso de Clientes na Gramener, com uma década de experiência em Análise de Negócios, Evangelismo de Dados e estabelecimento de relações profundas com clientes. Ele possui uma base sólida em gerenciamento de clientes e gerenciamento de contas na área de análise de dados, IA e ML.

Avirat S. é cientista de dados geoespaciais na Gramener, aproveitando IA/ML para desbloquear insights de dados geográficos. A sua experiência reside na gestão de desastres, agricultura e planeamento urbano, onde a sua análise informa os processos de tomada de decisão.

local_img

Inteligência mais recente

local_img