Este projeto utiliza a API do AIS Stream.IO para capturar informações de navios em tempo real dentro de uma região específica, como latitude e longitude. Caso você seja uma boa alma, e tenha interesse em colaborar, ainda é necessário que seja disponibilizado através de um mapa interativo, o projeto exibe esses dados dinamicamente sem a necessidade de recarregar a página.
- Flask: Framework web para Python.
- Socket.IO: Para comunicação em tempo real entre o frontend e o backend.
- Leaflet.js: Para renderização do mapa interativo.
- WebSockets: Para receber dados em tempo real da API AIS.
- asyncio & eventlet: Para gerenciar tarefas assíncronas e concorrentemente.
- Visualização em tempo real dos navios em uma região especificada utilizando o OpenStreetMap.
- Conexão assíncrona com a API AIS Stream.IO.
- Atualização dinâmica dos navios no mapa sem necessidade de recarregar a página.
- Emissão de informações dos navios (como nome, latitude e longitude) no frontend.
-
Criar uma conta no AIS Stream.IO:
- Acesse o AIS Stream.IO e crie uma conta gratuita.
- Após criar sua conta, gere uma API Key.
-
Instalar as dependências do projeto: Antes de rodar o projeto, instale as dependências necessárias utilizando o
pip:pip install -r requirements.txt
-
Configuração da API Key: Para garantir que sua API Key esteja segura, crie um arquivo
.envna raiz do projeto e adicione a sua chave da seguinte maneira:API_KEY=SuaChaveDaAPI
Nota: O arquivo
.envestá listado no.gitignorepara garantir que a chave não seja compartilhada inadvertidamente.
-
Clone o repositório:
git clone https://github.com/seu-usuario/ais-stream-ship-tracker.git cd ais-stream-ship-tracker -
Crie o ambiente virtual (opcional, mas recomendado):
python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows
-
Instale as dependências:
pip install -r requirements.txt
-
Inicie o servidor Flask:
python app.py
A aplicação estará disponível em http://127.0.0.1:5000.
A proposta é que a interface do usuário exibe um mapa interativo criado com o Leaflet.js. À medida que os dados dos navios são recebidos via WebSocket, novos marcadores são adicionados ao mapa e as informações dos navios são exibidas dinamicamente na tela.
Entretanto, por falta de tempo, apenas o recebimento dos dados via app.py foi concluído.
- app.py: Backend da aplicação Flask que gerencia a conexão com a API AIS Stream.IO e emite dados para o frontend.
- templates/index.html: PROPOSTA: Frontend em HTML que exibe o mapa e os dados dos navios.
- .env: Contém a sua API Key (não incluída no repositório por questões de segurança).
- requirements.txt: Lista das dependências do projeto.
- asyncio
- websockets
- dotenv
- requests
- Leaflet.js (Proposta)
- Erro de API Key: Certifique-se de que a sua chave da API está correta e configurada no arquivo
.env. - Dependências faltando: Verifique se todas as dependências estão instaladas executando
pip install -r requirements.txt. - Problemas com a conexão WebSocket: Se o WebSocket não se conectar, verifique a sua rede e se a API do AIS Stream.IO está funcionando corretamente.
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para mais detalhes.