Shared service for the azure maps location service
Project description
abs-geolocation-core
Overview
The abs-geolocation-core package provides a set of utilities powered by Azure Maps for geolocation services. It includes features such as geocoding, reverse geocoding, distance calculations, routing, elevation data, weather information, and traffic data.
Features
- Geocode Address: Get location by address.
- Reverse Geocode: Get address by latitude/longitude.
- Distance Between: Calculate Haversine distance in meters or by road via route.
- Get Route: Determine the route between two or more locations.
- Elevation Along: Retrieve elevation for points or lines.
- Weather At: Get current weather at a location.
- Traffic At: Get traffic flow and relative congestion at a location.
- Nearest By Distance: Find nearest candidates to an origin by straight-line distance.
- Nearest By Drive Distance: Find nearest by driving distance using Route Matrix.
- Nearest By Drive Time: Find nearest by driving time using Route Matrix.
- Nearest Ranked: Rank candidates by time and distance.
- Nearest Ranked With Weather: Rank candidates by time, distance, and weather conditions.
- Nearest Ranked With Weather and Traffic: Rank candidates by time, distance, weather, and traffic conditions.
Installation
To install the package, use the following command:
pip install abs-geolocation-core
Usage
Here is a basic example of how to use the abs-geolocation-core package:
import asyncio
from abs_geolocation_core.location_service import AzureMapsAuth, LocationService
async def main():
auth = AzureMapsAuth(subscription_key="<YOUR_KEY>") # or sas_token_provider=lambda: "sv=...&sig=..."
svc = LocationService(auth)
places = await svc.geocode_address("Mumbai Central, Mumbai")
print(places[0]["position"]) # lat/lon from geocode result
origin = (19.0760, 72.8777) # Mumbai
dest = (18.5204, 73.8567) # Pune
route = await svc.get_route([origin, dest])
print(route["routes"][0]["summary"])
best = await svc.nearest_by_drive_time(origin, [(18.5204, 73.8567), (21.1458, 79.0882)])
print(best)
await svc.aclose()
if __name__ == "__main__":
asyncio.run(main())
API Mapping to Azure Maps
The service maps to the following Azure Maps REST endpoints (host: https://atlas.microsoft.com):
- Search:
GET /search/address/json,GET /search/address/reverse/json,GET /search/fuzzy/json(api-version:1.0configurable) - Route:
GET /route/directions/json(api-version: configurable),POST /route/matrix/sync/json(matrix api-version: configurable) - Elevation:
GET /elevation/point/json,GET /elevation/line/json(api-version:1.0configurable) - Weather:
GET /weather/currentConditions/json(api-version:1.1configurable) - Traffic:
GET /traffic/flowSegment/relative/json(api-version:1.0configurable)
Refer to Azure Maps REST docs for details on parameters and responses:
- Search: [Azure Maps Search REST]
- Route: [Azure Maps Route REST]
- Matrix: [Azure Maps Route Matrix REST]
- Elevation: [Azure Maps Elevation REST]
- Weather: [Azure Maps Weather REST]
- Traffic: [Azure Maps Traffic REST]
Configuration
You can override API versions and timeouts via the LocationService constructor:
svc = LocationService(
AzureMapsAuth(subscription_key="<KEY>"),
api_version_search="1.0",
api_version_route="1.0",
api_version_matrix="2.0",
api_version_elevation="1.0",
api_version_weather="1.1",
api_version_traffic="1.0",
timeout=10.0,
)
For SAS authentication:
svc = LocationService(
AzureMapsAuth(sas_token_provider=lambda: "<SAS_TOKEN>"),
)
Requirements
- Python 3.11 or higher
- Azure Maps services enabled for your resource (Search, Routing, Elevation, Weather, Traffic)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contact
For more information, please contact info@autobridgesystems.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abs_geolocation_core-0.2.0.tar.gz.
File metadata
- Download URL: abs_geolocation_core-0.2.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.12 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8de951b4385469696190c504af7795c95991e3df72deffd61a9102249013985d
|
|
| MD5 |
6b22c47438afe60060c5167effb6f49d
|
|
| BLAKE2b-256 |
9024a9ba76531c97571e3fb34fcab5149837718ef582db070cbab3a0264dafe6
|
File details
Details for the file abs_geolocation_core-0.2.0-py3-none-any.whl.
File metadata
- Download URL: abs_geolocation_core-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.12 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5128c0601892b9c2055fb46ff81d0292983aacc555bc3012c693727e60731c83
|
|
| MD5 |
808305db731a3c5ebffa058551307710
|
|
| BLAKE2b-256 |
a5e0cc50715acfe3a99a451fdfee2d87a9a6fbc4808f5cb1404679b63c2c6b95
|