Sou um usuário do ArcGIS Desktop que está entrando no mundo do mapeamento da web pela primeira vez. Seguindo os conselhos que encontrei aqui no GIS.SE, comecei com os tutoriais gratuitos do OpenGeo .
No entanto, comecei a perceber que a maioria das demos e exemplos eram voltados para dados vetoriais. Meu projeto principal envolve a exibição de uma série temporal de 300 quadros de rasters de 5000 x 5000 pixels. No meu computador desktop, eles são armazenados em um único binário BIP inteiro de 5000x5000x300 e 16 bits, que totaliza cerca de 8 GB. Meu objetivo é poder clicar em uma célula (de uma única varredura na série temporal) e exibir um gráfico mostrando os valores desse pixel na série temporal de 300 elementos. Os dados de varredura usados para cada gráfico de série temporal devem ser armazenados sem perdas, embora os mapas de sobreposição clicados possam ser caches com perdas.
Existe algo que possa ser mais adequado para este projeto (para um desenvolvedor iniciante de GIS da web) do que o OpenGeo? Ou devo continuar com essa configuração?
Para referência, tenho experiência em programação em Python, Java e PHP. Eu não tenho muita experiência com SQL. Este é um projeto aberto, por isso tenho tempo de sobra para aprender novos idiomas, se necessário. Eu já tenho um servidor web, embora provavelmente precise mudar de host porque o GoDaddy parece não suportar o PostgreSQL sem obter um VPS.
Obrigado pela ajuda!
EDIT: (13 de janeiro) Ainda estou procurando informações sobre a melhor maneira de armazenar um raster BIP inteiro tridimensional de 16 bits e ser capaz de consultar com eficiência uma única "coluna" de dados no eixo z. Não quero convertê-lo para um formato de 32 bits (porque isso dobraria o tamanho do arquivo do formulário atual de 16 bits).
Respostas:
Consultar uma varredura desse tipo não deve realmente causar grandes problemas. Você pode ler dados binários diretamente usando todas as linguagens de programa e o acesso é rápido. Apenas certifique-se de armazenar seus dados em um formato de arquivo com todos os metadados em um arquivo separado. BIP é esse formato
por exemplo, em php, assumindo que o arquivo esteja na ordem principal das linhas (caso contrário, alterne xey), com $ x e $ y a posição em sua grade (contando de 0), $ nx, $ ny e $ nz o número de pixels em cada dimensão e $ nb o número de bytes por célula da grade:
Apenas certifique-se de acessar o pixel direito: a contagem começa no canto superior esquerdo ou não, ...
Algumas informações extras: depois de ler os dados, você deve convertê-los em flutuadores. Por exemplo:
Caso seu host não suporte o upload de arquivos grandes, você pode, por exemplo, dividir seu arquivo bip em, por exemplo, 8 arquivos bip.
Mais algumas informações sobre como eu faria o resto do site: como seus dados são estáticos, você pode gerar um pequeno visualizador de mapa usando gdal2tiles e openlayers. http://www.gdal.org/gdal2tiles.html De fato, uma vez que você diz que "eu realmente não preciso de escalabilidade - este projeto é principalmente para permitir que alguns pesquisadores pares tenham acesso mais fácil aos meus dados do que o envio de um Arquivo de 8 GB e carregá-lo no ENVI. "Você pode até ficar sem usar uma caixa de ferramentas webgis: basta permitir que os usuários cliquem na imagem e capturem as coordenadas: http://www.emanueleferonato.com/2006/09/02/click -image-and-get-Coordinates-with-javascript /
(embora você deva encontrar uma maneira de apresentar bem sua imagem de 5000 x 5000)
fonte
Isso se parece com três questões separadas: uma de infraestrutura, uma de arquitetura e outra de manipulação de eventos. Apresentarei uma abordagem possível, mas minha resposta é necessariamente geral.
A infraestrutura
Eu recomendo usar um serviço de hospedagem VPS como o Linode (www.linode.com) para o seu servidor. Isso fornece acesso total (ou seja, root) a um servidor mantido profissionalmente - sem preocupações com a falta de energia ou a perda de conexão com a Internet.
Arquitetura
Existem tantas opções aqui que podem ser realmente impressionantes. Como exemplo, eu corro alguns sistemas com GeoServer e OpenLayers. O GeoServer é atendido pelo Tomcat 7. O front end do OpenLayers / jQuery é atendido pelo Apache2. Você pode incluir o Postgres / PostGIS para armazenar dados vetoriais, mas essa não é uma boa opção para dados rasterizados. Você também pode configurar um sistema Python usando Django ou mesmo web.py (http://webpy.org/) para um controlador bastante simples. O GeoServer permite armazenar dados raster nos seguintes formatos:
Manipulação de eventos
Quando o usuário clica no mapa, você deseja exibir um gráfico de séries temporais dos dados do campo nesse ponto. Primeiro, configure um controlador, que pode ser escrito em Python ou Java, que escute solicitações de URL com latitude e longitude. Esse controlador retorna uma imagem estática renderizada no servidor ou dados json que o cliente (jQuery) pode transformar em um gráfico.
Em seguida, para obter os dados XY no mapa, você pode usar uma função como esta (consulte http://dev.openlayers.org/releases/OpenLayers-2.11/examples/click-handler.html ):
Espero que ajude.
fonte
Se eu entendi corretamente sua pergunta, eu criaria um serviço WMS de horário, por exemplo, com o MapServer .
Dessa forma, será fácil exibir a varredura correta para cada data / hora (com uma solicitação GetMap) e solicitar os valores para uma célula em um determinado intervalo de data / hora (com uma solicitação GetFeatureInfo).
fonte