georeadr
Know if your geospatial data is ready for AI/ML before you find out the hard way.
pip install georeadr
Requires Python 3.9+ · Depends on geopandas
The problem
You have a shapefile or GeoPackage. You want to feed it into a model. But is the data actually ready?
- Does it have a CRS?
- Are there null geometries hiding in there?
- Are coordinates swapped or out of bounds?
- Are attributes complete enough to be useful?
- Are there duplicate features that will bias your model?
Finding out halfway through a pipeline is painful. georeadr checks first.
Quick start
import georeadr
report = georeadr.check("my_data.gpkg")
print(report)
Output:
============================================================
georeadr AI/ML Readiness Report
File: my_data.gpkg
============================================================
Score: 74.2/100 Grade: C
Dataset is mostly ready but has 2 warning(s) to address.
============================================================
[PASS] CRS defined
CRS is defined: EPSG:27700
[PASS] Null geometries
No null or empty geometries found.
[PASS] Geometry validity
All geometries are valid.
[WARN] Attribute completeness
Attribute completeness: 87.3%. 2 column(s) have missing values.
[PASS] Geometry type consistency
All geometries are of type: Polygon
[WARN] Duplicate features
3 duplicate geometries found (1.2%).
[PASS] Feature count
2,847 features found.
[PASS] Bounds sanity
Bounds look sensible (width=3.2145, height=2.8721).
============================================================
Works with any GIS format
georeadr.check("data.shp")
georeadr.check("data.geojson")
georeadr.check("data.gpkg")
georeadr.check("data.gpkg", layer="my_layer")
Or pass a GeoDataFrame directly:
import geopandas as gpd
import georeadr
gdf = gpd.read_file("data.shp")
report = georeadr.check(gdf)
Run specific checks only
report = georeadr.check("data.gpkg", checks=["crs", "nulls", "validity"])
Available checks: crs, nulls, validity, completeness, duplicates, geometry_type, count, bounds
Use the report programmatically
report = georeadr.check("data.gpkg")
report.score # 74.2
report.grade # "C"
report.passed # True (score >= 70)
report.errors # list of failed checks with severity="error"
report.warnings # list of failed checks with severity="warning"
for check in report.checks:
print(f"{check.name}: {'PASS' if check.passed else 'FAIL'} ({check.score:.0%})")
Checks explained
| Check | What it catches |
|---|---|
| CRS defined | Missing coordinate reference system |
| Null geometries | Features with no geometry |
| Geometry validity | Self-intersections, bowtie polygons |
| Attribute completeness | Missing values across columns |
| Duplicate features | Features with identical geometries |
| Geometry type consistency | Mixed Points, Lines and Polygons |
| Feature count | Too few features for meaningful ML |
| Bounds sanity | Swapped coordinates, global extent issues |
License
MIT
Metadata
Release files for georeadr 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| georeadr-1.0.0.tar.gz | 10.6 kB | Without provenance | Details for georeadr-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| georeadr-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for georeadr-1.0.0-py3-none-any.whl |
Total release size: 19.6 kB
Release files / georeadr-1.0.0.tar.gz
| Download URL | georeadr-1.0.0.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4bf89ab4604f1a4eb67a8045c698de51d33cb2a469ee97834c18605597f2f403
|
|
BLAKE2b-256 checksum How to use checksums |
27f32a48823c9ed1d4f88cc4fd249b05784aee12d07effe801fdf29836f22210
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / georeadr-1.0.0-py3-none-any.whl
| Download URL | georeadr-1.0.0-py3-none-any.whl |
|---|---|
| Size | 9.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4d9f0a57d50d5e49f9eca42a790d9af6299e93def6bcc22b254b58ac239bb39b
|
|
BLAKE2b-256 checksum How to use checksums |
53cdfe0ba08eb9b8742c952d334fd086ff46632ea9d1a0ce078ce5cb84d9fd36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Security for georeadr 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.