osmapi.capabilities

Capabilities and miscellaneous operations for the OpenStreetMap API.

 1"""
 2Capabilities and miscellaneous operations for the OpenStreetMap API.
 3"""
 4
 5from typing import Any, TYPE_CHECKING, cast
 6from xml.dom.minidom import Element
 7
 8from . import dom, parser
 9
10if TYPE_CHECKING:
11    from .OsmApi import OsmApi
12
13
14class CapabilitiesMixin:
15    """Mixin providing capabilities and misc operations with pythonic method names."""
16
17    def capabilities(self: "OsmApi") -> dict[str, dict[str, Any]]:
18        """
19        Returns the API capabilities as a dict.
20
21        The capabilities can be used by a client to
22        gain insights of the server in use.
23        """
24        uri = "/api/capabilities"
25        data = self._session._get(uri)
26
27        api_element = cast(Element, dom.OsmResponseToDom(data, tag="api", single=True))
28        result: dict[str, Any] = {}
29        for elem in api_element.childNodes:
30            if elem.nodeType != elem.ELEMENT_NODE:
31                continue
32            result[elem.nodeName] = {}
33            for k, v in elem.attributes.items():
34                try:
35                    result[elem.nodeName][k] = float(v)
36                except Exception:
37                    result[elem.nodeName][k] = v
38        return result
39
40    def map(
41        self: "OsmApi", min_lon: float, min_lat: float, max_lon: float, max_lat: float
42    ) -> list[dict[str, Any]]:
43        """
44        Download data in bounding box.
45
46        Returns list of dict with type and data.
47        """
48        uri = f"/api/0.6/map?bbox={min_lon:f},{min_lat:f},{max_lon:f},{max_lat:f}"
49        data = self._session._get(uri)
50        return parser.parse_osm(data)
class CapabilitiesMixin:
15class CapabilitiesMixin:
16    """Mixin providing capabilities and misc operations with pythonic method names."""
17
18    def capabilities(self: "OsmApi") -> dict[str, dict[str, Any]]:
19        """
20        Returns the API capabilities as a dict.
21
22        The capabilities can be used by a client to
23        gain insights of the server in use.
24        """
25        uri = "/api/capabilities"
26        data = self._session._get(uri)
27
28        api_element = cast(Element, dom.OsmResponseToDom(data, tag="api", single=True))
29        result: dict[str, Any] = {}
30        for elem in api_element.childNodes:
31            if elem.nodeType != elem.ELEMENT_NODE:
32                continue
33            result[elem.nodeName] = {}
34            for k, v in elem.attributes.items():
35                try:
36                    result[elem.nodeName][k] = float(v)
37                except Exception:
38                    result[elem.nodeName][k] = v
39        return result
40
41    def map(
42        self: "OsmApi", min_lon: float, min_lat: float, max_lon: float, max_lat: float
43    ) -> list[dict[str, Any]]:
44        """
45        Download data in bounding box.
46
47        Returns list of dict with type and data.
48        """
49        uri = f"/api/0.6/map?bbox={min_lon:f},{min_lat:f},{max_lon:f},{max_lat:f}"
50        data = self._session._get(uri)
51        return parser.parse_osm(data)

Mixin providing capabilities and misc operations with pythonic method names.

def capabilities(self: osmapi.OsmApi.OsmApi) -> dict[str, dict[str, typing.Any]]:
18    def capabilities(self: "OsmApi") -> dict[str, dict[str, Any]]:
19        """
20        Returns the API capabilities as a dict.
21
22        The capabilities can be used by a client to
23        gain insights of the server in use.
24        """
25        uri = "/api/capabilities"
26        data = self._session._get(uri)
27
28        api_element = cast(Element, dom.OsmResponseToDom(data, tag="api", single=True))
29        result: dict[str, Any] = {}
30        for elem in api_element.childNodes:
31            if elem.nodeType != elem.ELEMENT_NODE:
32                continue
33            result[elem.nodeName] = {}
34            for k, v in elem.attributes.items():
35                try:
36                    result[elem.nodeName][k] = float(v)
37                except Exception:
38                    result[elem.nodeName][k] = v
39        return result

Returns the API capabilities as a dict.

The capabilities can be used by a client to gain insights of the server in use.

def map( self: osmapi.OsmApi.OsmApi, min_lon: float, min_lat: float, max_lon: float, max_lat: float) -> list[dict[str, typing.Any]]:
41    def map(
42        self: "OsmApi", min_lon: float, min_lat: float, max_lon: float, max_lat: float
43    ) -> list[dict[str, Any]]:
44        """
45        Download data in bounding box.
46
47        Returns list of dict with type and data.
48        """
49        uri = f"/api/0.6/map?bbox={min_lon:f},{min_lat:f},{max_lon:f},{max_lat:f}"
50        data = self._session._get(uri)
51        return parser.parse_osm(data)

Download data in bounding box.

Returns list of dict with type and data.