{"id":50132086,"url":"https://github.com/OvertureMaps/overturemaps-py","last_synced_at":"2026-06-26T14:00:44.881Z","repository":{"id":232466897,"uuid":"782550109","full_name":"OvertureMaps/overturemaps-py","owner":"OvertureMaps","description":"Overture's Python CLI","archived":false,"fork":false,"pushed_at":"2026-06-25T15:38:52.000Z","size":619,"stargazers_count":254,"open_issues_count":5,"forks_count":44,"subscribers_count":64,"default_branch":"main","last_synced_at":"2026-06-25T17:18:05.309Z","etag":null,"topics":["cli","geospatial-analysis","maps","overture-maps"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/overturemaps/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OvertureMaps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-05T14:19:17.000Z","updated_at":"2026-06-23T01:02:53.000Z","dependencies_parsed_at":"2024-04-28T19:33:18.033Z","dependency_job_id":"acbce20f-8ac2-45c2-acd5-bdfcb50c1bda","html_url":"https://github.com/OvertureMaps/overturemaps-py","commit_stats":null,"previous_names":["overturemaps/overturemaps-py"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/OvertureMaps/overturemaps-py","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvertureMaps%2Foverturemaps-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvertureMaps%2Foverturemaps-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvertureMaps%2Foverturemaps-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvertureMaps%2Foverturemaps-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OvertureMaps","download_url":"https://codeload.github.com/OvertureMaps/overturemaps-py/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvertureMaps%2Foverturemaps-py/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34819597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","geospatial-analysis","maps","overture-maps"],"created_at":"2026-05-23T21:00:29.574Z","updated_at":"2026-06-26T14:00:44.875Z","avatar_url":"https://github.com/OvertureMaps.png","language":"Python","funding_links":[],"categories":["Python","Tools and Libraries"],"sub_categories":["Official"],"readme":"[![PyPi](https://img.shields.io/pypi/v/overturemaps.svg)](https://pypi.python.org/pypi/overturemaps)\n\n# overturemaps-py\n\nOfficial Python command-line tool of the [Overture Maps Foundation](https://overturemaps.org)\n\nOverture Maps provides free and open geospatial map data, from many different sources and normalized to a\n[common schema](https://github.com/OvertureMaps/schema). This tool helps to download Overture data\nwithin a region of interest and converts it to a few different file formats. For more information about accessing\nOverture Maps data, see our official documentation site \u003chttps://docs.overturemaps.org\u003e.\n\nNote: This repository and project are experimental. Things are likely change including the user interface\nuntil a stable release, but we will keep the documentation here up-to-date.\n\n## Quick Start\n\nDownload the building footprints for the specific bounding box as GeoJSON and save to a file named \"boston.geojson\"\n\n```bash\noverturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geojson --type=building -o boston.geojson\n```\n\n## Usage\n\n#### `download`\n\nDownload Overture Maps data with an optional bounding box into the specified file format.\nWhen specifying a bounding box, only the minimum data is transferred. The result is streamed out and\ncan handle arbitrarily large bounding boxes.\n\nCommand-line options:\n\n- `--bbox` (optional): west, south, east, north longitude and latitude coordinates. When omitted the\n  entire dataset for the specified type will be downloaded\n- `-f` (required: one of \"geojson\", \"geojsonseq\", \"geoparquet\"): output format\n- `--output`/`-o` (optional): Location of output file. When omitted output will be written to stdout.\n- `--type`/`-t` (required): The Overture map data type to be downloaded. Examples of types are `building`\n  for building footprints, `place` for POI places data, etc. Run `overturemaps download --help` for the\n  complete list of allowed types\n- `--connect_timeout` (optional): Socket connection timeout, in seconds. If omitted, the AWS SDK default value is used (typically 1 second).\n- `--request_timeout` (optional): Socket read timeouts on Windows and macOS, in seconds. If omitted, the AWS SDK default value is used (typically 3 seconds). This option is ignored on non-Windows, non-macOS systems.\n- `--stac/--no-stac` (optional): By default, the reader uses Overture's [STAC catalog](https://stac.overturemaps.org/) to speed up queries to the latest release. If the `--no-stac` flag is present, the CLI will use the S3 path for the latest release directly.\n\nThis downloads data directly from Overture's S3 bucket without interacting with any other servers.\nBy including bounding box extents on each row in the Overture distribution, the underlying Parquet\nreaders use the Parquet summary statistics to download the minimum amount of data\nnecessary to extract data from the desired region.\n\nTo help find bounding boxes of interest, we like this [bounding box tool](https://boundingbox.klokantech.com/)\nfrom [Klokantech](https://www.klokantech.com/). Choose the CSV format and copy the value directly into\nthe `--bbox` field here.\n\n#### `gers [UUID]`\n\nLook up an ID in the GERS Registry. If the feature is present in the latest release, it will download the feature and write it out in the specified format.\n\nCommand-line options:\n\n- `-f` (\"geojson\", \"geojsonseq\", \"geoparquet\"): output format, defaults to geojsonseq for a single feature on one line.\n- `--output`/`-o` (optional): Location of output file. When omitted output will be written to stdout.\n- `--connect_timeout` (optional): Socket connection timeout, in seconds. If omitted, the AWS SDK default value is used (typically 1 second).\n- `--request_timeout` (optional): Socket read timeouts on Windows and macOS, in seconds. If omitted, the AWS SDK default value is used (typically 3 seconds). This option is ignored on non-Windows, non-macOS systems.\n\n## Python API\n\n`overturemaps` is also a Python library. Import directly from `overturemaps` to query Overture data\nwithout using the CLI.\n\n#### Arrow / pyarrow\n\n`record_batch_reader` returns a `pyarrow.RecordBatchReader` — a streaming cursor over the data.\nThis is the lowest-level entry point and works with any Arrow-compatible tool.\n\n```python\nfrom overturemaps import record_batch_reader\n\nbbox = (-71.068, 42.353, -71.058, 42.363)  # xmin, ymin, xmax, ymax\nreader = record_batch_reader(\"building\", bbox=bbox)\n\nif reader is not None:\n    table = reader.read_all()\n    print(table.schema)\n```\n\n#### GeoDataFrame (geopandas)\n\n`geodataframe` loads data directly into a `geopandas.GeoDataFrame`. Requires `geopandas` to be\ninstalled (`pip install overturemaps[geopandas]` or `pip install geopandas`).\n\n```python\nfrom overturemaps import geodataframe\n\nbbox = (-71.068, 42.353, -71.058, 42.363)\ngdf = geodataframe(\"building\", bbox=bbox)\nprint(gdf.head())\n```\n\n#### Writing to a file format\n\nUse `get_writer` and `copy` from `overturemaps.writers` to write data to GeoJSON, GeoJSONSeq, or\nGeoParquet without the CLI:\n\n```python\nfrom overturemaps import record_batch_reader\nfrom overturemaps.writers import copy, get_writer\n\nbbox = (-71.068, 42.353, -71.058, 42.363)\nreader = record_batch_reader(\"building\", bbox=bbox)\n\nwith get_writer(\"geojson\", \"boston.geojson\", schema=reader.schema) as writer:\n    copy(reader, writer)\n```\n\nSupported format strings: `\"geojson\"`, `\"geojsonseq\"`, `\"geoparquet\"`.\n\n## Installation\n\noverturemaps is available via [Homebrew](https://brew.sh/):\n\n```bash\nbrew install overturemaps\n```\n\nTo install overturemaps from [PyPi](https://pypi.org/project/overturemaps/) using pip:\n\n```bash\npip install overturemaps\n```\n\noverturemaps is also on [conda-forge](https://anaconda.org/conda-forge/overturemaps) and can be installed using conda, mamba, or pixi. To install overturemaps using conda:\n\n```bash\nconda install -c conda-forge overturemaps\n```\n\nIf you have [uv](https://docs.astral.sh/uv/) installed, you can run overturemaps [with uvx](https://docs.astral.sh/uv/guides/tools/#running-tools) without installing it:\n\n```bash\nuvx overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geojson --type=building -o boston.parquet\n```\n\n## Performance\n\nBenchmarks using synthetic data on Apple M-series hardware:\n\n| Output format | Geometry | Rows | Time |\n|---|---|---|---|\n| GeoJSON | Points | 10 000 | 31 ms |\n| GeoJSON | Polygons | 10 000 | 44 ms |\n| GeoParquet | — | — | network/disk bound |\n\nTo run the benchmarks locally:\n\n```bash\nuv sync --group dev\npytest benchmarks/ -v\n```\n\n## Development\n\n```bash\nuv sync\nuv run pytest tests/\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOvertureMaps%2Foverturemaps-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOvertureMaps%2Foverturemaps-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOvertureMaps%2Foverturemaps-py/lists"}