-
2.7.1ef28acc2 · ·
Release 2.7.1 ### Added - Routes returning items/pictures have the `pers:interior_orientation/sensor_array_dimensions` property set, letting users know about original picture dimensions (width/height). - Add number and coefficient of 360° pictures to the pictures grid. This will makes it possible to display a grid of only 360° pictures. - Add `missing_fields` list to the `/api/upload_sets/:id/files` response detailling the missing fields from a rejected uploaded picture. - Details about picture quality are now offered for display and filtering: - In sequences and pictures routes: `quality:horizontal_accuracy` for GPS position precision (in meters), `panoramax:horizontal_pixel_density` for pixel density on horizon (px/FOV degree). - In vector tiles: `gps_accuracy` and `h_pixel_density` (for __sequences and pictures__ layers, not available on grid layer) - In vector tiles style, a new metadata property `panoramax:fields` lists all available properties in each layer (pictures, sequences, grid). This will allow easier compatibility checks in web viewer. - Translations in Spanish 🇪🇸 and Hungarian 🇭🇺. ### Changed - In vector tiles, grid layer is now returning circles instead of polygons. Map style is also adapted for a smoother transition on low zooms (for a heatmap-like effect). - More EXIF tags are stripped out of database, to reduce used disk space: all keys containing hexadecimal sub-keys are removed (like `Exif.Sony.0x1234`). These fields are still available in original pictures files. A database migration removes them from existing pictures stock in your database (and could possibly take a bit of time to run...). After migration, you may want to run a little `VACUUM` to reclaim disk space. - Add number and coefficient of 360° pictures to the pictures grid. This will makes it possible to display a grid of only 360° pictures. - Change the way deleted pictures/upload_sets are handled, objects are removed from the database sooner than before, without needing a flag to tell that the underlying files needed deletion. ### Fixed - The rejection reason of duplicate files is now `file_duplicate` instead of `invalid_metadata`. - Fix a bug when loading a picture with a focal length of 0.
-
2.7.01c861088 · ·
Release 2.7.0 ⚠️ The minimal supported Python version is now 3.10. Note that you can run it with newer python versions as some might bring better performance. ⚠ ### Added - The API and picture workers now use connection pool to reduce the load on the database and improve the performances. The connection pool can be configured using `DB_MIN_CNX`/`DB_MAX_CNX`. - Add a way to use Gunicorn instead of waitress as WSGI server. Gunicorn can use processes instead of threads, which can result in better performance for high load usage. - The ID of the associated accounts are now returned in the STAC response in an `id` field in the `providers` field. - Add a whole new way of uploading pictures, using the new `/api/upload_sets` APIs. The pictures added to the uploaded will be dispatched to one or more collection on completion. - You can create and manage _Reports_ (issues with pictures or sequences) through `/api/reports` routes. Reports can be created anonymously or by authenticated users, can automatically hide faulty pictures or sequences, and be tracked over time for statistics. **Note** that reports management (beyond creation, which can be done through _web viewer_) is only available through HTTP API as now, no CLI or front-end is offered as now. - You can create and manage _Excluded areas_ (areas where people should not upload pictures) through `/api/configuration/excluded_areas` and `/api/users/me/excluded_areas` routes. Excluded areas can be defined for everyone, or by user, for fine management. **Note** that this is only manageable through HTTP API, no CLI or front-end is offered as now. - An user account can be marked with an `admin` role in database to enable some features (access to all reports, edit excluded areas). - Support of cropped panorama, with new values in `pers:interior_orientation` in picture properties: `visible_area`, `sensor_array_dimensions` following [proposed definition in STAC](https://github.com/stac-extensions/perspective-imagery/issues/10). - Routes `/api` and `/api/configuration` return API version in a `geovisio_version` attribute (example: `2.6.0-12-ab12cd34`). - Routes returning collections display a `geovisio:upload-software` property showing which client has been used to create the collection (for meta-catalog statistics). - handle user agent `GeoVisioCli` and `PanoramaxCli` as the same `cli` software. ### Changed - Flask session has been set to `permanent`, thus the session cookie will have the lifetime defined by `FLASK_PERMANENT_SESSION_LIFETIME` (default to 7 days). - Reject duplicates pictures (same md5). A configuration `API_ACCEPT_DUPLICATE` can make the instance accepts duplicates as before. - The background jobs have been changed, it should be transparent for the administrator, but they now rely on the new `job_queue` table, and can handle more types of async jobs. - More metadata can be set on API (name, description, logo and main color) in `API_SUMMARY` setting. This is served through `/api/configuration` and `/api` routes for client-side display. - Maximum authorized distance between two consecutive pictures in a same segment of a sequence is now 75 meters (distance at 135km/h during two seconds). This only changes map rendering, to avoid sequences cuts over motorways. - Sequences and Upload Sets creation now stores `User-Agent` HTTP requests headers. - Minimal required PostGIS version is now 3.4 with PostgreSQL 12. - Almost all database queries now have a statement timeout (default to 5mn). - Updated Geopic Tag Reader to 1.3.0 to solve various issues related to pictures timestamps. - In vector tiles style, `interpolate-hcl` expression for grid colouring has been replaced into `interpolate` for broader compatibility with QGIS versions. - A new `geovisio:length_km` property is available on `/api/collections/:id`, `/api/users/:id/collection` and `/api/users/me/collection` route, giving the length of sequence in kilometers. - ⚠️ The docker images are now `panoramax/api` instead of `geovisio/api`. ### Fixed - RSS feed was producing invalid viewer links (missing coordinates) since sequences are represented as MultiLineString in database. - Fix a bug where we could add pictures to an already deleted sequence. - Fix a bug where the `pictures_grid` view was refreshed too frequently (and the computation can be expensive for the database). ### Removed - The `test-api-conformance.sh` are now regular python tests - Removed on-the-fly JPEG to WebP conversion (too slow). WebP might do an unexpected come-back in the future 😉 - The list of users has been removed from the API entrypoint (`/`) as the list is ever growning, but it can still be accessed through the `/users` endpoint.
-
2.6.0b81f78ae · ·
Version 2.6.0 ⚠️ Important Note: This version add several quite long migrations. After the migration are run, you should run as a database administrator: ```sql VACUUM FULL pictures, sequences; ``` or use a tool like [pg_repack](https://github.com/reorg/pg_repack) to remove dead tuples and save lot's of space. Note that the vacuum will hold an exclusive lock whereas pg_repack will not. ⚠️ Important Note ⚠️ : This new versions uses postgres [`session_replication_role`](https://www.postgresql.org/docs/current/runtime-config-client.html) for non blocking migrations. This means that the users used to connect to the database must either have superuser privilege, or if postgres version is >= 15, you can grant the permission to the user with: ```psql GRANT SET ON PARAMETER session_replication_role TO you_user; ``` ### Added - API routes returning items embed original datetime with timezone information in a new property `datetimetz`. - New routes offering [MapLibre Style JSON files](https://maplibre.org/maplibre-style-spec/) for each vector tile endpoint (`/api/map/style.json`, `/api/users/me/map/style.json` and `/api/users/:userId/map/style.json`). This will allow more flexibility in offered vector tiles zoom levels and features against clients. These routes are advertised in API landing page with `xyz-style` and `user-xyz-style` links. - A new configuration `DB_CHECK_SCHEMA` to tell GeoVisio not to check the database schema on startup, use only if you know you'll not use GeoVisio before updating its schema. - Pictures metadata now embed pitch & roll information (`pers:pitch` and `pers:roll` fields). - A new configuration `PICTURE_PROCESS_REFRESH_CRON` tell the background workers when to refresh the database stats (they execute the `flask db refresh` command). ### Changed - All sequences geometries have been updated to be split if pictures were too far apart (linked to change done in [this MR](https://gitlab.com/panoramax/server/api/-/merge_requests/244)). - Vector tiles from zoom 0 to 5 now offers a grid of available pictures (instead of simplified sequences). They are computed on-demand, so you may want to run `flask db refresh` once a day to keep them up-to-date. - Doc and links to match the Gitlab organization rename from GeoVisio to Panoramax. ### Fixed - Migration to change LineString sequence geometry into MultiLinestring was not compatible with older PostGIS version, making Docker image not able to migrate populated sequences tables from 2.4 to 2.5. - Route `/api/collections/:cid/geovisio_status` was returning non-empty list of items when no pictures was yet associated to the sequence. - Improve `/api/collections/:cid/geovisio_status` performance for big sequences. - Improve performance of big sequences deletion in database. ### Removed - All binary exif fields are removed from the database. This should save quite a lot of database storage.
-
2.5.0ae750186 · ·
Release 2.5.0 ### Added - Picture search route (`/api/search`) now allows to look for a place that should be visible in pictures. This allows to find pictures for illustrating a POI page. This is done using `place_position`, `place_distance` and `place_fov_tolerance` parameters. - Route `PATCH /api/collections/:id` has new parameters for editing in a single shot all pictures in a sequence: - `relative_heading`: to change all picture headings based on sequence movement track - `sortby`: to change the property used to sort pictures in the sequence (GPS date, file date or file name, either ascending or descending order). - Route `PATCH /api/collections/:col_id/items/:id` has a new parameter for editing a picture's heading. - Add 2 new tables `pictures_changes` and `sequences_changes` to track updates on `pictures` and `sequences`. Those tables are not yet exposed via an http API. ### Changed - Updated Geopic Tag Reader to version 1.0.5 - Variable `DB_URL` is not set by default on the Dockerfile anymore, a real value must be given. - Do not persist binary exif fields. The most notable one is `MakerNote` that took ~15% of the database storage. - Pictures's are now displayed from zoom level 15 in the tiles to lower the tile's size. - Collection geometries are now stored as multilinestrings, and split if pictures are too far apart. ### Fixed - Pytest path in CI for Docker image release. - When searching collections with a bounding box (in `/api/collections` or `/api/users/:id/collection`), a real intersection is done in the search (before, only the bounding box of the collection was considered). - Permission problems in Dockerfile when writing to `/data/geovisio`
-
-
2.3.1573b28e8 · ·
# Release 2.3.1 ### Added - Basic `Cache-Control` headers, only setting `public` or `private` for the moment. - `original_file:size` and `original_file:name` in an item's response's `properties` - User collection list (`/api/users/:id/collection`) now also supports search with `bbox`, as proposed in [STAC _Collection Search_ extension](https://github.com/stac-api-extensions/collection-search). ### Changed - Docker container work directory is now `/opt/geovisio`. - Docker compose file with blurring is lighter, to for easier maintenance. - Update [geo-picture-tag-reader](https://gitlab.com/geovisio/geo-picture-tag-reader) to [1.0.3 version](https://gitlab.com/geovisio/geo-picture-tag-reader/-/tags/1.0.3). ### Removed - Tests in Docker are removed, tests can be run locally and are automatically run through repository CI. - `docker-compose-auth.yml` file, as it is now redundant with `docker-compose-full.yml` (as blurring is separated in a lighter compose file).
-
2.3.0cafce6af · ·
Release 2.3.0 +++ Added - Performance and crash metrics can be sent now to a Sentry server. - (Almost) full list of picture EXIF tags are shown in `properties.exif` field in API routes returning STAC items. Some keys are skipped because of their low added-value and wide size (maker notes, long binary fields). - On route `POST /api/collections/:cid/items`, new `override_Exif.*` and `override_Xmp.*` parameters are available to manually define EXIF or XMP tags to override in picture metadata. You can pass any valid [Exiv2](https://exiv2.org/metadata.html) EXIF/XMP tag in query parameters. - A documentation about [STAC API and GeoVisio API differences](./docs/80_STAC_Compatibility.md). - Sequences can be filtered by their last update time with `GET /api/collections?filter=...` parameter (uses _Common Query Language_ expression). Deleted sequences can also be show using the `filter` `status` (`filter=status='deleted'`). - Picture processing will now be retried (10 times) in case the blurring API fails. - Sequence title can be updated through `PATCH /api/collections/:id` route. +++ Changed - Picture EXIF tags are now stored in database following the [Exiv2](https://exiv2.org/metadata.html) naming scheme. A database migration that could take some time (up to half an hour) is offered to update existing metadata in running instances. - Upgrade Swagger to 5.9 - Fix a deadlock in the database when a picture is deleted while a worker is preparing it. - Sequences last updated date corresponds to either last edit of sequence itself or any pictures it embeds. - Surrounding pictures are listed in details of a single picture (`GET /api/collections/:collectionId/items/:itemId`), as `rel=related` links. - User detailed catalog (`/api/users/:userId/collection`) now offers paginated and filterable results for its `child` links. Query parameter are `filter, limit, sortby`. - Tag reader library update to 1.0.2 to fix various fractions value issues. - `API_MAIN_PAGE` and `API_VIEWER_PAGE` environment variables can now also take a full URL to use instead of default API front-end pages. Useful if you're using a third-party front-end to keep RSS links consistent. +++ Fixed - Tag reader dependency was incorrectly evaluated in pyproject. +++ Deprecated - Parameters `created_before` and `created_after` in `GET /api/collections` route, in favor of `filter` parameter.
-
2.2.002e4bae6 · ·
Release 2.2.0 +++ Changed - [GeoPic Tag Reader](https://gitlab.com/geovisio/geo-picture-tag-reader) updated to 0.4.1 to embed stronger checks on picture coordinates. +++ Fixed - If a picture was having invalid coordinates in its EXIF tags, geometry in database was landing outside of WGS84 bounding box, and `GET /api` returned an invalid spatial extent. API now limits returned bounding box to maximum authorized value for WGS84 projection. +++ Added - a new route: `/api/users/:id/collection` that returns a collection of all the users's collections (can also be accessed with `/api/users/me/collection` with authentication). It's similar to `/api/users/:id/catalog` but with more metadata since a STAC collection is an enhanced STAC catalog.
-
2.1.12952b3b6 · ·
Release 2.1.1 +++ Added - On picture upload, some metadata can be passed through HTTP request parameters instead of being read from picture file EXIF tags. Available metadata overrides are: GPS coordinates, capture time and picture type. This allows API clients to handle a wider set of input files (for example GeoPackage, CSV, Shapefile...) without needing to insert all information into picture file. - To make API compatible with a broader range of clients, the `GET /api/collections/{collectionId}/items` route has new metadata in its `properties` field (`geovisio:producer`, `geovisio:image`, `geovisio:thumbnail`). These properties are duplicated regarding STAC standard (which puts them directly at _Feature_ level) to allow compatibility with clients which only reads metadata from `properties` field (like uMap or QGIS). - A favicon is shown in default API pages. - A RSS feed is now offered to list recently uploaded collections, it can be accessed through `GET /api/collections?format=rss` (or with `Accept: application/rss+xml` HTTP request header). - Collections list (`/api/collections`) now also supports search with `bbox` and `datetime` parameters, as proposed in [STAC _Collection Search_ extension](https://github.com/stac-api-extensions/collection-search). +++ Changed - The Docker compose file `docker-compose-full.yml` now embeds [GeoVisio Website](https://gitlab.com/geovisio/website), available on `localhost:3000`. +++ Fixed - Database migration `20230720_01_EyQ0e-sequences-summary` was having a failing SQL request, causing invalid computed sequence metadata being present in database. - Search parameters `collections` and `ids` for `/api/search` route where not correctly handled when passed through `POST` JSON body.
-
2.1.0278818b4 · ·
Release 2.1.0 +++ Added - A way to customize the picture's license. If none is set, the pictures's license is considered to be proprietary. - A new route `PATCH /api/collections/:cid` is offered to change visibility of a sequence - A way to call the vector tiles as an authenticated user. It is mainly used to be able to see objects only visible for this user. - A `hidden` property in the vector tiles, to mark a sequence or picture as only visible for the owner of this sequence or picture. If the property is not set, the object is visible by all - A new route `DELETE /api/collections/:cid` is offered to delete a collection. The deletion is done asynchronously. - A new route `DELETE /api/collections/:cid/items/:id` is offered to delete a picture - [OpenAPI](https://swagger.io/specification/) conformance tests are now automatically run through `tests/test_api_conformance.sh` script - [Support of pagination](https://github.com/radiantearth/stac-api-spec/tree/main/ogcapi-features#item-pagination) for `GET /api/collections/:cid/items` API route (`first, last, prev, next` relation types) * also support a `?withPicture=:picture_id` query paramater to ask for a page with a specific picture in it - Add a `flask sequences reorder` subcommand to reorder all or some sequences using the picture's datetime. - [Support of pagination](https://github.com/radiantearth/stac-api-spec/blob/master/ogcapi-features/README.md#collection-pagination) for `GET /api/collections` API route (`first, last, prev, next` relation types), with a default limit to 100 sequences retrieved per call - Add 2 optional parameters to the `GET /api/collections` api: `created_after`/`created_before` used to filter the collection by their creation date. +++ Changed - Docker compose files now use `latest` API image instead of `develop` - In default pages (`/` and `/viewer.html`), web viewer version is now synced to current API version instead of develop - Algorithm used for generating smaller versions of pictures changed from _NEAREST_ to _HAMMING_ for better results - API documentation and specifications moved to `/api/docs/swagger` and `/api/docs/specs.json`, and with improved readability of their content - Now heading are recomputed if set to 0 because some camera use this value by default - Hidden pictures will now always be served through the API to be able to check permissions. +++ Fixed - Raw picture bytes are sent to blurring API instead of Pillow-based version, avoiding various issues (too large files, missing EXIF) - Docker-compose files are now compatible with MacOS (replaced `network_mode: host` to use a more classic approach) - Some CORS HTTP headers were missing in API responses to allow client send credentials
-
-
-
-
-
-
-
-
-
-