fix(extract): Kommentarfehler doppelte Mitte, Rueckgabetyp, zwei Lagetests
Der Kommentar zu gelb_doppelt nannte den Achsabstand (2*WIDTH = 20 cm) als "Abstand der Mitten", meinte damit aber die Luecke zwischen den gemalten Linien - die entsteht erst nach der Pufferung um je WIDTH/2 und betraegt WIDTH = 10 cm, wie vom Entwurf verlangt. Die Geometrie war immer richtig, nur der Satz dazu nicht. longitudinal() versprach list[tuple[object, str]] statt der zugesagten list[tuple[Polygon, str]] - Polygon war nicht einmal importiert. Dazu zwei Tests, die die schon richtige Lage festhalten, damit ein Kommentarfehler wie der obige naechstes Mal auffiele: gelb_doppelt liegt symmetrisch um die Achse mit 20 cm Achsabstand und 10 cm Luecke, der Boulevard-Spurtrenner liegt bei genau ±LANE. Kein TDD-Fall - beide liefen beim ersten Lauf gruen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c0cc32f3f3
commit
e92d5b5ce8
2 files changed
+26
-4
No files matched your search
@@ -11,7 +11,7 @@ unterbringen, und aus der Nähe bleibt Geometrie scharf, wo eine Textur verwisch
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from shapely.geometry import LineString
|
||||
from shapely.geometry import LineString, Polygon
|
||||
from shapely.ops import substring
|
||||
|
||||
from .roads import Graph
|
||||
@@ -24,7 +24,7 @@ KINDS = ("gelb_gestrichelt", "gelb_doppelt", "weiss_gestrichelt", "weiss_rand",
|
||||
"haltelinie", "zebra")
|
||||
|
||||
|
||||
def longitudinal(graph: Graph) -> list[tuple[object, str]]:
|
||||
def longitudinal(graph: Graph) -> list[tuple[Polygon, str]]:
|
||||
"""Mittellinie, Spurtrenner und Randlinien je Kante, zwischen den Kreuzungsrändern."""
|
||||
out = []
|
||||
for k, edge in enumerate(graph.edges):
|
||||
@@ -36,7 +36,10 @@ def longitudinal(graph: Graph) -> list[tuple[object, str]]:
|
||||
# Wohnstraße: eine gestrichelte gelbe Mitte, Überholen erlaubt.
|
||||
out += [(p, "gelb_gestrichelt") for p in _dashed(line, 0.0)]
|
||||
else:
|
||||
# Doppelt durchgezogen: zwei Linien mit 10 cm Abstand der Mitten.
|
||||
# Doppelt durchgezogen: Die Achsen liegen bei ±WIDTH, also 20 cm auseinander. Jede
|
||||
# Linie ist WIDTH breit (Pufferung um WIDTH/2 je Seite), sodass von den 20 cm genau
|
||||
# WIDTH = 10 cm als Lücke zwischen den gemalten Linien übrig bleiben - das ist der im
|
||||
# Entwurf verlangte Abstand, nicht der Achsabstand selbst.
|
||||
out += [(_solid(line, off), "gelb_doppelt") for off in (-WIDTH, WIDTH)]
|
||||
rand = section.carriageway / 2 - section.parking
|
||||
out += [(_solid(line, off), "weiss_rand") for off in (-rand, rand)]
|
||||
|
||||
Reference in new issue
Block a user