{"id":19488847,"url":"https://github.com/kraina-ai/srai","last_synced_at":"2025-05-15T13:08:25.344Z","repository":{"id":61666407,"uuid":"548023265","full_name":"kraina-ai/srai","owner":"kraina-ai","description":"Spatial Representations for Artificial Intelligence - a Python library toolkit for geospatial machine learning focused on creating embeddings for downstream tasks","archived":false,"fork":false,"pushed_at":"2025-05-05T20:31:54.000Z","size":7272,"stargazers_count":274,"open_issues_count":95,"forks_count":21,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-05-05T21:37:15.087Z","etag":null,"topics":["artificial-intelligence","data-science","geo","geospatial","machine-learning","python","spatial","spatial-analysis","srai"],"latest_commit_sha":null,"homepage":"https://kraina-ai.github.io/srai/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kraina-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-08T19:28:57.000Z","updated_at":"2025-05-04T20:16:48.000Z","dependencies_parsed_at":"2025-03-04T03:37:34.459Z","dependency_job_id":"a4d34fb3-5a31-4012-80bc-94b2c9d435eb","html_url":"https://github.com/kraina-ai/srai","commit_stats":{"total_commits":213,"total_committers":11,"mean_commits":"19.363636363636363","dds":0.4178403755868545,"last_synced_commit":"0fbfdb71e472d191bc4dabfed01eda9d53104cef"},"previous_names":["kraina-ai/srai","srai-lab/srai"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kraina-ai%2Fsrai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kraina-ai%2Fsrai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kraina-ai%2Fsrai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kraina-ai%2Fsrai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kraina-ai","download_url":"https://codeload.github.com/kraina-ai/srai/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254346624,"owners_count":22055808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-intelligence","data-science","geo","geospatial","machine-learning","python","spatial","spatial-analysis","srai"],"created_at":"2024-11-10T21:05:55.601Z","updated_at":"2025-05-15T13:08:20.306Z","avatar_url":"https://github.com/kraina-ai.png","language":"Python","funding_links":[],"categories":["Python","Geospatial Library"],"sub_categories":["Python"],"readme":"\u003cp align=\"center\"\u003e\r\n  \u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/logos/srai-logo-transparent.png\"\u003e\r\n\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\r\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/kraina-ai/srai?logo=apache\u0026logoColor=%23fff\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/github/checks-status/kraina-ai/srai/main?logo=GitHubActions\u0026logoColor=%23fff\" alt=\"Checks\"\u003e\r\n    \u003ca href=\"https://github.com/kraina-ai/srai/actions/workflows/ci-dev.yml\" target=\"_blank\"\u003e\r\n        \u003cimg alt=\"GitHub Workflow Status - DEV\" src=\"https://img.shields.io/github/actions/workflow/status/kraina-ai/srai/ci-dev.yml?label=build-dev\u0026logo=GitHubActions\u0026logoColor=%23fff\"\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://github.com/kraina-ai/srai/actions/workflows/ci-prod.yml\" target=\"_blank\"\u003e\r\n        \u003cimg alt=\"GitHub Workflow Status - PROD\" src=\"https://img.shields.io/github/actions/workflow/status/kraina-ai/srai/ci-prod.yml?label=build-prod\u0026logo=GitHubActions\u0026logoColor=%23fff\"\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://results.pre-commit.ci/latest/github/kraina-ai/srai/main\" target=\"_blank\"\u003e\r\n        \u003cimg src=\"https://results.pre-commit.ci/badge/github/kraina-ai/srai/main.svg\" alt=\"pre-commit.ci status\"\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://www.codefactor.io/repository/github/kraina-ai/srai\"\u003e\u003cimg alt=\"CodeFactor Grade\" src=\"https://img.shields.io/codefactor/grade/github/kraina-ai/srai?logo=codefactor\u0026logoColor=%23fff\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://app.codecov.io/gh/kraina-ai/srai/tree/main\"\u003e\u003cimg alt=\"Codecov\" src=\"https://img.shields.io/codecov/c/github/kraina-ai/srai?logo=codecov\u0026token=PRS4E02ZX0\u0026logoColor=%23fff\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://pypi.org/project/srai\" target=\"_blank\"\u003e\r\n        \u003cimg src=\"https://img.shields.io/pypi/v/srai?color=%2334D058\u0026label=pypi%20package\u0026logo=pypi\u0026logoColor=%23fff\" alt=\"Package version\"\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://pypi.org/project/srai\" target=\"_blank\"\u003e\r\n        \u003cimg src=\"https://img.shields.io/pypi/pyversions/srai.svg?color=%2334D058\u0026logo=python\u0026logoColor=%23fff\" alt=\"Supported Python versions\"\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://pypi.org/project/srai\" target=\"_blank\"\u003e\r\n        \u003cimg alt=\"PyPI - Downloads\" src=\"https://img.shields.io/pypi/dm/srai\"\u003e\r\n    \u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n# Spatial Representations for Artificial Intelligence\r\n\r\n\u003cp align=\"center\"\u003e⚠️🚧 This library is under HEAVY development. Expect breaking changes between \u003ci\u003eminor\u003c/i\u003e versions 🚧⚠️\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e💬 Feel free to open an issue if you find anything confusing or not working 💬\u003c/p\u003e\r\n\r\nProject **Spatial Representations for Artificial Intelligence** (`srai`) aims to provide simple and efficient solutions to geospatial problems that are accessible to everybody and reusable in various contexts where geospatial data can be used. It is a Python module integrating many geo-related algorithms in a single package with unified API. Please see getting started for installation and quick start instructions.\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://drive.google.com/thumbnail?id=1iyajkX81PLrel-Xmz1lQpYQvePnLoO1U\u0026sz=s1024\"  style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n## Use cases\r\n\r\nIn the current state, `srai` provides the following functionalities:\r\n\r\n* **OSM data download** - downloading OpenStreetMap data for a given area using different sources\r\n* **OSM data processing** - processing OSM data to extract useful information (e.g. road network, buildings, POIs, etc.)\r\n* **GTFS processing** - extracting features from GTFS data\r\n* **Regionalization** - splitting a given area into smaller regions using different algorithms (e.g. Uber's H3[1], Voronoi, etc.)\r\n* **Embedding** - embedding regions into a vector space based on different spatial features, and using different algorithms (eg. hex2vec[2], etc.)\r\n* Utilities for spatial data visualization and processing\r\n\r\nFor future releases, we plan to add more functionalities, such as:\r\n\r\n* **Pre-computed embeddings** - pre-computed embeddings for different regions and different embedding algorithms\r\n* **Full pipelines** - full pipelines for different embedding approaches, pre-configured from `srai` components\r\n* **Image data download and processing** - downloading and processing image data (eg. OSM tiles, etc.)\r\n\r\n### End-to-end examples\r\n\r\nRight now, `srai` provides a toolset for data download and processing sufficient to solve downstream tasks. Please see [this project](https://kraina-ai.github.io/Transfer-learning-approach-to-bicycle-sharing-systems-station-location-planning-using-OpenStreetMap/) by [@RaczeQ](https://github.com/RaczeQ), which predicts Bike Sharing System (BSS) stations' locations for a wide range of cities worldwide.\r\n\r\nFor `srai` integration into full [kedro](https://kedro.org/) pipeline, see [this project](https://github.com/Calychas/highway2vec_remaster/) by [@Calychas](https://github.com/Calychas).\r\n\r\n## Installation\r\n\r\nTo install `srai` simply run:\r\n\r\n```bash\r\npip install srai\r\n```\r\n\r\nThis will install the `srai` package and dependencies required by most of the use cases. There are several optional dependencies that can be installed to enable additional functionality. These are listed in the [optional dependencies](#optional-dependencies) section.\r\n\r\n### Optional dependencies\r\n\r\nThe following optional dependencies can be installed to enable additional functionality:\r\n\r\n* `srai[all]` - all optional dependencies\r\n* `srai[osm]` - dependencies required to download OpenStreetMap data\r\n* `srai[voronoi]` - dependencies to use Voronoi-based regionalization method\r\n* `srai[gtfs]` - dependencies to process GTFS data\r\n* `srai[plotting]` - dependencies to plot graphs and maps\r\n* `srai[torch]` - dependencies to use torch-based embedders\r\n\r\n## Tutorial\r\n\r\nFor a full tutorial on `srai` and geospatial data in general visit the [srai-tutorial](https://github.com/kraina-ai/srai-tutorial) repository. It contains easy to follow jupyter notebooks concentrating on every part of the library. Additionally, there is [a recording](https://www.youtube.com/watch?v=JlyPh_AdQ8E) available from the EuroScipy 2023 conference covering that material.\r\n\r\n## Usage\r\n\r\nIf you prefer an interactive notebook, examples of `srai` usage are available in this [Colab Notebook](https://colab.research.google.com/drive/17z2OYZG82FZNRK86Kt-eSgbJn9m7meSH?usp=sharing)\r\n\r\n### Downloading OSM data\r\n\r\nTo download OSM data for a given area, using a set of tags use one of `OSMLoader` classes:\r\n\r\n* `OSMOnlineLoader` - downloads data from OpenStreetMap API using [osmnx](https://github.com/gboeing/osmnx) - this is faster for smaller areas or tags counts\r\n* `OSMPbfLoader` - loads data from automatically downloaded PBF file from [protomaps](https://protomaps.com/) - this is faster for larger areas or tags counts\r\n\r\nExample with `OSMOnlineLoader`:\r\n\r\n```python\r\nfrom srai.loaders import OSMOnlineLoader\r\nfrom srai.plotting import plot_regions\r\nfrom srai.regionalizers import geocode_to_region_gdf\r\n\r\nquery = {\"leisure\": \"park\"}\r\narea = geocode_to_region_gdf(\"Wrocław, Poland\")\r\nloader = OSMOnlineLoader()\r\n\r\nparks_gdf = loader.load(area, query)\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0)\"], tiles_style=\"CartoDB positron\")\r\nparks_gdf.explore(m=folium_map, color=\"forestgreen\")\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/downloading_osm_data.jpg\"  style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n### Downloading road network\r\n\r\nRoad network downloading is a special case of OSM data downloading. To download road network for a given area, use `OSMWayLoader` class:\r\n\r\n```python\r\nfrom srai.loaders import OSMNetworkType, OSMWayLoader\r\nfrom srai.plotting import plot_regions\r\nfrom srai.regionalizers import geocode_to_region_gdf\r\n\r\narea = geocode_to_region_gdf(\"Utrecht, Netherlands\")\r\nloader = OSMWayLoader(OSMNetworkType.BIKE)\r\n\r\nnodes, edges = loader.load(area)\r\n\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0.1)\"], tiles_style=\"CartoDB positron\")\r\nedges[[\"geometry\"]].explore(m=folium_map, color=\"seagreen\")\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/downloading_road_network_data.jpg\" style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n### Downloading GTFS data\r\n\r\nTo extract features from GTFS use `GTFSLoader`. It will extract trip count and available directions for each stop in 1h time windows.\r\n\r\n```python\r\nfrom pathlib import Path\r\n\r\nfrom srai.loaders import GTFSLoader, download_file\r\nfrom srai.plotting import plot_regions\r\nfrom srai.regionalizers import geocode_to_region_gdf\r\n\r\narea = geocode_to_region_gdf(\"Vienna, Austria\")\r\ngtfs_file = Path(\"vienna_gtfs.zip\")\r\ndownload_file(\"https://transitfeeds.com/p/stadt-wien/888/latest/download\", gtfs_file.as_posix())\r\nloader = GTFSLoader()\r\n\r\nfeatures = loader.load(gtfs_file)\r\n\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0.1)\"], tiles_style=\"CartoDB positron\")\r\nfeatures[[\"trips_at_8\", \"geometry\"]].explore(\"trips_at_8\", m=folium_map)\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/downloading_gtfs_data.jpg\" style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n### Regionalization\r\n\r\nRegionalization is a process of dividing a given area into smaller regions. This can be done in a variety of ways:\r\n\r\n* `H3Regionalizer` - regionalization using [Uber's H3 library](https://github.com/uber/h3)\r\n* `S2Regionalizer` - regionalization using [Google's S2 library](https://github.com/google/s2geometry)\r\n* `VoronoiRegionalizer` - regionalization using Voronoi diagram\r\n* `AdministativeBoundaryRegionalizer` - regionalization using administrative boundaries\r\n\r\nExample:\r\n\r\n```python\r\nfrom srai.regionalizers import H3Regionalizer, geocode_to_region_gdf\r\n\r\narea = geocode_to_region_gdf(\"Berlin, Germany\")\r\nregionalizer = H3Regionalizer(resolution=7)\r\n\r\nregions = regionalizer.transform(area)\r\n\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0.1)\"], tiles_style=\"CartoDB positron\")\r\nplot_regions(regions_gdf=regions, map=folium_map)\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/regionalization.jpg\" style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n### Embedding\r\n\r\nEmbedding is a process of mapping regions into a vector space. This can be done in a variety of ways:\r\n\r\n* `Hex2VecEmbedder` - embedding using hex2vec[1] algorithm\r\n* `GTFS2VecEmbedder` - embedding using GTFS2Vec[2] algorithm\r\n* `CountEmbedder` - embedding based on features counts\r\n* `ContextualCountEmbedder` - embedding based on features counts with neighbourhood context (proposed in [3])\r\n* `Highway2VecEmbedder` - embedding using Highway2Vec[4] algorithm\r\n\r\nAll of those methods share the same API. All of them require results from `Loader` (load features), `Regionalizer` (split area into regions) and `Joiner` (join features to regions) to work. An example using `CountEmbedder`:\r\n\r\n```python\r\nfrom srai.embedders import CountEmbedder\r\nfrom srai.joiners import IntersectionJoiner\r\nfrom srai.loaders import OSMOnlineLoader\r\nfrom srai.plotting import plot_regions, plot_numeric_data\r\nfrom srai.regionalizers import H3Regionalizer, geocode_to_region_gdf\r\n\r\nloader = OSMOnlineLoader()\r\nregionalizer = H3Regionalizer(resolution=9)\r\njoiner = IntersectionJoiner()\r\n\r\nquery = {\"amenity\": \"bicycle_parking\"}\r\narea = geocode_to_region_gdf(\"Malmö, Sweden\")\r\nfeatures = loader.load(area, query)\r\nregions = regionalizer.transform(area)\r\njoint = joiner.transform(regions, features)\r\n\r\nembedder = CountEmbedder()\r\nembeddings = embedder.transform(regions, features, joint)\r\n\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0.1)\"], tiles_style=\"CartoDB positron\")\r\nplot_numeric_data(regions, \"amenity_bicycle_parking\", embeddings, map=folium_map)\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/embedding_count_embedder.jpg\" style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n`CountEmbedder` is a simple method, which does not require fitting. Other methods, such as `Hex2VecEmbedder` or `GTFS2VecEmbedder` require fitting and can be used in a similar way to `scikit-learn` estimators:\r\n\r\n```python\r\nfrom srai.embedders import Hex2VecEmbedder\r\nfrom srai.joiners import IntersectionJoiner\r\nfrom srai.loaders import OSMPbfLoader\r\nfrom srai.loaders.osm_loaders.filters import HEX2VEC_FILTER\r\nfrom srai.neighbourhoods.h3_neighbourhood import H3Neighbourhood\r\nfrom srai.regionalizers import H3Regionalizer, geocode_to_region_gdf\r\nfrom srai.plotting import plot_regions, plot_numeric_data\r\n\r\nloader = OSMPbfLoader()\r\nregionalizer = H3Regionalizer(resolution=11)\r\njoiner = IntersectionJoiner()\r\n\r\narea = geocode_to_region_gdf(\"City of London\")\r\nfeatures = loader.load(area, HEX2VEC_FILTER)\r\nregions = regionalizer.transform(area)\r\njoint = joiner.transform(regions, features)\r\n\r\nembedder = Hex2VecEmbedder()\r\nneighbourhood = H3Neighbourhood(regions_gdf=regions)\r\n\r\nembedder = Hex2VecEmbedder([15, 10, 3])\r\n\r\n# Option 1: fit and transform\r\n# embedder.fit(regions, features, joint, neighbourhood, batch_size=128)\r\n# embeddings = embedder.transform(regions, features, joint)\r\n\r\n# Option 2: fit_transform\r\nembeddings = embedder.fit_transform(regions, features, joint, neighbourhood, batch_size=128)\r\n\r\nfolium_map = plot_regions(area, colormap=[\"rgba(0,0,0,0.1)\"], tiles_style=\"CartoDB positron\")\r\nplot_numeric_data(regions, 0, embeddings, map=folium_map)\r\n```\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/kraina-ai/srai/main/docs/assets/images/embedding_hex2vec_embedder.jpg\" style=\"max-width:600px;width:100%\"/\u003e\r\n\u003c/p\u003e\r\n\r\n### Pre-trained models usage\r\n\r\nWe provide pre-trained models for some of the embedding methods. To use them, simply download them from [here](https://drive.google.com/drive/folders/14sH33-kNxA0q1O1abPWTpuix8raR_XbD?usp=drive_link) and load them using `load` method:\r\n\r\n```python\r\nfrom srai.embedders import Hex2VecEmbedder\r\n\r\nmodel_path = \"path/to/model\"\r\nembedder = Hex2VecEmbedder.load(model_path)\r\n```\r\n\r\n### Plotting, utilities and more\r\n\r\nWe also provide utilities for different spatial operations and plotting functions adopted to data formats used in `srai` For a full list of available methods, please refer to the [documentation](https://kraina-ai.github.io/srai).\r\n\r\n## Contributing\r\n\r\nIf you are willing to contribute to `srai`, feel free to do so! Visit [our contributing guide](./CONTRIBUTING.md) for more details.\r\n\r\n## Publications\r\n\r\nSome of the methods implemented in `srai` have been published in scientific journals and conferences.\r\n\r\n1. Szymon Woźniak and Piotr Szymański. 2021. Hex2vec: Context-Aware Embedding H3 Hexagons with OpenStreetMap Tags. In Proceedings of the 4th ACM SIGSPATIAL International Workshop on AI for Geographic Knowledge Discovery (GEOAI '21). Association for Computing Machinery, New York, NY, USA, 61–71. [paper](https://doi.org/10.1145/3486635.3491076), [arXiv](https://arxiv.org/abs/2111.00970)\r\n2. Piotr Gramacki, Szymon Woźniak, and Piotr Szymański. 2021. Gtfs2vec: Learning GTFS Embeddings for comparing Public Transport Offer in Microregions. In Proceedings of the 1st ACM SIGSPATIAL International Workshop on Searching and Mining Large Collections of Geospatial Data (GeoSearch'21). Association for Computing Machinery, New York, NY, USA, 5–12. [paper](https://doi.org/10.1145/3486640.3491392), [arXiv](https://arxiv.org/abs/2111.00960)\r\n3. Kamil Raczycki and Piotr Szymański. 2021. Transfer learning approach to bicycle-sharing systems' station location planning using OpenStreetMap data. In Proceedings of the 4th ACM SIGSPATIAL International Workshop on Advances in Resilient and Intelligent Cities (ARIC '21). Association for Computing Machinery, New York, NY, USA, 1–12. [paper](https://doi.org/10.1145/3486626.3493434), [arXiv](https://arxiv.org/abs/2111.00990)\r\n4. Kacper Leśniara and Piotr Szymański. 2022. Highway2vec: representing OpenStreetMap microregions with respect to their road network characteristics. In Proceedings of the 5th ACM SIGSPATIAL International Workshop on AI for Geographic Knowledge Discovery (GeoAI '22). Association for Computing Machinery, New York, NY, USA, 18–29. [paper](https://doi.org/10.1145/3557918.3565865), [arXiv](https://arxiv.org/abs/2304.13865)\r\n5. Daniele Donghi and Anne Morvan. 2023. GeoVeX: Geospatial Vectors with Hexagonal Convolutional Autoencoders. In Proceedings of the 6th ACM SIGSPATIAL International Workshop on AI for Geographic Knowledge Discovery (GeoAI '23). Association for Computing Machinery, New York, NY, USA, 3–13. [paper](https://doi.org/10.1145/3615886.3627750)\r\n\r\n## Acknowledgements\r\n\r\nWe would like to thank Piotr Szymański PhD \\([@niedakh](https://twitter.com/niedakh)\\) for his invaluable guidance and support in the development of this library. His expertise and mentorship have been instrumental in shaping the library's design and functionality, and we are very grateful for his input.\r\n\r\n## Citation\r\n\r\nIf you wish to cite the SRAI library, please use our [paper](https://arxiv.org/abs/2310.13098)\r\n\r\n```bibtex\r\n@inproceedings{\r\n  Gramacki_SRAI_Towards_Standardization_2023,\r\n  author = {\r\n    Gramacki, Piotr and\r\n    Leśniara, Kacper and\r\n    Raczycki, Kamil and\r\n    Woźniak, Szymon and\r\n    Przymus, Marcin and\r\n    Szymański, Piotr\r\n  },\r\n  booktitle = {Proceedings of the 6th ACM SIGSPATIAL International Workshop on AI for Geographic Knowledge Discovery},\r\n  month = nov,\r\n  publisher = {Association for Computing Machinery},\r\n  title = {{SRAI: Towards Standardization of Geospatial AI}},\r\n  url = {https://dl.acm.org/doi/10.1145/3615886.3627740},\r\n  year = {2023}\r\n}\r\n```\r\n\r\n## License\r\n\r\nThis library is licensed under the [Apache License 2.0](https://github.com/kraina-ai/srai/blob/main/LICENSE.md).\r\n\r\nThe free [OpenStreetMap](https://www.openstreetmap.org/) data, which is used for the development of SRAI, is licensed under the [Open Data Commons Open Database License](https://opendatacommons.org/licenses/odbl/) (ODbL) by the [OpenStreetMap Foundation](https://osmfoundation.org/) (OSMF).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkraina-ai%2Fsrai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkraina-ai%2Fsrai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkraina-ai%2Fsrai/lists"}