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.3.0.tar.gz (7.6 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.3.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file abs_geolocation_core-0.3.0.tar.gz.

File metadata

  • Download URL: abs_geolocation_core-0.3.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/24.5.0

File hashes

Hashes for abs_geolocation_core-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c5bf01324c91b0d3522969a5219fcdd2027b5129ad0e99cdbc50f0067f627923
MD5 0d9c06d0ff4a416e5586715c08c8bdda
BLAKE2b-256 6973a26735007fa545c5915874bc9102e16d2fb3867934112b1d025589dc6ece

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for abs_geolocation_core-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 563e4de11b336a7b174ade0b7304c7d905c8ec00505397cd5ac885546a05b18c
MD5 4b6e276b6fca15886fbac393ce6f6ee7
BLAKE2b-256 84bb976edcdfbdada46cd89901d89bacbbc599af104ba6942a935ef309145b56

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