ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
Carte interactive de l’accessibilité universelle au Plateau-Mont-Royal : commerces, logements, stationnement, débarcadères, bâtiments municipaux, toilettes, feux sonores et gains CCU, en couches activ
기타GitHub @gabfortin온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Carte interactive de l’accessibilité universelle au Plateau-Mont-Royal : commerces, logements, stationnement, débarcadères, bâtiments municipaux, toilettes, feux sonores et gains CCU, en couches activables, à partir de données ouvertes et de saisies manuelles.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Carte interactive répertoriant, par couches activables/désactivables :
La barre de recherche (nom ou adresse) ne porte que sur les commerces : elle affiche les résultats correspondants dans un dropdown sous la barre, et filtre les marqueurs commerces affichés sur la carte. Cliquer un résultat centre la carte sur le commerce et ouvre son popup. Cette barre est masquée quand la couche Commerces est désactivée.
Quand on commence une recherche, les autres couches sont désactivées pour ne garder que les commerces sur la carte. On peut les réactiver à la main pendant la recherche.
data/*.json, une couche = un fichierLe chargement des fichiers data/*.json ne fonctionne pas en ouvrant index.html directement (file://). Lancer un petit serveur local :
python3 -m http.server 8000
# puis ouvrir http://localhost:8000
N'importe qui avec un compte GitHub peut proposer un ajout (bâtiment
municipal, commerce, débarcadère, stationnement accessible gratuit,
toilette accessible ou gain CCU) ou une mise à jour d'un item déjà publié
(description, photos) via les
gabarits d'issue. Une fois la soumission révisée
et approuvée (ajout du label pret-a-publier), son intégration dans les
fichiers data/*.json (et le téléchargement des photos dans img/items/)
est automatisée par
.github/workflows/integrer-soumission.yml,
qui ouvre une PR à réviser avant de merger. Le détail de ce pipeline est
dans scripts/integrate_submission.py.
Chaque couche a son fichier dans data/. Voir un exemple existant dans chaque fichier avant d'ajouter une entrée.
Les commerces, bâtiments municipaux, débarcadères, stationnements,
toilettes et gains CCU acceptent un champ optionnel images, une liste
de photos avec leur description, affichées dans le popup :
"images": [
{ "image": "img/items/commerces/mon-slug/1.jpg", "description": "Rampe d'accès à l'entrée principale" }
]
data/commerces.json)Champs calqués sur le format des avis Promo-Accès. Laisser un champ à null (ou l'omettre) si l'avis ne mentionne pas l'info. Les champs booléens (toilettes, animauxAssistance, mainsCourantes, ascenseur, salleEssayage, assistanceAuditive) acceptent aussi la valeur "non-verifie" quand l'avis précise que le point n'a pas pu être vérifié lors de la visite.
{
"id": "identifiant-unique",
"name": "Nom du commerce",
"category": "cafe | bar | restaurant | commerce | friperie | sante | culture | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": {
"level": "accessible | partiellement | non-accessible | inconnu",
"entree": "plain-pied | rampe | marche | inconnu",
"porteAutomatique": true,
"toilettes": true,
"stationnement": false,
"animauxAssistance": true,
"mainsCourantes": true,
"etages": 1,
"ascenseur": true,
"salleEssayage": null,
"mobilierAmovible": true,
"terrasseAccessible": true,
"terminalPaiement": "Bouton, amovible",
"menuNumerique": true,
"assistanceAuditive": true,
"notes": "Détails libres sur l'accessibilité (ex: équipement en panne au moment de la visite)"
},
"source": {
"reviewer": "Promo-Accès",
"date": "AAAA-MM ou AAAA-MM-JJ",
"reviewText": "Extrait de l'avis original",
"reviewUrl": "Lien direct vers l'avis (ex: https://maps.app.goo.gl/...), pas le lien générique du profil"
}
}
data/logements.json){
"id": "identifiant-unique",
"name": "Nom de la résidence",
"type": "locatif | condo | residence",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": { "level": "accessible", "entree": "plain-pied", "ascenseur": true, "notes": "..." },
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": "...", "reviewUrl": null }
}
data/stationnements.json){
"id": "identifiant-unique",
"description": "Description courte (ex: coin de rue)",
"type": "sur-rue | hors-rue",
"address": "Adresse ou intersection",
"lat": 45.0,
"lng": -73.0,
"notes": "Détails libres",
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": "...", "reviewUrl": null }
}
data/debarcaderes.json){
"id": "identifiant-unique",
"description": "Description courte",
"address": "Adresse ou intersection (ou null)",
"lat": 45.0,
"lng": -73.0,
"notes": "Détails libres (ou null)",
"source": null
}
Le lien Street View du popup est construit à partir de lat et lng, rien à ajouter.
data/batiments-municipaux.json)source.url pointe vers la fiche du bâtiment sur montreal.ca et s'affiche comme lien « Source » dans le popup. Le champ optionnel toilette affiche une section « Toilette » distincte dans le popup, séparée des notes générales du bâtiment — utile quand les deux proviennent de sources différentes (ex : fiche de la Ville pour le bâtiment, caractérisation de l'arrondissement pour les toilettes).
{
"id": "identifiant-unique",
"name": "Nom du bâtiment",
"category": "piscine | bibliotheque | parc | arena | centre-sportif | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": { "level": "accessible", "notes": "..." },
"toilette": { "level": "accessible", "notes": "..." },
"source": { "name": "Ville de Montréal", "url": "https://montreal.ca/lieux/...", "date": "AAAA-MM-JJ" }
}
data/toilettes.json){
"id": "identifiant-unique",
"name": "Nom / emplacement de la toilette",
"category": "parc | bibliotheque | centre-communautaire | commerce | edifice-municipal | piscine | arena | centre-sportif | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"horaire": "Ex : « Fermée l'hiver » (ou null)",
"accessibility": { "level": "accessible", "notes": "..." },
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": null, "reviewUrl": null }
}
data/gains-ccu.json)Nom provisoire — sera renommé. Répertorie les gains obtenus en matière d'accessibilité universelle via le processus du comité consultatif d'urbanisme (CCU), rattachés au projet/adresse concerné.
{
"id": "identifiant-unique",
"description": "Titre court du gain (ex : Augmentation du % de logements adaptables exigé)",
"type": "logements-adaptables | acces-rampe | stationnement | toilettes | autre",
"address": "Adresse ou nom du projet concerné",
"lat": 45.0,
"lng": -73.0,
"date": "AAAA-MM (ou null)",
"notes": "Détails du gain obtenu",
"source": { "name": "Contribution communautaire", "url": "Lien vers la résolution du CCU (ou null)", "date": "AAAA-MM-JJ" }
}
data/feux-sonores.json)Généré automatiquement, ne pas éditer à la main. Pour rafraîchir avec les dernières données de la Ville :
python3 scripts/import_feux_sonores.py
data/logements-omhm.json)Généré automatiquement, ne pas éditer à la main (les ajouts manuels vont dans data/logements.json). Pour rafraîchir :
SSL_CERT_FILE=/etc/ssl/cert.pem python3 scripts/import_logements_omhm.py
data/places-handicapes.json)Généré automatiquement, ne pas éditer à la main (les ajouts manuels vont dans data/stationnements.json et data/debarcaderes.json). Pour rafraîchir :
python3 scripts/import_places_handicapes.py
Si Python affiche CERTIFICATE_VERIFY_FAILED (Python de python.org sur macOS), utiliser les certificats du système :
SSL_CERT_FILE=/etc/ssl/cert.pem python3 scripts/import_places_handicapes.py
Activer GitHub Pages sur ce dépôt (Settings → Pages → branche main, dossier /). Le site sera servi statiquement, aucune étape de build requise.