====== 783AA Geospatial Analytics A.A. 2024/25 ====== ===Instructors:=== * **Luca Pappalardo** * [[luca.pappalardo@isti.cnr.it]] * KDD Laboratory, ISTI-CNR, Pisa * [[http://www-kdd.isti.cnr.it]] * **Mirco Nanni** * [[mirco.nanni@isti.cnr.it]] * KDD Laboratory, ISTI-CNR, Pisa * [[http://www-kdd.isti.cnr.it]] ===Tutors:=== * **Giuliano Cornacchia**, PhD student, University of Pisa * **Giovanni Mauro**, PhD student, University of Pisa * **Daniele Gambetta**, PhD student, University of Pisa ===== Hours and Rooms ===== ^ Day of Week ^ Hour ^ Room ^ | Thursday | 14:00 - 16:00 | Room Fib L1 | | Friday | 14:00 - 16:00 | Room Fib C1 | * Beginning of lectures: 21 September 2023 * End of lectures: 7 December 2023 * Possible lessons recovered: 8–15 December 2023 __**The lectures will be only in presence and will NOT be live-streamed**__ ====== News and communications ====== __No lesson__ on November 21st and 22nd **APPELLI**: The dates of the exams are the following (remember to register for the appello in time): * January 16th, 14:00 * February 7th, 09:00 __No lesson__ on October 31st; __No lessons__ on October 10 and 11 (because of the evento "Orientamento studenti") ====== Learning goals ====== The analysis of geographic information, such as those describing human movements, is crucial due to its impact on several aspects of our society, such as disease spreading (e.g., the COVID-19 pandemic), urban planning, well-being, pollution, and more. This course will teach the fundamental concepts and techniques underlying the analysis of geographic and mobility data, presenting data sources (e.g., mobile phone records, GPS traces, geotagged social media posts), data preprocessing techniques, statistical patterns, predicting and generative algorithms, and real-world applications (e.g., diffusion of epidemics, socio-demographics, link prediction in social networks). The course will also provide a practical perspective through the use of advanced geoanalytics Python libraries. The assessment of the course consists of an oral exam, aimed to test the knowledge acquired by the student during the course. Topics: * Spatial Reference Systems * Data formats * Trajectory and Flows * Spatial Tessellations * Open-source tools for geospatial analysis * Digital spatial and mobility data * Preprocessing mobility data * Privacy issues in mobility data * Individual and collective mobility laws * Next-location and flow prediction * Trajectory and flow generation * Applications ===== Module 1: Spatial and Mobility Data Analysis ===== * Fundamentals of Geographical Information Systems * Geographic coordinates systems * Vector data model * Trajectories * Spatial Tessellations * Flows * **Practice**: Python packages for geospatial analysis (Shapely, GeoPandas, folium, scikit-mobility) * Digital spatial and mobility data * Mobile Phone Data * GPS data * Social media data * Other data (POIs, Road Networks, etc.) * **Practice**: reading and exploring spatial and mobility datasets in Python * Preprocessing mobility data * filtering compression * stop detection * trajectory segmentation * trajectory similarity and clustering * **Practice**: data preprocessing with scikit-mobility ===== Module 2: Mobility Patterns and Laws ===== * individual mobility laws/patterns * collective mobility laws/patterns * Practice: analyze mobility data with Python ===== Module 3: Predictive and Generative Models ===== * Prediction * Next-location prediction * Crowd flow prediction * Spatial interpolation * Generation * Trajectory generation * Flow generation * Practice: mobility prediction and generation in Python ===== Module 4: Applications ===== * Urban segregation models * Routing and navigation apps * Traffic simulation with SUMO ====== Calendar ====== ^ ^ Day ^ Topic ^ Slides/Code ^ Material ^ Teacher| |1. |19.09 14:00-16:00| Introduction to the Course | **[slides]** {{ :geospatialanalytics:gsa:00_-_about_the_course_24_25.pdf | About the course}}; **[slides]** {{ :geospatialanalytics:gsa:01_-_introduction_24_25.pdf | Introduction to Geospatial Analytics}} | **[book chapter]** [[ https://archive.org/details/kang-tsung-chang-introduction-to-geographic-information-systems-2019-mc-graw-hill-libgen.lc/page/15/mode/2up | Introduction to geographic information systems]], Chapter 1; **[paper]** [[https://arxiv.org/pdf/1710.00004.pdf | Human Mobility: Models and Applications]], Section 1| Pappalardo | |2. |20.09 14:00-16:00| Fundamental Concepts (theory)| **[slides]** {{ :geospatialanalytics:gsa:02_-_fundamental_concepts_24_25.pdf | Fundamental Concepts}} | **[book chapter]** [[ https://archive.org/details/kang-tsung-chang-introduction-to-geographic-information-systems-2019-mc-graw-hill-libgen.lc/page/15/mode/2up | Introduction to geographic information systems]], Chapter 2 (Coordinate Systems); **[paper]** [[https://arxiv.org/abs/2012.02825 | A survey of deep learning for human mobility]], Section 2.1, Appendix A; [[https://saylordotorg.github.io/text_essentials-of-geographic-information-systems/s08-02-vector-data-models.html | Essentials of Geographic Information Systems,Chapter 4, Section 4.2 (Vector Data Models)]]; **[video]** [[https://www.youtube.com/watch?v=HnWNhyxyUHg | Intro to coordinate systems and UTM projection]] | Pappalardo | |3. |26.09 14:00-16:00| Fundamental Concepts (practice)| **[code]** [[https://github.com/jonpappalord/geospatial_analytics/tree/main/2024/1-%20Fundamental%20Concepts | Introduction to shapely, geopandas, folium, and scikit-mobility]] | **[book chapter]** [[ https://autogis-site.readthedocs.io/en/latest/notebooks/L1/geometric-objects.html | Automating GIS-processes, Lesson 1 (Shapely and geometric objects)]]; **[article]** [[ https://www.learndatasci.com/tutorials/geospatial-data-python-geopandas-shapely/ | Analyze Geospatial Data in Python: GeoPandas and Shapely]]; **[paper]** [[https://www.jstatsoft.org/article/view/v103i04 | scikit-mobility: a Python library for the Analysis, Generation, and Risk Assessment of Mobility Data]], Sections 1, 2; | Mauro | |4. |27.09 14:00-16:00| Spatial Data Analysis I (theory) | **[slides]** {{ :geospatialanalytics:gsa:03_-_spatial_data_analysis_24_25.pdf | Spatial Data Analysis I}} | **[book chapter]** [[ https://archive.org/details/kang-tsung-chang-introduction-to-geographic-information-systems-2019-mc-graw-hill-libgen.lc/page/15/mode/2up | Introduction to geographic information systems]], Sect. 3.1, 3.3, 4.1-4.3, 4.7, 8.5, Chapter 11; **[book chapter]** [[ https://mgimond.github.io/Spatial | Intro to GIS and Spatial Analysis]], Chapter 11, 13; **[book section]** [[ https://doi.org/10.1007/978-0-387-35973-1_446 | Encyclopedia of GIS: Geary’s C]] | Nanni | |5. |03.10 14:00-16:00| Spatial Data Analysis II (theory) | **[slides]** {{ :geospatialanalytics:gsa:03bis_-_spatial_data_analysis_24_25_v1.pdf | Spatial Data Analysis II}} | **[book chapter]** [[ https://archive.org/details/kang-tsung-chang-introduction-to-geographic-information-systems-2019-mc-graw-hill-libgen.lc/page/15/mode/2up | Introduction to geographic information systems]], Chapter 15; **[book chapter]** [[ https://mgimond.github.io/Spatial | Intro to GIS and Spatial Analysis]], Chapter 14; **[book section]** [[ https://sustainability-gis.readthedocs.io/en/latest/ | Spatial data science for sustainable development]], Tutorial 3 (Spatial Regression); **[paper]** [[ https://doi.org/10.1007/s10619-019-07278-7 | Spatial co-location patterns]], Sect. 3.1; **[paper]** [[ https://www.lri.fr/~sebag/Examens/Ester_KDD98.pdf | Trend Detection in Spatial Databases ]], Sect. 4 | Nanni | |6. |04.10 14:00-16:00| Spatial Data Analysis II (practice) | **[code]** [[https://github.com/jonpappalord/geospatial_analytics/tree/main/2024/2-%20Spatial%20Data%20Analysis | Spatial Analysis exercises]] | [[https://pysal.org/pysal/|PySAL: Python Spatial Analysis Library]]; [[https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegressor.html|Scikit-learn KNeighborsRegressor]]; [[https://geostat-framework.readthedocs.io/projects/pykrige/en/stable/|PyKrige]] | Nanni | |7. |17.10 14:00-16:00| Geographic and Mobility data (theory) | **[slides]** {{ :geospatialanalytics:gsa:04-_spatial_and_mobility_data.pdf | Geographic and Mobility Data}} | **[paper]** [[ https://arxiv.org/abs/2012.02825 | A survey of deep learning for human mobility ]], Appendix C.1, C.2, C.3; **[paper]** [[ https://epjdatascience.springeropen.com/articles/10.1140/epjds/s13688-021-00284-9 | Evaluation of home detection algorithms on mobile phone data using individual-level ground truth ]], Section 1 "Introduction", Section 2 "Mobile phone datasets"; **[paper]** [[ https://epjdatascience.springeropen.com/articles/10.1140/epjds/s13688-015-0046-0 | A survey of results on mobile phone datasets analysis ]], Section 1 "Introduction", Section 3 "Adding space - geographical networks"; **[paper]** [[ https://www.kdd.org/exploration_files/June_2019_-_1._Urban_Human_Mobility,_Data_Drive_Modeling_and_Prediction_.pdf | Urban Human Mobility: Data-Driven Modeling and Prediction]], Section 2.2 "Popular Urban Data"; | Pappalardo | |8. | 18.10 14:00-16:00| Geographic and Mobility data (practice) | **[code]** [[https://github.com/jonpappalord/geospatial_analytics/blob/main/2024/3-%20Mobility%20Data/practice_CDR_GPS.ipynb | Exercise: converting a GPS trace into CDR one]] | **[paper]** [[https://www.jstatsoft.org/article/view/v103i04 | scikit-mobility: a Python library for the Analysis, Generation, and Risk Assessment of Mobility Data]], Section 4 "Plotting"; **[video]** [[ https://www.youtube.com/watch?v=FjJZsaHHuvw | scikit-mobility data module]]; **[tutorial]** [[https://geoffboeing.com/2016/11/osmnx-python-street-networks/| OSMnx: Python for Street Networks]]; **[paper]** [[ https://www.sciencedirect.com/science/article/pii/S0198971516303970?via%3Dihub | OSMnx: New methods for acquiring, constructing, analyzing, and visualizing complex street networks]]; **[book chapter]** [[ https://automating-gis-processes.github.io/CSC/notebooks/L3/retrieve_osm_data.html | Intro to Python GIS, Retrieving OpenStreetMap data ]]; | Cornacchia| |9. | 24.10 14:00-16:00| Data Preprocessing (theory) | **[slides]** {{ :geospatialanalytics:gsa:05_-_preprocessing_-_light.pdf |Data Preprocessing}} | **[paper]** [[https://journals.sagepub.com/doi/pdf/10.1177/15501477211050729?download=true|Review and classification of trajectory summarisation algorithms: From compression to segmentation]]; **[paper]** [[http://www2.ipcku.kansai-u.ac.jp/~yasumuro/M_InfoMedia/paper/Douglas73.pdf|Algorithms for the reduction of the number of points required to represent a digitized line or its caricature (Douglas-Peucker)]]; **[paper]** [[https://www.researchgate.net/publication/314207447_A_Trajectory_Segmentation_Map-Matching_Approach_for_Large-Scale_High-Resolution_GPS_Data|A Trajectory Segmentation Map-Matching Approach for Large-Scale, High-Resolution GPS Data]]; **[paper]** [[https://www.ismll.uni-hildesheim.de/lehre/semSpatial-10s/script/6.pdf|Hidden Markov Map Matching Through Noise and Sparseness]] | Cornacchia| |10. | 25.10 14:00-16:00| Data Preprocessing (practice) | **[code]** [[https://github.com/jonpappalord/geospatial_analytics/blob/main/2024/4-%20Preprocessing/practice_preprocessing.ipynb | Exercise: implementing speed-based noise filtering]] | | Cornacchia| |12. | 07.11 14:00-16:00| Individual Mobility Patterns (theory) | **[slides]** {{ :geospatialanalytics:gsa:06_-_individual_models_1_compressed.pdf | Individual mobility patterns}} | **[paper]** [[ https://www.nature.com/articles/nature04292 | The scaling laws of human travel]]; **[paper]** [[ https://www.nature.com/articles/nature06958 | Understanding individual human mobility patterns]]; **[paper]** [[https://arxiv.org/pdf/1710.00004.pdf | Human Mobility: Models and Applications]], Sections 3.1 and 4; **[paper]** [[ https://www.nature.com/articles/ncomms9166 | Returners and Explorers dichotomy in Human Mobility]]; **[paper]** [[ https://barabasi.com/f/310.pdf | Limits of predictability in human mobility]]; **[paper]** [[ https://www.nature.com/articles/nphys1760 | Modelling the scaling properties of human mobility]]; | Pappalardo| |13. | 08.11 14:00-16:00| Individual Mobility Patterns (practice) | {{ :geospatialanalytics:gsa:practice_individual_measures.zip | Practice session on individual measures}} | | Mauro| |14. | 14.11 14:00-16:00| Individual and Collective Mobility models (theory) | {{ :geospatialanalytics:gsa:07_-_mobility_models.pdf | Human Mobility Models}} | **[paper]** [[ https://arxiv.org/abs/1710.00004 |Modelling the scaling properties of human mobility]]; **[paper]** [[https://arxiv.org/pdf/1710.00004.pdf | Human Mobility: Models and Applications]]; **[paper]** [[https://www.nature.com/articles/nature10856|A universal model for mobility and migration patterns]]; **[paper]** [[https://arxiv.org/abs/1506.04889|Systematic comparison of trip distribution laws and models]]: **[paper]** [[https://www.nature.com/articles/s41467-021-26752-4|A Deep Gravity model for mobility flows generation]] | Pappalardo| |15. | 15.11 14:00-16:00| Individual and Collective Mobility models (practice) | {{ :geospatialanalytics:gsa:gravity.zip | Practice session on the Gravity model}}| | Mauro | |16. | 28.11 14:00:16:00| Guest lecture | | | [[ https://www.riccardodiclemente.com/| Riccardo Di Clemente]]| |17. | 29.11 14:00:16:00| Mobility pattern mining | | | Nanni| |18. | 05.12 14:00:16:00| Next-location prediction | | | Nanni | |19. | 06.12 14:00:16:00| Mobility pattern mining and next-location prediction (practice) | | | Cornacchia | ==== Previous Geospatial Analytics websites ==== * [[geospatialanalytics:gsa:gsa2023|]] * [[geospatialanalytics:gsa:gsa2022|]]