Keep visible roof merging opt-in
This commit is contained in:
@@ -95,10 +95,10 @@ audit but excluded from training as `created_after_imagery_period`. UrbIS does
|
|||||||
not expose an equivalent feature creation field in this acquisition contract,
|
not expose an equivalent feature creation field in this acquisition contract,
|
||||||
so its remaining temporal relation stays an explicit sample-level limitation.
|
so its remaining temporal relation stays an explicit sample-level limitation.
|
||||||
|
|
||||||
The detector target is an imagery-visible roof instance, not an administrative
|
An opt-in visible-roof experiment can dissolve source footprints that truly
|
||||||
address or cadastral unit. Source footprints that truly touch or overlap are
|
touch or overlap; separated footprints are never bridged. The audit retains
|
||||||
dissolved into one roof instance before tiling; separated footprints are never
|
every contributing native feature identifier and reports both source-feature
|
||||||
bridged. The audit retains every contributing native feature identifier and
|
and visible-instance counts. This mode is not the default: the Belgium v8
|
||||||
reports both the accepted source-feature count and resulting visible-instance
|
experiment showed that unconditional touching-footprint dissolve can merge
|
||||||
count. This prevents dense row-house subdivisions that cannot be distinguished
|
whole urban blocks and therefore must pass the same independent gates before
|
||||||
from the orthophoto from becoming contradictory image labels.
|
it can replace native instances.
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ def main() -> int:
|
|||||||
parser.add_argument("--output-dir", type=Path, required=True)
|
parser.add_argument("--output-dir", type=Path, required=True)
|
||||||
parser.add_argument("--version", default="building-be-v1")
|
parser.add_argument("--version", default="building-be-v1")
|
||||||
parser.add_argument("--min-label-px", type=float, default=3.0)
|
parser.add_argument("--min-label-px", type=float, default=3.0)
|
||||||
|
parser.add_argument("--merge-touching-roofs", action="store_true")
|
||||||
parser.add_argument("--freeze", action="store_true")
|
parser.add_argument("--freeze", action="store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@@ -150,7 +151,7 @@ def main() -> int:
|
|||||||
),
|
),
|
||||||
reference_observed_at=reference.observed_at.isoformat() if reference.observed_at else None,
|
reference_observed_at=reference.observed_at.isoformat() if reference.observed_at else None,
|
||||||
imagery_valid_to=raster.valid_to.isoformat() if raster.valid_to else None,
|
imagery_valid_to=raster.valid_to.isoformat() if raster.valid_to else None,
|
||||||
merge_touching_roofs=True,
|
merge_touching_roofs=args.merge_touching_roofs,
|
||||||
)
|
)
|
||||||
normalized_target.write_text(json.dumps(normalized, ensure_ascii=False), encoding="utf-8")
|
normalized_target.write_text(json.dumps(normalized, ensure_ascii=False), encoding="utf-8")
|
||||||
audit_target.write_text(json.dumps(audit, ensure_ascii=False, indent=2), encoding="utf-8")
|
audit_target.write_text(json.dumps(audit, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||||
|
|||||||
Reference in New Issue
Block a user