Repository navigation
Feat(docs): add new project type locate objects #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
01bc699
1a5bf78
43e11bc
b8d9a09
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,7 +16,8 @@ One row per task, with the following columns: | |
| | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | idx | integer | Sequential row index. | | ||
| | task_id | string | The ID of the task. For tile-based project types (e.g. Find Features) this is a composition of `TileZ-TileX-TileY`. | | ||
| | 0_count | integer | The number of users who marked this task as 0, e.g. "no building" for Find Features. | | ||
| | task_partition_index | integer | Index of the mini-tile partition within the task (Locate Objects only). Rows are aggregated per partition rather than per task for this project type; empty for other project types. | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are we using the term "min-tile"
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, the term is referenced in the concept note shared by FAirswipe. |
||
| | 0_count | integer | The number of users who marked this task as 0, e.g. "no building" for Find Features. | | ||
| | 1_count | integer | The number of users who marked this task as 1, e.g. "building" for Find Features. | | ||
| | 2_count | integer | The number of users who marked this task as 2, e.g. "maybe" for Find Features. | | ||
| | 3_count | integer | The number of users who marked this task as 3, e.g. "bad imagery" for Find Features. | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -21,6 +21,7 @@ One row per submission, with the following columns: | |
| | project_id | string | The project identifier. Usually a ULID for new projects; legacy Firebase-style for older migrated projects. | | ||
| | group_id | string | Public group identifier within the project (e.g. `g183`). | | ||
| | task_id | string | Public task identifier; for tile-based projects formatted as `TileZ-TileX-TileY`. | | ||
| | task_partition_index | integer | Index of the mini-tile partition within the task (Locate Objects only, since a task's result is a list of per-partition values). Empty for other project types. | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are we using the term "min-tile" |
||
| | user_id | string | The Firebase user ID of the contributor. | | ||
| | timestamp | string | When the result was recorded (ISO 8601 with timezone). | | ||
| | start_time | string | When the user started the task (ISO 8601 with timezone). | | ||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "About the data" section should also change, because now the results have a different export format.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the export files, I’ve added the new field we introduced for this project type. If that’s what you were referring to. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| --- | ||
| title: Locate Objects | ||
| parent: Project Types | ||
| nav_order: 7 | ||
| permalink: /project_types/locate_objects/ | ||
| --- | ||
|
|
||
| # Project Type - Locate Objects | ||
|
|
||
| Unlike Find Features, which asks whether an object is present anywhere in a full imagery tile, Locate Objects asks *where* within the tile it is. A single imagery tile is shown per screen, virtually subdivided into a grid of smaller mini tiles (2x2, 4x4, or 8x8, chosen by the project manager). Contributors tap the mini tile(s) that contain an object: | ||
|
|
||
| - One tap (highlighted green) — a single object is present in that mini tile. | ||
| - Two taps (highlighted yellow) — multiple objects are present in that mini tile. | ||
| - No tap — no object in that mini tile. | ||
|
|
||
| The mini-tile grid is a virtual subdivision of the same tile/zoom level (quad-tree style), not a request for higher-zoom imagery. The output is intended to produce AI-ready training datasets (e.g. for HOT's fAIr), so results capture per-mini-tile classification rather than a single yes/no per tile. | ||
|
|
||
|  | ||
|
|
||
| Locate Objects projects have `projectType = 9`. | ||
|
|
||
| ## Project | ||
| In addition to the common project fields documented in the [data model](../project_types.md), Locate Objects projects carry the following project-type-specific fields: | ||
|
|
||
| | Parameter | Type | Description | | ||
| |------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| | **zoomLevel** | int | Web Mercator zoom level at which tiles are served. | | ||
| | **tileServer** | object | Raster tile server configuration — includes a server `name`, `url`, `credits`, and an optional `apiKey`. | | ||
| | **subGridSize** | enum (string) | Size of the virtual mini-tile grid each screen's tile is subdivided into: `2x2` (4 partitions), `4x4` (16 partitions), or `8x8` (64 partitions). | | ||
| | **exportMetaKey** | string | Key of an additional metadata entry attached to exports (e.g. `"building"`). | | ||
| | **exportMetaValue** | string | Value of that additional metadata entry (e.g. `"roof_top"`). | | ||
| | **customOptions** | list (optional) | Custom answer options for classifying a mini tile (each with a value, title, description, icon, iconColor, and optional sub-options) — overrides the default No / Single Feature / Multiple Features choices. | | ||
|
|
||
| ## Group | ||
| Locate Objects groups have no project-type-specific fields beyond the [common group fields](../project_types.md#groups), plus the tile-map-service bounding-box coordinates shared with Find Features: | ||
|
|
||
| | Parameter | Type | Description | | ||
| |-----------|------|--------------------------------------------------| | ||
| | **xMax** | int | Maximum tile-X coordinate covered by the group. | | ||
| | **xMin** | int | Minimum tile-X coordinate covered by the group. | | ||
| | **yMax** | int | Maximum tile-Y coordinate covered by the group. | | ||
| | **yMin** | int | Minimum tile-Y coordinate covered by the group. | | ||
|
|
||
| ## Task | ||
| Each task is a single imagery tile, identical in shape to a Find Features task; the mini-tile grid shown to the contributor is derived client-side from `subGridSize` rather than stored per-task. | ||
|
|
||
| | Parameter | Type | Description | | ||
| |--------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| | **taskId** | string | ID of the task, formatted as `{zoomLevel}-{tileX}-{tileY}`. | | ||
| | **tileX** | int | Tile-X coordinate of the task at `zoomLevel`. | | ||
| | **tileY** | int | Tile-Y coordinate of the task at `zoomLevel`. | | ||
| | **geometry** | string | Polygon geometry of the tile, generated from `tileX`, `tileY` and `zoomLevel`. | | ||
| | **url** | string | Tile URL for the imagery at `tileX`, `tileY`, `zoomLevel`. | | ||
|
|
||
| ## Result | ||
| Locate Objects deviates from the [common result shape](../project_types.md#results): instead of a single int per task, each entry in `results` (keyed by `taskId`) is a **list of ints** — one value per mini-tile partition, ordered by partition index. A `subGridSize` of `2x2` yields a 4-value list, `4x4` a 16-value list, `8x8` a 64-value list. | ||
|
|
||
| ``` | ||
| results: { | ||
| "9-267-352": [1, 0, 0, 2, ...] | ||
| } | ||
| ``` | ||
|
|
||
| Each value uses the same integer encoding as `customOptions` (or the fallback below when none are supplied). When exported, the backend explodes each list into one row per partition, adding a `task_partition_index` column set to the value's position in the list. | ||
|
|
||
| When the project creator does not supply `customOptions`, the backend falls back to the following defaults: | ||
|
|
||
| | Value | Title | Description | | ||
| |-------|-------------------|-----------------------------------------------------------| | ||
| | `0` | No | The mini tile does not contain a feature. | | ||
| | `1` | Single Feature | The mini tile contains a single feature. | | ||
| | `2` | Multiple Features | The mini tile contains multiple features. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason we need to add these slack links to ignore?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These links return 403 status. As these are from the mapswipe workspace..
Discussed this with thenav56.