Geospatial image handling and management
Project description
landlensdb: Geospatial Image Handling and Management
Streamlined geospatial image handling and database management
Overview
landlensdb helps you manage geolocated images and integrate them with other spatial data sources. The library supports:
- Image downloading and storage
- EXIF/geotag extraction
- Road-network alignment
- PostgreSQL integration
This workflow is designed for geo-data scientists, map enthusiasts, and anyone needing to process large sets of georeferenced images.
Features
- GeoImageFrame Management: Download, map, and convert geolocated images into a GeoDataFrame-like structure.
- Mapillary API Integration: Fetch and analyze images with geospatial metadata.
- EXIF Data Processing: Extract geolocation, timestamps, and orientation from image metadata.
- Database Operations: Store image records in PostgreSQL; retrieve them by location or time.
- Road Network Alignment: Snap image captures to road networks for precise route mapping.
Installation
Install the latest release from PyPI:
pip install landlensdb
Dependencies
[!IMPORTANT] You MUST have both GDAL and PostgreSQL with PostGIS installed to use
landlensdb.
Minimum Requirements:
- GDAL ≥ 3.5 (ensure command-line tools work, e.g.,
gdalinfo --version) - PostgreSQL ≥ 14
- PostGIS ≥ 3.5 (the extension must be installed in your PostgreSQL database)
- Python ≥ 3.10
Quick Start
Below is a minimal example creating a GeoImageFrame:
from landlensdb.geoclasses import GeoImageFrame
from shapely.geometry import Point
# Create a simple GeoImageFrame from scratch
geo_frame = GeoImageFrame(
{
"image_url": ["https://example.com/image1.jpg"],
"name": ["SampleImage"],
"geometry": [Point(-120.5, 35.2)]
}
)
print(geo_frame.head())
For additional usage examples, see our documentation.
Documentation
Full documentation (including tutorials and advanced usage) is available in this repository's docs/ folder. You can build the docs locally by installing the optional [docs] extras:
pip install -e '.[docs]'
mkdocs serve
Then open http://127.0.0.1:8000/ in your browser.
Developer Guides
Local Development
1. Clone this repository.
2. Install in editable mode with dev extras:
pip install --upgrade pip pip install -e .[dev]
3. Make changes as needed and contribute via Pull Requests.
Testing
We use pytest for testing. Tests requires the following test database. Create if does not exist:
createdb landlens_test && psql landlens_test -c "create extension postgis"
Then, we can run the tests:
pytest tests
You can also run specific test files or functions, for example:
pytest tests/test_geoimageframe.py
Code Formatting & Pre-commit
landlensdb uses Black for formatting. Once you’ve installed [dev] extras:
pre-commit install
pre-commit run --all-files
This enforces linting and formatting on each commit.
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to open issues, submit pull requests, and follow our code of conduct.
License
This project is licensed under the MIT License. See LICENSE.md for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file landlensdb-0.1.1.tar.gz.
File metadata
- Download URL: landlensdb-0.1.1.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d6085b38bf9da84466394e6bf347c449cf531b96a22f4e86e89ada8123801da
|
|
| MD5 |
a02623937de8a02dbf6e7c558ee16521
|
|
| BLAKE2b-256 |
acbdfe084200434eb0fdd8b7beed697d3a693c2325dad35753b6ae66988f05f8
|
File details
Details for the file landlensdb-0.1.1-py3-none-any.whl.
File metadata
- Download URL: landlensdb-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4bd12723c32225624a1ae3f24dd1aaebf2084add767618fdd3fd3c948fe4a0e
|
|
| MD5 |
783d9622ed3cc385a632e1303398ee6d
|
|
| BLAKE2b-256 |
792377ed9ff881c5085c77e7757e28832d609cf5548bb377146a3510cd087300
|