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 high-level 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
.
pip install streetlevel
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 is available at streetlevel.readthedocs.io.
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 |
๐ฐ๐ท 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 | |
Find panoramas by slippy map tile or bounding box | โ2 | โ2 | โซ | โ3 | โซ | โซ | โซ | โซ | |
Get specific panorama by ID | โ | โซ | โ | โ | โ | โ | โ | โ | |
Imagery The type of imagery returned by the service. |
|||||||||
Download panoramas | โ | โ4 | โ | โ | โ | โ | โ | โ | |
Download depth information | โ5 | โ | โซ | โซ | โ | โ5 | โซ |
โซ |
|
Image projection | Equirectangular | ??? | Equirectangular | Cubemap | Equirectangular | Cubemap | Equirectangular | Cubemap | |
Image format | JPEG | HEIC | 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 | โ7 | โ |
โ7 | |
Elevation | โ | โ | โซ | โ | โซ | โ | โ | โซ | |
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