Spaces:
Running
Running
LaurentTRIPIED
commited on
Commit
•
c689569
1
Parent(s):
fb72145
Pytorch v.46
Browse files- __pycache__/organisations_engagees.cpython-312.pyc +0 -0
- app.py +20 -25
- localisation.py +19 -19
- organisations_engagees.py +14 -16
__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 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
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("
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
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(
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
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 |
-
|
|
|
6 |
st.markdown("## OPEN DATA RSE")
|
7 |
st.markdown("### Découvrez les organisations engagées RSE de la métropole de Bordeaux")
|
8 |
-
|
9 |
-
|
10 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|