Skip to main content

GeoEmbed

NetCL-based visual feature encoders for aerial and satellite imagery.


What It Can Do

  • 256d L2-Normalized Vectors: Encodes aerial and satellite imagery into compact 256-dimensional unit vectors ($|z|_2 = 1.0$).
  • Direct Similarity Measurement: Vector dot product directly yields cosine similarity in $[-1.0, 1.0]$:

$$S(z_1, z_2) = z_1 \cdot z_2$$

  • Environmental Invariance: Stable across multi-year temporal drift, seasons, foliage changes, sun angles, and illumination conditions.
  • Topological & Semantic Structure: Captures road networks, parcel boundaries, forested areas, water bodies, and built-up patterns.
  • Unsupervised Clustering: Latent vectors organically group semantic landscape and terrain types without manual labels:
Reference Orthophoto Continuous Latent Field (PCA) Low Cluster ($k=2$)
Reference Orthophoto Continuous Field Cluster k=2
Low Cluster ($k=3$) Low Cluster ($k=4$) Cluster Map ($k=6$)
Cluster k=3 Cluster k=4 Cluster k=6
Cluster Map ($k=8$) Cluster Map ($k=10$) Cluster Map ($k=20$)
Cluster k=8 Cluster k=10 Cluster k=20

At low cluster counts ($k=2, 3, 4$), the embedding space separates macroscopic terrain classes (dense forest vs. open agricultural land). As $k$ increases ($k=6, 8, 10, 20$), granular sub-structures such as access roads, parcel boundaries, and built forms emerge organically.

Data source of sample orthophotos: © LGL Baden-Württemberg (www.lgl-bw.de), licensed under dl-de/by-2-0. See ATTRIBUTION.md for details.

  • Downstream Applications:
    • Unsupervised land-cover segmentation and zone maps
    • Parcel and boundary structure delineation
    • Temporal change detection across multi-year captures
    • Visual localization and map matching against orthophoto databases

What It Expects as Input

  • Image Type: Nadir aerial and satellite imagery (orthophotos, top-down perspective).
  • Format: File path (str / Path), PIL Image, or NumPy array.
  • Color Channels: 3-channel RGB (automatically converted and normalized to $[-1.0, 1.0]$).
  • Geometry: Square image tiles.
  • Preferred Ground Scale / Zoom Level: z=18 Web-Mercator ($\approx 0.5\text{ m/pixel}$ GSD). The encoders are natively calibrated for $z=18$ aerial tiles. Any single, consistent scale works as long as queries and reference index match, but $z=18$ provides optimal feature separation.

Limitations

  • No Scale Invariance: The models deliberately do not enforce cross-scale invariance to preserve fine discriminative details. All tiles in an index and query set must share the same ground scale (preferably $z=18$). Mixing different zoom levels (e.g. $z=16$ and $z=18$) leads to scale aliasing and false matches.
  • Nadir Perspective Only: Strictly top-down orthophotos. Oblique aerial imagery, perspective drone shots, or street-level photos are not supported.
  • RGB Only: Standard 3-channel RGB. Multispectral, near-infrared (NIR), or synthetic-aperture radar (SAR) imagery are not supported without prior conversion.

Code

from geoembed import Model

# Default model (v3)
model = Model()

# Alternative iterations
model = Model.v11()
model = Model.v12()

# Encode a single image -> (256,) L2-normalized vector
vector = model.encode("tile.png")

# Encode a batch of images -> (N, 256) NumPy array
vectors = model.encode(["tile_a.png", "tile_b.png"])

# Cosine similarity between two images -> float in [-1.0, 1.0]
sim = model.similarity("tile_a.png", "tile_b.png")
print(f"Similarity: {sim:.4f}")

Metadata

Release files for geoembed 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geoembed 1.0.0
File Size Uploaded Provenance
geoembed-1.0.0.tar.gz 41.9 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for geoembed 1.0.0
File Interpreter ABI Platform
geoembed-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 83.7 MB

Release files / geoembed-1.0.0.tar.gz

Download URL geoembed-1.0.0.tar.gz
Size 41.9 MB
Tags Source
SHA-256 checksum
How to use checksums
cd742b633579233af823bcc694532e15005138e267b7eb0ece71160128f7e267
BLAKE2b-256 checksum
How to use checksums
a24eee04bdde67f22344fdec6e18b69e9fbec4f10c0ff5678856ba74d5c3adff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / geoembed-1.0.0-py3-none-any.whl

Download URL geoembed-1.0.0-py3-none-any.whl
Size 41.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1bddac48f7cd32bd6c8ae83c991167bef2549c0354bb388852d0bb40cab4bf0f
BLAKE2b-256 checksum
How to use checksums
be3a79602ad925e36ab6db438f7d92ca1c28619e4c9fe7eea51f5de7d43ea845
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for geoembed 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page