Skip to main content

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.0 configurable)
  • 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.0 configurable)
  • Weather: GET /weather/currentConditions/json (api-version: 1.1 configurable)
  • Traffic: GET /traffic/flowSegment/relative/json (api-version: 1.0 configurable)

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abs_geolocation_core-0.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abs_geolocation_core-0.2.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

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

Hashes for abs_geolocation_core-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8de951b4385469696190c504af7795c95991e3df72deffd61a9102249013985d
MD5 6b22c47438afe60060c5167effb6f49d
BLAKE2b-256 9024a9ba76531c97571e3fb34fcab5149837718ef582db070cbab3a0264dafe6

See more details on using hashes here.

File details

Details for the file abs_geolocation_core-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for abs_geolocation_core-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5128c0601892b9c2055fb46ff81d0292983aacc555bc3012c693727e60731c83
MD5 808305db731a3c5ebffa058551307710
BLAKE2b-256 a5e0cc50715acfe3a99a451fdfee2d87a9a6fbc4808f5cb1404679b63c2c6b95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page