-
Notifications
You must be signed in to change notification settings - Fork 19
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
Creating Curb Objects #126
base: dev
Are you sure you want to change the base?
Conversation
First commit / defining Curb Object
- Note centroid of object - Note positive and negative distances - Start to populate type specific attributes
Updated language around Object Type Attributes based on latest discussions. It omits details on specific attributes for future versions of the spec.
@jacobmalleau this PR appears to be in decent shape. What do we need to do to take this to review? |
@jamesian-barr there's probably a few more things to finish and revise on here. I'll make some targeted comments. Then the steering committee (SC) can bring it before the working group for review. There is a SC meeting next week so we can see if this is ready to present. And I think we need to finalize all the 1.0.1 issues and PRs (7 open, 10 done) and merge to 'dev' first so we don't run into any conflicts. So feel free to review and comment on those. |
curbs/README.md
Outdated
|
||
Some object types will have unique, custom attributes that can be optionally included with the given object type. These are given as unordered key-value pairs, e.g. `kilowatts` : `1.21`. For this current version of Curb Objects, specific object type attributes will not be included in the specification. As use of Curb Objects grows or specific use cases become more involved, common object type attributes can be added on an as needed basis. | ||
|
||
##### Sample Object Type Attributes (for Future) |
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.
This area needs to be fleshed out, and could get complicated fast. It's for custom object fields, so some subset of object types above would need to have their custom fields defined.
Could be defined by cities. Can provide examples here.
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.
I think we would be fine to leave this as a list of examples.
Do we have to tie these attributes to specific object types? Or just leave it open for cities as they see fit.
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.
We agreed to remove this entire custom object type attributes section. Make sure references to it are removed from other parts of Objects.
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.
Added in latest commit. I also added this for reference
Unique object type attributes for each object type are not included in this version of the specification. As use of Curb Objects grows or specific use cases become more involved, common object type attributes can be added.
@@ -106,6 +108,7 @@ A Curb Event is represented as a JSON object, whose fields are as follows: | |||
| `curb_zone_id` | [UUID][uuid] | Conditionally Required | Unique ID of the Curb Zone where the event occurred. Required for events that occurred at a known Curb Zone for ALL _event_types_. | | |||
| `curb_area_ids` | Array of [UUID][uuid] | Conditionally Required | Unique IDs of the Curb Area where the event occurred. Since Curb Areas can overlap, an event may happen in more than one. Required for events that occurred in a known Curb Area, if known and used, for these event_types: _enter_area, exit_area, park_start, park_end_ | | |||
| `curb_space_id` | [UUID][uuid] | Conditionally Required | Unique ID of the Curb Space where the event occurred. Required for events that occurred at a known Curb Space, if known and used, for these event_types: _park_start, park_end, enter_area, exit_area_ | | |||
| `curb_object_id` | [UUID][uuid] | Conditionally Required | Unique ID of the Curb Object where the event occurred. Required for events that occurred at a known Curb Object, if known and used, for these event_types: _park_start, park_end, enter_area, exit_area_ | |
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.
Should this be for multiple IDs, so curb_object_id
? One event could use a meter and an EV charger and a locker, for example.
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.
We could list multiple IDs here, although maybe it should only be what the true source of the event is (if you plug into the charger, book the locker, or pay at the meter)? I think leaving it as one option could be cleaner.
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.
Agreed that this can stay as one single ID per event. If multiple objects need to record simultaneous events at a zone, then they each get their own event. So this is fine as is.
We had a great public working group meeting on this topic. Here are the action items, notes, and recording. Here were the main consensus items from the 49 attendees, including direct feedback from representatives from CurbIQ, Umojo, Turnstone, INRIX, SFTMA, SDOT, and others.
I'll be flagging the specific PR lines with each of these for @jacobmalleau to edit. If you agree with these, let us know here. If don't agree, let us know too. |
curbs/README.md
Outdated
@@ -263,6 +308,7 @@ A Curb Zone is represented as a JSON object, whose fields are as follows: | |||
| `entire_roadway`| Boolean | Optional | If "true", this curb location takes up the entire width of the roadway (which may be impassible for through traffic when the Curb Zone is being used for parking or loading). This is a common condition for alleyways. If `entire_roadway` is `true`, `street_side` MUST NOT be present. | | |||
| `curb_area_ids`| Array of [UUID][uuid] | Optional | The ID(s) of the [Curb Areas](#curb-area) that this Curb Zone is a part of. If specified, the areas identified MUST be retrievable through the Curb API and its geographical area MUST contain that of the Curb Zone. | | |||
| `curb_space_ids`| Array of [UUID][uuid] | Optional | The ID(s) of the [Curb Spaces](#curb-space) that this Curb Zone contains. If specified, the spaces identified MUST be retrievable through the Curb API and its geographical area MUST be contained in this Curb Zone. | | |||
| `curb_object_ids` | Array of [UUID][uuid] | Optional | The ID(s) of the [Curb Objects](#curb-object) that this Curb Zone is related to. If specified, the objects identified MUST be retrievable through the Curb API. Curb Objects can be related to a Curb Space or a Curb Zone. | |
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.
This description should specify that the curb objects listed are the objects that are in the zone's 'area of influence'. The Objects that relate to this curb zone. So a locker's ID might be listed in 4 curb zones along a block face. Or a camera's ID might be listed in 3 curb zones that the camera has visibility into. Or the parking meter might be useable by 5 zones on a block.
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.
Added text for this in the latest commit. I am still a little weary of how this can be interpreted (e.g. a camera is located in one curb zone, but monitors several curb zones, how will a user know which is which). But I think with the inverse ID linkage this for an object this should be covered (e.g. you use the Curb Zone ID attribute for Curb Object to specify where the curb object is, then associate it with any zones it covers). Another example: a pay station's Curb Zone ID attribute shows where it is physically, and this field lets you indicate all the curb zones it covers.
curbs/README.md
Outdated
@@ -317,6 +363,7 @@ A Curb Space is represented as a JSON object whose fields are as follows: | |||
| `published_date` | [Timestamp][ts] | Required | The date/time that this curb area was first published in this data feed. | | |||
| `last_updated_date` | [Timestamp][ts] | Required | The date/time that the properties of ths curb area were last updated. This helps consumers know that some fields may have changed. | | |||
| `curb_zone_id` | [UUID][uuid] | Required | The ID of the Curb Zone this space is within. The geometry of the specified Curb Zone MUST contain the geometry of this space. | | |||
| `curb_object_ids` | Array of [UUID][uuid] | Conditionally Required | The ID(s) of the [Curb Objects](#curb-object) that this Curb Space is related to. If specified, the objects identified MUST be retrievable through the Curb API. Curb Objects can be related to a Curb Space or a Curb Zone.| |
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.
Similar to the object IDs in a zone, for spaces, this description should specify that the curb objects listed are the objects that are in the space's 'area of influence'. So a meter might be for 2 curb spaces.
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.
Addressed in latest commit
curbs/README.md
Outdated
| ------ | ------ | ------------------- | ------------- | | ||
| `curb_object_id` | [UUID][uuid] | Required | The ID of the curb object. | | ||
| `geometry` | [Point][point] | Required |The spatial location of this curb object location. This can represent the approximate center of the object, or the centroid location of the object, depending on its size and shape. | | ||
| `curb_zone_id` | [UUID][uuid] | Conditionally Required | The ID of the Curb Zone this object is related to. The geometry of the specified Curb Zone does not need to directly relate to the geometry of this object. Either a Zone or Space ID is required for an Object. | |
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.
The curb_zone_id description should reflect the idea that the object's physical location is nearest to this zone. Similarly with curb_space_id below.
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.
Added in latest commit
See meeting notes for additional context.
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.
Left comments throughout with items addressed in my latest commit
Explain pull request
First commit / defining Curb Object
Is this a breaking change
Impacted Spec
Which API(s) will this pull request impact?
Curbs
Events
Metrics
Additional context
Add any other context or screenshots about the feature request here.