Skip to content

Commit 5560a3d

Browse files
fixed derived gml duplicates caused by same road object and signal ids
1 parent 2c2c51e commit 5560a3d

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

rtron-model/src/main/kotlin/io/rtron/model/roadspaces/identifier/RoadspaceObjectIdentifier.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import arrow.core.Option
2020
import arrow.core.getOrElse
2121
import io.rtron.model.roadspaces.roadspace.attribute.AttributeList
2222
import io.rtron.model.roadspaces.roadspace.attribute.attributes
23+
import io.rtron.model.roadspaces.roadspace.objects.RoadObjectType
2324

2425
/**
2526
* Identifier of a lane section containing essential meta information.
@@ -32,10 +33,13 @@ data class RoadspaceObjectIdentifier(
3233
val roadspaceObjectId: String,
3334
val roadspaceObjectRepeatIndex: Option<Int>,
3435
val roadspaceObjectName: Option<String>,
36+
val roadspaceObjectType: RoadObjectType,
3537
val roadspaceIdentifier: RoadspaceIdentifier,
3638
) : AbstractRoadspacesIdentifier(), RoadspaceIdentifierInterface by roadspaceIdentifier {
3739
// Properties and Initializers
38-
val hashKey get() = "RoadspaceObject_${roadspaceObjectId}_${roadspaceObjectRepeatIndex}_${roadspaceIdentifier.roadspaceId}"
40+
val hashKey get() =
41+
"RoadspaceObject_${roadspaceObjectType}_${roadspaceObjectId}_" +
42+
"${roadspaceObjectRepeatIndex}_${roadspaceIdentifier.roadspaceId}"
3943

4044
// Conversions
4145
override fun toAttributes(prefix: String): AttributeList {

rtron-transformer/src/main/kotlin/io/rtron/transformer/converter/opendrive2roadspaces/roadspaces/RoadspaceObjectBuilder.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class RoadspaceObjectBuilder(
135135
currentRoadObjectRepeat.additionalId.toEither { IllegalStateException("Additional outline ID must be available.") }
136136
.getOrElse { throw it }
137137
val roadspaceObjectId =
138-
RoadspaceObjectIdentifier(roadObject.id, repeatIdentifier.repeatIndex.some(), roadObject.name, id)
138+
RoadspaceObjectIdentifier(roadObject.id, repeatIdentifier.repeatIndex.some(), roadObject.name, type, id)
139139

140140
val pointGeometry = buildPointGeometry(currentRoadObjectRepeat, roadReferenceLine)
141141
val boundingBoxGeometry = buildBoundingBoxGeometry(roadObject, roadReferenceLine)
@@ -160,7 +160,7 @@ class RoadspaceObjectBuilder(
160160

161161
val roadObjects =
162162
if (roadObjectsFromRepeat.isEmpty()) {
163-
val roadspaceObjectId = RoadspaceObjectIdentifier(roadObject.id, None, roadObject.name, id)
163+
val roadspaceObjectId = RoadspaceObjectIdentifier(roadObject.id, None, roadObject.name, type, id)
164164
val pointGeometry = buildPointGeometry(roadObject, roadReferenceLine)
165165
val boundingBoxGeometry = buildBoundingBoxGeometry(roadObject, roadReferenceLine)
166166
val complexGeometry =
@@ -491,7 +491,7 @@ class RoadspaceObjectBuilder(
491491
): ContextIssueList<RoadspaceObject> {
492492
val issueList = DefaultIssueList()
493493

494-
val objectId = RoadspaceObjectIdentifier(roadSignal.id, None, roadSignal.name, id)
494+
val objectId = RoadspaceObjectIdentifier(roadSignal.id, None, roadSignal.name, RoadObjectType.SIGNAL, id)
495495

496496
val pointGeometry = buildPointGeometry(roadSignal, roadReferenceLine)
497497
val complexGeometry =

0 commit comments

Comments
 (0)