INPUT:
93660 projected streets of New Zealand, 1026 of them named “ROUNDABOUT”:
WORKFLOW:
arcpy.FeatureToPolygon_management(in_features="NZL_ST", out_feature_class="D:/Scratch/Scratch.gdb/PGONS", cluster_tolerance="", attributes="NO_ATTRIBUTES", label_features="")
arcpy.SelectLayerByAttribute_management(in_layer_or_view="PGONS", selection_type="NEW_SELECTION", where_clause="Shape_Area >2500")
arcpy.Dissolve_management(in_features="PGONS", out_feature_class="D:/Scratch/Scratch.gdb/DISSOLVED", dissolve_field="", statistics_fields="", multi_part="SINGLE_PART", unsplit_lines="DISSOLVE_LINES")
arcpy.AddField_management(in_table="DISSOLVED", field_name="RATIO", field_type="FLOAT", field_precision="", field_scale="", field_length="", field_alias="", field_is_nullable="NULLABLE", field_is_required="NON_REQUIRED", field_domain="")
arcpy.CalculateField_management(in_table="DISSOLVED", field="RATIO", expression="!Shape_Area!/math.pow( !Shape_Length! /math.pi/2,2 )/math.pi", expression_type="PYTHON_9.3", code_block="")
arcpy.SelectLayerByAttribute_management(in_layer_or_view="DISSOLVED", selection_type="NEW_SELECTION", where_clause="RATIO >=0.95")
VERIFICATION:
arcpy.SelectLayerByLocation_management(in_layer="NZL_ST", overlap_type="SHARE_A_LINE_SEGMENT_WITH", select_features="DISSOLVED", search_distance="", selection_type="NEW_SELECTION", invert_spatial_relationship="NOT_INVERT")
RESULTS SHOW SUMMARY STATISTICS OF LAST SELECTION:
This means that model identified 9 out of 10 existing shapes. Technically this percentage is even higher, e.g.:
I badly wish all of my models give me such high level of confidence.