{"id":15058869,"url":"https://github.com/florinchess/geolocation-api","last_synced_at":"2026-01-02T11:34:09.068Z","repository":{"id":247852544,"uuid":"826513415","full_name":"FlorinChess/geolocation-api","owner":"FlorinChess","description":"Spring Boot RESTful web API that queries geolocation data from openstreetmap.org ","archived":false,"fork":false,"pushed_at":"2024-09-20T13:29:39.000Z","size":189,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-24T22:31:56.856Z","etag":null,"topics":["api-rest","grpc-java","openstreetmap","protobuf","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlorinChess.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-09T21:16:07.000Z","updated_at":"2024-09-20T13:29:43.000Z","dependencies_parsed_at":"2024-08-05T23:26:40.724Z","dependency_job_id":"c86a23c0-c6a6-482c-bc64-9fb96f050896","html_url":"https://github.com/FlorinChess/geolocation-api","commit_stats":null,"previous_names":["florinchess/geolocation-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorinChess%2Fgeolocation-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorinChess%2Fgeolocation-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorinChess%2Fgeolocation-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorinChess%2Fgeolocation-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlorinChess","download_url":"https://codeload.github.com/FlorinChess/geolocation-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219871409,"owners_count":16554408,"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":["api-rest","grpc-java","openstreetmap","protobuf","spring-boot"],"created_at":"2024-09-24T22:31:54.228Z","updated_at":"2026-01-02T11:34:09.006Z","avatar_url":"https://github.com/FlorinChess.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Geolocation API\n\nRESTful web API developed in Java using Spring Boot and gRPC. This project contains three programs:\n\n`backend`: Java console application that queries data from the openstreetmap database and hosts the gRPC server\n\n`middleware`: Spring Boot web API that forwards data from the backend to the user based on the GET request; returns `.json` responses \n\n`frontend`: Static webpage for testing the API endpoints \n\n\n\n## Features\n\n- query amenity information based on type, coordinates, perimeter or openstreetmap ID\n- query road/street/highway information based on coordinates, perimeter or openstreetmap ID\n- query land usage information with a specified area\n- routing between two specified locations based on specified weighting (length or time)\n- draw tiles for graphical representation of maps\n\n\n\n## API Endpoints\n\n\n### `GET  /amenities`\n\nThis request returns amenities within the specified area. The specified area is defined either by a perimeter or a circle drawn around a given point. \n\n**Parameters:**\n- `amenity`: optional, can specify the type of amenity to return, if empty: return all types\n- `bbox.tl.x`,`bbox.tl.y`: top-left of the bounding box to search for\n- `bbox.br.x`,`bbox.br.y`: bottom-right of the bounding box to search for\n- `point.x`, `point.y`: center of the point\n- `point.d`: maximum distance to the point, in meters\n- `take` (default: 50) \n- `skip` (default: 0): optional parameters for paging, take is the limit, skip is how many you need to step over.\n\n\n### `GET /amenities/{id}`\n\nThis request returns information about the amenity with the given openstreetmap ID specified by the path parameter `id`. \n\n**Parameters**: none\n\n\n### `GET /roads`\n\nThis request returns roads within the specified area.\n\n**Parameters:**\n- `road`: optional, can specify the type of road to return, if empty: return all types\n- `bbox.tl.x`, `bbox.tl.y`: top-left of the bounding box to search for\n- `bbox.br.x`, `bbox.br.y`: bottom-right of the bounding box to search for\n- `take` (default: 50)\n- `skip` (default: 0): optional parameters for paging, take is the limit, skip is how many you need to step over.\n\n\n### `GET /roads/{id}`\n\nThis request returns information about the road with the given openstreetmap ID specified by the path parameter `id`.\n\n**Parameters:** None\n\n\n### `GET /tile/{z}/{x}/{y}.png`\n\nThis request returns map tiles as 512 x 512 PNG images for a given map segment as indicated by the path parameters `x`, `y` and `z`.\n\n**Parameters:**\n\n- `layers` (default: `motorway`): comma-separated list of layers to display, these should be drawn in the order specified (the last one is drawn last)\n\n**Layers:**\n\n- `motorway`, `trunk`, `primary`, `secondary`, `road` \n- `forest`, `residential`, `vineyard`, `grass`, `railway`\n- `water` (any entity with the key `water`)\n\n\n### `GET /route`\n\nThis request generates a route from the node with ID `from` to the node with ID `to`.\n\n**Parameters:**\n- `from`: start node ID\n- `to`: end node ID\n- `weighting`: either `time` or `length`, default: `length`\n\n\n### `GET /usage`\n\nThis request returns land usage statistics based on the provided perimeter.\n\n**Parameters:**\n- `bbox.tl.x`, `bbox.tl.y`: top-left of the bounding box to calculate the usage for\n- `bbox.br.x`, `bbox.br.y`: bottom-right of the bounding box to calculate the usage for\n\n\n\n## Third-party libraries and APIs\n\n- [Lombok](https://projectlombok.org/)\n- [gRPC](https://grpc.io/)\n- [protobuf](https://github.com/protocolbuffers/protobuf)\n- [openstreetmap.org](https://www.openstreetmap.org)\n\n## Disclaimer\n\nThis project was built in collaboration with Elena Balent and Michelle Balcos as part of a university course.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorinchess%2Fgeolocation-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorinchess%2Fgeolocation-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorinchess%2Fgeolocation-api/lists"}