Releases: nearmap/nmaipy
Releases · nearmap/nmaipy
v2.2.0
Changes and New Features
- Reworked scripts/ai_offline_parcel.py completely as nmaipy/exporter, with a class (AOIExporter) that can be more easily used natively within python. Also preserved a command-line arg option for use with bash scripts.
- Changed input from a a directory, to a single aoi file (--aoi-file). This is simpler, and also allows an S3 based parcel file to be used directly without locally downloading.
- Explicitly broke out "process" and "threads" arguments rather than the confusingly named "workers". Typically, processes should be set to ncpus, and threads should be left as is (processes are used to parallelise between chunks, threads are used to parallelise requests within a chunk).
- Added new parameters to allow an AOI to return partial results, or ones from blended surveys. For larger AOIs (e.g. census blocks), assuming a single survey could uniquely cover it in regional areas was unrealistic. Now "aoi_grid_inexact" allows different survey dates to be used on gridding up a large AOI (with the caveat that this results in overlapping discrete objects such as roofs on grid boundaries). aoi_grid_min_pct specifices the minimum percentage of grid squares that must provide a valid result, before the entire AOI is failed.
- Updated minimum confidence and area thresholds to current best practice for Gen 6 data.
Bug Fixes
- the ID Column was not behaving correctly (was essentially wiping over a pre-set id_col with integers 0-len(df), and was particuarly problematic if pre-setting the ID, and having a data set with invalid geometries that were dropped). This has been fixed, so all dataframes now use ID_COL, it only generates a fresh ID_COL if none was originally set, and respects the original one.
- Added much better threading support to feature_api, with correct thread locking and cleanup. This had resulted in many dangling open file handles on very large workloads (millions of parcels with 32+ CPUs).
Known Issues
- Post hoc buffer calculations are incorrect, and should not be used at present.
v2.1.0
What's Changed
- Added ability to restrict returned data to AI resources with 3d (heights, stories etc) strictly available when using "since" and "until" parameters.
- Added ability to return just a specific list of class IDs.
- Updated environment.yaml to have a more modern recent set of packages (based on python 3.11) and fixed tests accordingly.
- Tweak to building logic corner case with long, narrow buildings on the AOI boundary
- Removed a large number of not useful rollup columns from the features.json generated rollup (primary objects where the primary is not a building/roof style class or swimming pool).
- Buffer calculations are improved, now including woody vegetation, and are focussed on "roof" rather than the deprecated "building" class. They are still limited to strictly within the AOI boundary.
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
The main purpose of this release is to prepare nmaipy for pulling Gen 6 data. It includes:
- Support for new classes and changes related to Gen 6
- New filtering logic for buildings on parcel boundaries
- Overhauled tests to support new building filtering
- New minimum thresholds for object confidence and areas
- Removing obsolete "Getting Started Guide" notebook, in favour of the minimal example that leverages nmaipy code more heavily.
- Improved coverage query tools
- Added ability to set systemVersionPrefix, and prerelease query parameters
Full Changelog: v1.2.0...v2.0.0
v1.2.0
Updated default minimum object areas and confidence thresholds to better balance false positives and negatives. Typically, this resulted in much lower minimum areas for swimming pool, solar, trampoline and building, reducing false negatives for small but strongly predicted objects. Minimum confidence and fidelity thresholds increased a little, which reduce false positives overall.
v1.1.1
v1.1.0
A range of minor improvements to functionality, and bug fixes:
- Improved utilities to get coverage of AI data.
- Improved logging and debugging to be more useful.
- Fixed up some cases where unhandled exceptions could cause a crash.
- Tuned for smoother performance for higher speed, more reliable bulk exports (e.g. 16 processes x 6 threads).