Skip to content

Latest commit

 

History

History
49 lines (43 loc) · 2.01 KB

README.md

File metadata and controls

49 lines (43 loc) · 2.01 KB

pypi version pypi downloads publish test security: bandit

GeoKDE

Package for geospatial kernel density estimation (KDE).

Written in Python 3.10.11 (though compatible with 3.10.11+), GeoKDE depends on the following:

  • geopandas
  • numpy (itself a dependency of geopandas)

Examples

Perform KDE on a GeoJSON of point geometries and write the result to a GeoTIFF raster file with rasterio:

gdf = geopandas.read_file("vector_points.geojson")
kde_array, array_bounds = geokde.kde(gdf, 1, 0.1)
transform = rasterio.transform.from_bounds(
    *array_bounds,
    kde_array.shape[1],
    kde_array.shape[0],
)

with rasterio.open(
    fp="raster.tif",
    mode="w",
    driver="GTiff",
    width=kde_array.shape[1],
    height=kde_array.shape[0],
    count=1,
    crs=gdf.crs,
    transform=transform,
    dtype=kde_array.dtype,
    nodata=0.0,
) as dst:
    dst.write(kde_array, 1)

Roadmap

  • Add more kernels.
  • Finish tests - coverage is >=95% for _utils.py and geokde.py as is.
  • Implement other methods of distance measurement, e.g. haversine, Manhattan.
  • Investigate alternatives to iterating over points.
  • Enable use of single radius and weight values without filling array of the same length as the points GeoDataFrame/GeoSeries. Results in marginal speed up but the current approach may become an issue with very large point datasets.
  • Integrate mypy in pre-commit, possibly also linter and formatter though flake8 and black used locally.

Contributions

Feel free to raise any issues, especially bugs and feature requests!