Minha organização coleta muitos dados de monitoramento ambiental (fluxo de fluxo, química da água etc.), a maioria dos quais está atualmente armazenada no Excel. Eu gostaria de colocar tudo em um banco de dados - provavelmente PostGIS - mas preciso que os dados estejam acessíveis a pessoas sem conhecimento dos princípios da base de dados (sem SQL ou algo assim).
Eu gostaria de ter algum tipo de front-end simples para o meu banco de dados, onde o usuário seleciona uma estação de monitoramento de interesse, tipo variável (por exemplo, concentração de nitrato de fluxo) e um intervalo de tempo. O banco de dados retornaria os dados solicitados no formato csv, que o usuário poderia baixar em seu computador. Em um mundo ideal, o front-end exibia um mapa clicável de todas as estações de monitoramento, mas se for mais fácil, uma lista suspensa de sites disponíveis seria boa para começar. Eu acho que esse front-end provavelmente seria um site, mas não precisa ser.
Quão difícil é isso, por favor, e quais são minhas várias opções? Não sou especialista em banco de dados, mas tenho uma sólida experiência em Desktop GIS e estou feliz em escrever scripts simples em Python e em brincar com os bancos de dados PostGIS, SpatiaLite e ESRI Personal. Eu nunca fiz nenhum desenvolvimento web ou SIG da web, mas estou interessado em aprender.
Passei parte de ontem explorando alguns dos excelentes tutoriais do OpenGeo . Essa abordagem parece promissora e, pelo menos, agora posso ver como exibir meus dados em um site. O que é menos óbvio para mim é como deixo o usuário consultar o banco de dados e obter resultados de volta.
Minha pergunta: que tipo de estrutura de software eu deveria estar pensando em um projeto como esse? por exemplo
PostGIS + GeoServer + Something else?
Que outras opções estão disponíveis que eu deveria pesquisar?
Uma solução simples, mas funcional, seria preferida inicialmente: se eu conseguir montar um protótipo básico, posso usá-lo para justificar passar mais tempo aprendendo a fazer as coisas "corretamente". O código aberto também é um requisito, pois não tenho orçamento para isso até que eu possa provar alguns benefícios.
Muito obrigado!
fonte
Respostas:
Se você já conhece o Python e o SQL, não seria muito difícil criar um site usando uma estrutura da web em python. Dois simples - cherry.py e web.py - vêm à mente. Eu acho que aprender o caminho do mapeador relacional de objetos do Django pode ser mais trabalhoso do que vale a pena.
O Python possui uma biblioteca chamada psycopg2 (http://initd.org/psycopg/, e um tutorial: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) que permite executar consultas facilmente no PostGRESQL / PostGIS. Ele também possui um módulo CSV (http://docs.python.org/library/csv.html) que facilitará a criação de seu CSV a partir dessa consulta.
Como outras pessoas disseram, a criação de um mapa no front end adiciona um monte de complexidade. Você precisará de algo como o OpenLayers para exibir os mapas e algo como o MapServer ou o GeoServer para criar imagens de mapa do seu banco de dados (ou de outras fontes de dados). Provavelmente seria melhor como um segundo passo.
Por enquanto, "tudo" parece que você precisa é de uma página da web: um formulário que permite selecionar quais parâmetros de consulta você deseja. Eles pressionam "enviar", os parâmetros de consulta são enviados ao servidor (o Apache seria uma boa escolha), que executa o script, que consulta o banco de dados, cria um arquivo CSV apropriado e o retorna ao navegador. Fácil como py;)
fonte
GeoDjango
É muito fácil, fácil de configurar e obtém algumas funcionalidades básicas. É Python, pelo menos você está familiarizado com a linguagem. Pode ser um exagero para suas necessidades. Mas, se você quiser expandir o site, terá uma estrutura madura na qual construir.
fonte
Se você não quiser / precisar criar um mapa. Tudo o que você precisa é de um servidor web e linguagem de programação (eu prefiro o Apache porque é fácil de usar e configurar, mas existem outras opções) e depois o Postgres com o PostGIS ou algum outro banco de dados.
Se os arquivos do Excel estiverem bem formatados, a importação dos dados para o banco de dados deve ser simples. Você pode escrever um script que pode gerar as instruções INSERT. As consultas que você descreve soam como gerenciáveis.
Se / quando você quiser fazer a parte do mapeamento, o Apache, o GeoServer e o OpenLayers seriam uma solução simples e gratuita. O GeoServer (como você sabe) pode usar facilmente o PostGIS for WMS ou outro formato de saída. Tudo o que você precisa fazer é adicionar uma loja que se conecte ao PostGIS e, em seguida, adicionar camadas das tabelas no PostGIS.
Outras ferramentas de mapeamento gratuitas que você pode ver seriam o Mapserver e o MapGuide. O MapGuide Open Source faz algumas coisas bem legais, mas é mais complicado e sua documentação está um pouco atrasada.
O MySQL também possui uma extensão espacial, mas não possui tantos recursos e funções espaciais que o PostGIS possui.
Se você conhece Python, eu olhava para o GeoDjango ... Eu não sei muito sobre isso pessoalmente, mas ouvi coisas boas
fonte
Você pode encontrar uma visão geral dos problemas de design e desenvolvimento de aplicativos de mapeamento da Web, além do código fonte totalmente documentado para um aplicativo de mapeamento da Web ambiental baseado no Google Maps e no banco de dados espaço-temporal PostgreSQL / PostGIS, em minha dissertação de mestrado relativamente recente em Ciência da Computação: " Projeto e desenvolvimento de um protótipo para gerenciamento, análise e entrega de dados vetoriais espaço-temporais ambientais usando a tecnologia Open Source. Estrutura geral e estudo de caso focado no gerenciamento de águas subterrâneas em uma área costeira "
A dissertação pode ser baixada em http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf
fonte