LaurentTRIPIED commited on
Commit
c689569
1 Parent(s): fb72145

Pytorch v.46

Browse files
__pycache__/organisations_engagees.cpython-312.pyc CHANGED
Binary files a/__pycache__/organisations_engagees.cpython-312.pyc and b/__pycache__/organisations_engagees.cpython-312.pyc differ
 
app.py CHANGED
@@ -1,36 +1,31 @@
1
-
2
- import requests
3
  import streamlit as st
 
 
 
 
4
  from organisations_engagees import display_organisations_engagees
5
  from localisation import display_map
6
 
 
7
  def get_data():
8
  url = "https://opendata.bordeaux-metropole.fr/api/records/1.0/search/?dataset=met_etablissement_rse&q=&rows=100"
9
- try:
10
- response = requests.get(url)
11
- if response.status_code == 200:
12
- data = response.json().get('records', [])
13
- cleaned_data = [{'nom': record['fields'].get('nom'),
14
- 'adresse': record['fields'].get('adresse'),
15
- 'engagement_rse': record['fields'].get('rse', 'Non'),
16
- 'lat': record['fields'].get('geo_point_2d', [None, None])[0],
17
- 'lon': record['fields'].get('geo_point_2d', [None, None])[1]}
18
- for record in data if 'geo_point_2d' in record['fields']]
19
- return cleaned_data
20
- except requests.RequestException as e:
21
- print(f"Erreur lors de la récupération des données : {e}")
22
- return []
23
 
 
24
  def main():
25
- st.title("Application RSE Bordeaux Métropole")
26
-
27
- data = get_data()
 
 
 
 
28
 
29
- if data:
30
- display_organisations_engagees(data)
31
- display_map(data)
32
- else:
33
- st.write("Aucune donnée disponible pour le moment.")
34
-
35
  if __name__ == "__main__":
36
  main()
 
 
 
1
  import streamlit as st
2
+ import pandas as pd
3
+ import requests
4
+ import folium
5
+ from streamlit_folium import folium_static
6
  from organisations_engagees import display_organisations_engagees
7
  from localisation import display_map
8
 
9
+ # Fonction pour récupérer les données de l'API
10
  def get_data():
11
  url = "https://opendata.bordeaux-metropole.fr/api/records/1.0/search/?dataset=met_etablissement_rse&q=&rows=100"
12
+ response = requests.get(url)
13
+ if response.status_code == 200:
14
+ data = response.json()
15
+ records = data.get("records", [])
16
+ return [record["fields"] for record in records], data.get("nhits", 0)
17
+ else:
18
+ return [], 0
 
 
 
 
 
 
 
19
 
20
+ # Main function orchestrating the app UI
21
  def main():
22
+ st.sidebar.title("Navigation")
23
+ app_mode = st.sidebar.radio("Choisissez l'onglet", ["Organisations engagées", "Localisations"])
24
+
25
+ if app_mode == "Organisations engagées":
26
+ display_organisations_engagees()
27
+ elif app_mode == "Localisations":
28
+ display_map()
29
 
 
 
 
 
 
 
30
  if __name__ == "__main__":
31
  main()
localisation.py CHANGED
@@ -3,25 +3,25 @@ import folium
3
  from streamlit_folium import folium_static
4
  import streamlit as st
5
 
6
- def display_map(data):
7
- if not data:
8
- st.write("No data available to display on the map.")
9
- return
10
-
11
- # Initialiser la carte au centre de Bordeaux
12
- m = folium.Map(location=[44.837789, -0.57918], zoom_start=12)
13
-
14
- for item in data:
15
- lat, lon = item.get("lat"), item.get("lon")
16
- # Assurez-vous que lat et lon sont des flottants
17
- if lat and lon:
18
- folium.Marker(
19
- [float(lat), float(lon)],
20
- popup=item.get("name", "Inconnu"),
21
- icon=folium.Icon(color="green", icon="leaf"),
22
- ).add_to(m)
23
-
24
- folium_static(m)
25
 
26
  if __name__ == "__main__":
27
  data = get_data()
 
3
  from streamlit_folium import folium_static
4
  import streamlit as st
5
 
6
+ def display_map():
7
+ data, _ = get_data()
8
+ if data:
9
+ m = folium.Map(location=[44.84474, -0.60711], zoom_start=12)
10
+ for item in data:
11
+ try:
12
+ # Supposons que 'point_geo' est une liste [lat, lon]
13
+ point_geo = item.get('point_geo', [])
14
+ if point_geo:
15
+ # Extraction de lat et lon par indexation de la liste, en supposant l'ordre correct [lat, lon]
16
+ lat, lon = point_geo
17
+ lat, lon = float(lat), float(lon)
18
+ # Vérification que lat et lon sont valides
19
+ if lat and lon:
20
+ folium.Marker([lat, lon], popup=item.get("nom_courant_denomination", "Sans nom")).add_to(m)
21
+ except (ValueError, TypeError, IndexError):
22
+ # Gestion des erreurs pour la conversion en float, format de données inattendu, ou index manquant
23
+ continue
24
+ folium_static(m)
25
 
26
  if __name__ == "__main__":
27
  data = get_data()
organisations_engagees.py CHANGED
@@ -2,23 +2,21 @@
2
  import streamlit as st
3
  import pandas as pd
4
 
5
- def display_organisations_engagees(data):
 
6
  st.markdown("## OPEN DATA RSE")
7
  st.markdown("### Découvrez les organisations engagées RSE de la métropole de Bordeaux")
8
-
9
- if not data:
10
- st.write("No data available.")
11
- else:
12
- # Supposons que les données sont une liste de dictionnaires, où chaque dictionnaire contient des informations sur une organisation
13
  df = pd.DataFrame(data)
14
- st.dataframe(df)
 
 
 
 
 
 
 
 
15
 
16
- if __name__ == "__main__":
17
- # Pour tester, nous passerons un ensemble de données fictives, car nous ne pouvons pas exécuter Streamlit ici
18
- # Voici un exemple de structure de données attendue
19
- test_data = [
20
- {'nom': 'Entreprise A', 'adresse': 'Adresse A', 'engagement_rse': 'Oui'},
21
- {'nom': 'Entreprise B', 'adresse': 'Adresse B', 'engagement_rse': 'Non'},
22
- # Ajouter plus de données fictives si nécessaire
23
- ]
24
- display_organisations_engagees(test_data)
 
2
  import streamlit as st
3
  import pandas as pd
4
 
5
+ # Fonction pour l'onglet "Organisations engagées"
6
+ def display_organisations_engagees():
7
  st.markdown("## OPEN DATA RSE")
8
  st.markdown("### Découvrez les organisations engagées RSE de la métropole de Bordeaux")
9
+
10
+ data, _ = get_data()
11
+ if data:
 
 
12
  df = pd.DataFrame(data)
13
+ df = df.rename(columns={
14
+ "nom_courant_denomination": "Nom",
15
+ "commune": "Commune",
16
+ "libelle_section_naf": "Section NAF",
17
+ "tranche_effectif_entreprise": "Effectif",
18
+ "action_rse": "Action RSE"
19
+ })
20
+ df = df[["Nom", "Commune", "Section NAF", "Effectif", "Action RSE"]]
21
+ st.dataframe(df, width=None, height=None)
22