-
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
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.
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
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.
It would be great to also be able to relate the object to a policy id for signs.
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.
To @felixir's point, INRIX has a specific implementation underway that relates sign assets to policies
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.
Ah so adding a policy_id
to the curb object defintion? I guess that makes some sense, if the object at a curb zone is a sign that has one description on it and that aligns to just one policy. But most curb zone policies are not defined by just one sign? I'm not sure it's needed to do this, since the zone is connected to a policy already, and this would apply just one type of object, signage
. Could you give us some use cases and reasons why you would need the policy_id
field in 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.
Yeah, I know we thought that you could relate the object to the policy through the curb zone. Similar to how events can be related to policies through the 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.
See the new curb_policy_id field @felixir @Mu-yi-Zhou @alexdemisch @mschwartzie and give feedback on this
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
| Name | Type | Required/Optional | Description | | ||
| ------ | ------ | ------------------- | ------------- | | ||
| `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. | |
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.
It would be great to have this be more flexible and allow line and polygon for objects like bike racks and bus stops. This would simplify the need for linear distance, max length, and object shape.
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 point represents a required field.
We also have an optional object_shape
field below which is for polygons.
I don't think lines work in the context of defining where objects area (though you could argue they do with curb zones, but that's not the scope of this).
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.
See the new object_line
field @felixir @Mu-yi-Zhou @alexdemisch and give feedback on this
Is Object Type Enum or free-form? If Enum, will be good to keep custom attributes or even a comment/description fields. Example user case - some assets in our database are owned by other city department or private developer, we need a filed to note that. |
@@ -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, in particular what Objects are in the Zone's areas of influence. For example, a pay station being used for multiple paid parking zones, a locker for a commercial loading zone, or a camera monitoring several zones. 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.
Flagging this update for review
@@ -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, in particular what Objects are in the Space's areas of influence. For example, a meter being used for two paid parking spcaes, a locker for a commercial loading space, or a camera monitoring several spaces. 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.
Flagging this update for review and comment.
Hi @Mu-yi-Zhou - The Curb Object object has lots of these freeform fields now as you can see here: name, description, owner, operator, external object id, external URL. I think these cover your use case. |
Hi everyone, please take a look at the latest unresolved comments and things for review and leave your thoughts. |
The only things open for final consensus are now:
|
Re: (1), a polyline would be helpful to represent curb paint, which we are planning to store as an asset/curb object, and represent as a line feature. |
|
| `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 physically in or closest 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. | | ||
| `curb_space_id` | [UUID][uuid] | Conditionally Required | The ID of the Curb Space this object is physically in or closest to. The geometry of the specified Curb Space does not need to directly relate to the geometry of this object. Either a Zone or Space ID is required for an Object. | | ||
| `curb_policy_id` | [UUID][uuid] | Optional | ID of [Policy object](#policy) that is directly associcated with this curb object. For example, `signage` or `paint` that relates to a single policy. | |
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.
See the new curb_policy_id
field @felixir @Mu-yi-Zhou @alexdemisch and give feedback on this
@alexdemisch Can you explain more of the use cases for why you want curb paint represented in CDS? SDOT also has several curb paint colors associated with our regulations but I've never thought about listing the colors in CDS until I read your comment. Seems like important to have noted in asset mgmt. system but feels different than say a sign object listed in CDS. Curious your thoughts. |
@bhamlinSDOT We plan to link regulations to the assets that define them to help maintain the data. In some cases, we only define regulations through curb paint, so having a line feature would help us do that. Your comment just made me realize that we don't have anywhere to store the actual color of the curb paint in CDS. I suppose that's fine for now as we'll have the linkage to the internal asset_id via the |
The main issue I see with adding a polyline option is that your Curb Objects dataset would then have both point and linear data which would make the data not compatible in GIS software unless separated out. |
@jacobmalleau It seems like this PR supports your workaround idea. Can you explain why it's a workaround in your estimation? It seems as written there is a required point for every object, and there is an optional polyline field. So it is separated out. How does that create compatibility issues with GIS software? |
Pushed to If needed we can make a new Issue or PR now to address suggested changes to |
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.