/streetlevel

download panoramas and metadata from Street View, Look Around, and more

Primary LanguagePythonMIT LicenseMIT

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 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.

Installation

pip install streetlevel

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
๐Ÿ‡ฐ๐Ÿ‡ท 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