Uma projeção global semelhante a uma grade para criar mapas de calor


11

Estou montando um aplicativo em que preciso criar uma grade de vetor que será usada para armazenar e exibir um mapa de calor. Possui os seguintes requisitos:

  • Pode cobrir todo o planeta.
  • A grande maioria dos quadrados da grade não terá valores.
  • Eu não quero ter que armazenar a grade em si; Eu gostaria de calculá-lo em tempo real.
  • A escala dos dados usados ​​com a grade pode variar bastante.
  • Eu espero que a grade do quadrado seja de 1 km a 100 km. (Estou ciente de quantos serão (~ 510 milhões por 1 km, ~ 51.000 por 100 km)).
  • Os valores serão acumulados / agregados para cada quadrado da grade.
  • Idealmente, eu seria capaz de usar facilmente células de grade menores para calcular valores para as maiores, em vez de armazenar os valores de células de grade maiores.
  • Vou usar o OpenLayers para cobrir o OpenStreetMap.
  • Eu o armazenarei no SpatiaLite ou SQLite, de preferência com suporte nativo (por exemplo, para SpatiaLite = um CRS suportado; ou para SQLite = um sistema baseado em números puros).

Então, minha pergunta é: que projeção devo usar para esta grade?

Além disso - existe uma boa maneira de projetar isso? Alguém sabe de uma boa solução potencial para esse problema ou já resolveu problemas semelhantes antes? Ou pode me apontar em uma direção útil.

Editar caso de uso - basicamente, estou agregando caixas delimitadoras de várias formas e tamanhos diferentes. Eles podem variar de alguns hectares a milhares de quilômetros quadrados. Eles também podem estar em diferentes projeções.

Abaixo está uma versão personalizada do tipo de coisa que pretendo realizar automaticamente em uma escala maior. insira a descrição da imagem aqui

Muito Obrigado.


De modo algum necessariamente uma resposta completa ou perfeita, mas você pode procurar no Google o Military Grid Reference System ou pelo menos no US National Grid fgdc.gov/usng para obter algumas idéias sobre como essas organizações lidaram com pelo menos desafios semelhantes. Novamente, não necessariamente perfeito, mas pode ser uma boa referência para o seu trabalho. Espero que ajude.
John

@ John - Obrigado; Eu me deparei com a grade militar em minhas próprias pesquisas, mas ela usa letras e números, então não tenho certeza de que seja adequado. O material do USNG parece interessante, mas não estou tentando criar o meu.
GIS-Jonathan

1
Algumas informações sobre a natureza dos dados e a finalidade do mapa de calor ajudarão a focar as respostas, que podem (e devem) variar de acordo com as propriedades geográficas que você deseja preservar nos mapas: orientação, direção, área, forma, etc. Porém, como a reprojeção de dados espaciais é relativamente rápida e fácil, pode-se levar em consideração esses problemas e focar-se nos mais fundamentais de viés e precisão: o que planeja fazer sobre o MAUP? Você planeja extrair inferências dos dados, conforme agrupados nessas células da grade? Por que deve ser uma estrutura de dados vetoriais ?
whuber

Você poderia esclarecer qual é a dimensionalidade espacial dos dados subjacentes? ou seja, os dados são fundamentalmente apontados e agregados apenas à célula, ou são realmente reais?
AnserGIS

@whuber - Os dados serão utilizados para representação geral de usuários leigos, e não para qualquer forma de análise espacial. Portanto, nenhuma preferência em particular relacionada a quais propriedades geográficas são mantidas / perdidas e o MAUP é irrelevante, pois estou buscando uma generalização grosseira dos dados. Eu só preciso dos quadrados da grade para sobrepor algo como blocos OSM. Meu desejo por vetor é porque estou armazenando-o em um banco de dados e é muito mais fácil de manipular.
GIS-Jonathan

Respostas:


3

Os blocos OSM padrão estão no Spherical Mercator (SRID = 3857), portanto, provavelmente será mais fácil construir sua grade usando a mesma projeção.

