streetlevel
streetlevel is a library for downloading panoramas and metadata from street-level imagery services such as Google Street View, Apple Look Around, and several others. It provides a simple abstraction over the internal APIs of the supported services – this means that no API keys are required, but the library may break unexpectedly.
(Nearly) all functions are available as either a sync function using requests or an async function
using aiohttp, requiring a ClientSession.
Installation
streetlevel is available on PyPI:
pip install streetlevel
macOS users may need to install additional dependencies:
brew install gettext
brew install inih
Example
Downloading the closest Google Street View panorama to a specific location, sync:
from streetlevel import streetview
pano = streetview.find_panorama(46.883958, 12.169002)
streetview.download_panorama(pano, f"{pano.id}.jpg")
Or async:
from streetlevel import streetview
from aiohttp import ClientSession
async with ClientSession() as session:
pano = await streetview.find_panorama_async(46.883958, 12.169002, session)
await streetview.download_panorama_async(pano, f"{pano.id}.jpg", session)
Documentation
Documentation is available at streetlevel.readthedocs.io.
Functionality overview
Services covering multiple countries are on the left; services covering one specific country are on the right.
✔ implemented / available; 🟡 partially implemented; ❌ not implemented; ⚫ not available / not applicable
| Google Street View |
Apple Look Around |
Yandex Panorama |
Bing Streetside |
🇨🇳 Baidu Panorama |
🇰🇷 Kakao Road View |
🇰🇷 Naver Street View |
🇨🇿 Mapy.cz Panorama |
🇮🇸 Já 360 |
||
|---|---|---|---|---|---|---|---|---|---|---|
Finding panoramas How panoramas can be retrieved through the API. |
||||||||||
| Find panoramas around a point | ✔1 | ⚫ | ✔1 | ✔ | ✔1 | ✔ | ✔1 | ✔1 | ✔1 | |
| Find panoramas by map tile or bbox | ✔2 | ✔2 | ⚫ | ✔3 | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | |
| Get specific panorama by ID | ✔ | ⚫ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Imagery The type of imagery returned by the service. |
||||||||||
| Panoramas | ✔ | ✔4 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
| Depth | ✔5 | ❌ | ⚫ | ⚫ | ❌?10 | ✔ | ✔14 | ⚫ |
⚫ |
|
| Image projection | Equirectangular | ??? | Equirectangular | Cubemap | Equirectangular | Equirectangular | Equirectangular/Cubemap13 | Equirectangular | Cubemap | |
| Image format | JPEG | HEIC | JPEG | JPEG | JPEG | JPEG | JPEG | JPEG | JPEG | |
Available metadata Metadata returned by the API of the service alongside ID and location. |
||||||||||
| Capture date | ✔6 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔9 | |
| Heading, pitch, roll | ✔ | ✔ | ✔7 | ✔ | ✔ | ✔7 | ✔11 | ✔ | ✔7 | |
| Elevation | ✔ | ✔ | ⚫ | ✔ | ✔ | ⚫ | ⚫12 | ✔ | ⚫ | |
| Nearby / linked panoramas | ✔ | ⚫ | ✔ | ✔8 | ✔ | ✔ | ✔ | ✔ | ✔ | |
| Historical panoramas | ✔ | ⚫ | ✔ | ⚫ | ✔ | ✔ | ✔ | ✔ | ⚫ | |
| Address | ✔ | ⚫ | ✔ | ⚫ | ⚫ | ✔ | ✔ | ⚫ | ✔ | |
| PoIs | ✔ | ❌ | ✔ | ⚫ | ⚫ | ❌ | ❌ | ⚫ | ⚫ | |
| Creator | ✔ | ⚫ | ✔ | ⚫ | ✔ | ⚫ | ⚫ | ✔ | ⚫ | |
1: Returns closest only
2: Tile, z=17
3: Bounding box
4: Unstitched
5: Appears to be a synthetic depth map created from elevation data and building footprints
6: Month and year only for official coverage, full date for inofficial coverage
7: Only heading; pitch/roll do not appear to be available
8: Previous and next image in sequence
9: Month and year only
10: There is a has_depth field in the raw metadata, but I've yet to find a panorama that actually has depth
11: Pitch/roll are only available for the new 3D imagery
12: Camera altitude is available, however
13: 3D imagery panos have both an equirectangular and a cubemap version; everything else is only available as cubemap
14: Non-3D imagery appears to use a synthetic depthmap created from elevation data and building footprints
Metadata
Release files for streetlevel 0.12.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| streetlevel-0.12.12.tar.gz | 123.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| streetlevel-0.12.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 217.9 kB
Release files / streetlevel-0.12.12.tar.gz
| Download URL | streetlevel-0.12.12.tar.gz |
|---|---|
| Size | 123.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19dd167528cd045ca254bf90171435b5dbcd6a1fc3f263750c70f6b292c3904f
|
|
BLAKE2b-256 checksum How to use checksums |
c43295f7140cc0364c4d1a245a4f161ba7c1b87392cfe7953410b861406b3af6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / streetlevel-0.12.12-py3-none-any.whl
| Download URL | streetlevel-0.12.12-py3-none-any.whl |
|---|---|
| Size | 94.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87b6137a86e47f43e3c661b6f10e4569cbf1188ceaa77c1464e963528ce078b3
|
|
BLAKE2b-256 checksum How to use checksums |
776106a892ec20091be5174b3b9ebf93cc950bb063d87cf7abcab24f97325ace
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|