balourdos / MemonomenaPeristatika.gr

Μεμονωμένα Περιστατικά αστυνομικής βίας
https://memonomenaperistatika.gr
GNU General Public License v3.0
79 stars 13 forks source link

Map integration #53

Open niklebe opened 3 years ago

niklebe commented 3 years ago

15

  1. Geocoding utility στο φάκελο geocode/ Python script που δέχεται το csv entries, κάνει request στο Geocoding API της google και δίνει συντεταγμένες στις αναφορές βασισμένο στο "Πού συνέβη;", μόνο για τα approved σημεία. Περισσότερες πληροφορίες και ρυθμίσεις στο αρχείο. Δημιουργεί ένα geocode_output.csv με τα αποτελέσματα του fetch, και ένα entries.geojson που είναι ένα γεωγραφικό αρχείο με τα σημεία, το id και την σύντομη περιγραφή τους. Το script μπορεί να τρέχει σα μέρος του generator.

  2. Leaflet map Δύο component, ένα map.js που δημιουργεί απλά ένα div #map, και ένα wrapper mapDynamicWrapper.js για να παρακάμψει το ssr και να δουλέψει το Leaflet. Ο χάρτης έχει δύο στυλ (prop hiqhQuality={true|false}), το true είναι το Mapbox Light, δίνει περισσότερη έμφαση στα σημεία των περιστατικών αλλά χρεώνει μετά τα 200k requests. Το false ειναι φρι από OpenStreetMap. Ο χάρτης φορτώνει το entries.geojson και δημιουργεί markers με tootlip την σύντομη περιγραφή και clusters. Το mapDynamicWrapper εκθέτει props containerStyle για css του τελικού div, highQuality για επιλογή στύλ, onMapReady για να κάνεις κάτι με τον χάρτη όταν είναι loaded, onEntryClick για click event σε markers.

PS: Χρησιμοποιώ στο geocode.py ένα API key από εδώ και ένα στο map.js για το mapbox από εδώ. Τα αφήνω public για λίγο καιρό για testing.

PS 2: Δεν ήξερα πού να βάλω το entries.gejson για να το τραβήξω από το χάρτη, και το έβαλα προσωρινά στο app/public.

Screenshot 2021-03-21 213930 Screenshot 2021-03-21 214120

vercel[bot] commented 3 years ago

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/balourdos/memonomena-peristatika-gr/BCwTFCHjVregWbbSuUvad9WeC4Xa
✅ Preview: https://memonomena-per-git-fork-niklebe-map-integration-ba-0d7760.vercel.app

balourdos commented 3 years ago

Πάρα πολύ ωραίο, ευχαριστούμε πολύ! Δύο πράγματα:

^NK

niklebe commented 3 years ago
karate commented 3 years ago

Πολύ καλή δουλειά @niklebe. Μία παρατήρηση μόνο: φαίνεται ότι όλα τα περιστατικά χωρίς τοποθεσία εμφανίζονται στην Μυτιλίνη.

niklebe commented 3 years ago

Ευχαριστώ!! Ναι δεν ξέρω γιατί έβγαιναν όλα τα άδεια Πού συνέβη στη Μυτιλήνη, αλλά το geocode.py τώρα τα φιλτράρει, οπότε μόνο τα approved entries με τοποθεσία εμφανίζονται στο χάρτη.

Επίσης δοκίμασα να αλλάξω το ",Ομόνοια," σε ",Ομόνοια Αθήνα," και δούλεψε αυτή τη φορά έτσι (χωρίς find/replace στις συντεταγμένες κλπ), οπότε για εύκολο geocoding μπορεί να χρειάζεται λίγο πιο συγκεκριμένη τοποθέτηση στο entries csv.