Se você usa o SM, pode armazenar os dados no nível de zoom mais alto suportado pelo OSM ou no nível de zoom de nível mais alto em que você permitirá que os usuários aumentem o zoom. Se a cobertura for escassa, use uma estrutura de dados ao longo das linhas de

XIndex, YIndex, Count

onde os índices são os índices da grade de blocos no nível de zoom desejado, contagem é a contagem de recursos que cruzam esse bloco e não inclui entradas para pontos em que a contagem é zero. Em seguida, você pode simplesmente selecionar a contagem por índice ou, em níveis mais baixos de zoom, selecionar a soma da contagem por intervalo de índice, sabendo que, se a consulta retornar, nada será zero para a região especificada.

Obviamente, isso é uma abstração, estou assumindo uma camada de software entre isso e seu renderizador de mapa de calor. Uma descrição mais detalhada de como você renderizará o mapa de calor me ajudaria a dar melhores conselhos.


3

O valor armazenado em uma célula a partir de um mapa de calor geralmente é normalizado por sua área. Nesse caso, eu prefiro sugerir uma projeção de área igual, para que você possa agregar facilmente a uma escala maior


Você está planejando calcular a densidade no plano projetado ou em uma superfície esférica e apenas exibi-la dessa maneira? Além disso, os dados retangulares precisam ser distribuídos em mais de uma célula da grade?
AnserGIS

@AnserGIS - O cálculo acontecerá em um plano projetado. Os dados retangulares podem cobrir várias células da grade. Veja também a edição para mais informações.
GIS-Jonathan

2

Esta é uma resposta para como você pode criar um mapa de calor. Minha sugestão é que você analise o sistema de células de grade de quarto de grau . O QDGC representa uma maneira de fazer quadrados de área (quase) iguais cobrindo uma área específica para representar qualidades específicas da área coberta. Os próprios quadrados são baseados nos quadrados grau que cobrem a terra. Ao redor do equador, temos 360 linhas longitudinais e, do norte ao polo sul, temos 180 linhas latitudinais. Juntos, isso nos dá 64800 segmentos ou ladrilhos cobrindo a terra. A forma dos quadrados se torna mais retangular quanto mais norte chegamos. Nos pólos, eles não são quadrados nem mesmo retangulares, mas acabam em triângulos alongados.

As células da grade podem ser divididas em quatro e as células da grade resultantes novamente divididas em quatro. O sistema fornece ao usuário uma convenção de nomenclatura previsível. Ao calcular as áreas para as diferentes células da grade, elas devem ser adequadas para apresentações dependentes da área. A nomenclatura das células de grade de quarto grau é recursiva.

Informações mais detalhadas e referências a alguns outros sistemas também estão disponíveis em um artigo publicado há alguns anos. O padrão é usado em vários atlas africanos para obter informações ambientais.

Shapefiles para diferentes continentes e países está disponível para download no meu blog.

Eu brinquei com o pensamento de estender o padrão, para que as células da grade acima ou abaixo de uma certa latitude pudessem ser divididas em duas, proporcionando assim um produto de mapa mais visualmente agradável quando usado.


1
Obrigado por compartilhar; ideia interessante. Certamente parece que pode ser útil para isso. Estou assumindo que não seria muito esforço alterá-lo para que fosse puramente numérico? ou seja, não "E" ou "N"? Isso provavelmente permitiria uma agregação mais fácil e eficiente de células, principalmente no meridiano ou no equador.
GIS-Jonathan

Um bom motivo para manter os caracteres (texto) é mantê-lo legível por humanos. Para uso em atlas e referências humanas, ele serve bem a esse propósito. Obviamente, seria possível usar isso, por exemplo, esta representação: E = 0, W = 1, S = 0, N = 1, A = 1, B = 2, C = 3 e D = 4. Alguns trechos de código bem escritos em python ou outra linguagem de script relevante devem ser capazes de "superar" os desafios do meridiano / equador a um custo baixo. Obviamente, dependendo do nível de operação do QDGC e do tamanho do conjunto de dados.
Ragnvald 17/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.