Load A Topology To A Parcel Fabric (Parcel Fabric)
Summary
Loads polygon and line features that participate in a topology into a target parcel fabric. The topology requires a predefined set of topology rules:
- Line—Must be Covered by Boundary Of (polygon)
- Line—Must Not Self-Overlap
- Line—Must Not Self-Intersect
- Line—Must be Single Part
- Line—Must Not Intersect Or Touch Interior
- Polygon—Boundary Must be Covered By (Line)
Usage
Errors generated by the polygon—Boundary Must be Covered By (Line) topology rule can be marked as exceptions. This is to allow the migration of connection lines, unclosed parcels, and dependent lines.
You can choose to load an entire line feature class and polygon feature class or only selected line and polygon features. When loading large datasets, performance will depend on your existing computer memory specifications. This tool is best used for loading small- to medium-sized areas or sections of parcel data at a time.
The topology needs to be validated, clean, and free of errors for the polygon and line features to be migrated into the parcel fabric. If an edit is made to correct a topology error, make sure to validate the topology again to make sure the error no longer exists before running the tool.
To validate an entire topology, use the Validate Topology tool located in the Topology toolset in the Data Management toolbox.
Instead of validating the entire topology, validate the current extent of the map display in ArcMap by clicking the Validate Topology In Current Extent tool on the Topology toolbar.
-
Either the polygon or the line feature class can be used as the Input (Topology) Feature Class parameter. If there is a selection present on the feature layer of the input feature class in ArcMap, only the selected features will be migrated. If the line feature class is used as the input feature class, any selected lines that do not form a loop (dangling lines), matching the corresponding polygon in the polygon feature class, will be migrated as parts of unclosed parcels. If you have a Category field on your line feature class, you can set the category value of the dangling line to 3 to represent connection lines or 1 to represent dependent lines.
COGO attributes are not required on the line feature class. If there are no COGO attributes on parcel lines, that is, parcel lines have been generated from polygons, the importer will generate COGO attributes from the line geometry. If there are COGO attributes, the tool will migrate the existing COGO attributes to parcel fabric lines.
You can populate system attributes in parcel fabric tables using attributes on your source parcel polygon and parcel line feature classes. For example, to migrate parcel identification numbers (PINs) to the Name field in the fabric parcels table, your source polygon feature class needs to have a PIN, NAME, LOT, or APN attribute.
Learn more about populating system attributes in parcel fabric tables
If a line feature class is used as the input feature class to migrate unclosed parcels, you can populate system attributes in the parcels table using attributes on the source parcel line feature class. For example, to migrate a parcel identification number (PIN) for an unclosed parcel, there needs to be a PIN, NAME, LOT, or APN attribute on your source parcel line feature class.
Learn more about populating system attributes in parcel fabric tables
User-defined attributes on the polygon and line feature classes can be migrated to the parcels and lines tables in the fabric provided that the same user-defined attribute is created on the fabric tables table before migrating the data.
Specify a point feature class for the Input Point Features (optional) parameter if you want to migrate user-defined attributes on a point feature class to the points table in the parcel fabric. The same user-defined attribute should be created on the fabric points table before migration for the attribute values to be successfully migrated.
When data is migrated to the fabric, fabric points are automatically created at the endpoints of fabric lines. The system X and Y attribute values of the fabric points are automatically populated with the point shape coordinates. Point features are only specified in this parameter to migrate user-defined attributes to the points table in the parcel fabric. As with polygon and line features, if there is a selection on the points feature layer, only the selected points will be migrated.
-
The Minimum Line String Segment Count (optional) is the minimum number of line segments a line feature can have before it is considered as a line string or natural boundary.
-
If a tolerance is specified for the Control Match Tolerance (optional) parameter, any migrated fabric points that lie within the specified match tolerance of an existing control point in the fabric will be linked to the control point.
-
If the Import Parcels as Unjoined Group option is checked, parcels are migrated as an unjoined group. Unjoined parcels exist outside of the parcel fabric in their own local coordinate space. Unjoined parcels can be joined to the parcel fabric at any time. You would want to migrate parcels as unjoined if additional work is required on the parcels before they become joined to the parcel fabric layer.
Syntax
Parameter | Explanation | Data Type |
target_parcel_fabric |
The target parcel fabric where the data will be migrated. | Parcel Fabric Layer |
in_topology_class |
Input feature class or layer that is part of a topology. The feature class can either be a line or polygon. | Feature Layer |
in_point_class (Optional) |
Input point feature class or layer. The point feature class does not need to be part of a topology. Only user-defined attributes on the input point feature class will be migrated to corresponding points in the parcel fabric. | Feature Layer |
linestring_minimum_segments (Optional) |
The minimum number of segments a polyline feature can have before it is considered and migrated as a line string or natural boundary in the parcel fabric. The default is a minimum of 10 segments. | Long |
control_match_tolerance (Optional) |
The tolerance in which new, migrated fabric points are linked with existing control points found in the fabric. The tolerance length units are the same as the length units of the coordinate system of the fabric. If a control match tolerance is not specified, the default of 0.1 meters is used. | Linear unit |
unjoined_group | Determines how features will be migrated.
| Boolean |
direction_units (Optional) | The direction units to be used when generating COGO bearing attributes for line features during the migration process.
| String |
direction_type (Optional) |
The direction type to be used when generating COGO bearing attributes for line features during the migration process.
| String |
compute_area | Determines how features will be migrated.
| Boolean |
area_units (Optional) |
If the Compute Area for New Parcels option is checked, select the area units to be used when computing parcel area during the migration process.
| String |
radial_point_tolerance (Optional) |
The tolerance in which new, computed curve center points are matched with existing curve center points found in the fabric. Furthermore, if several computed curve center points lie within this tolerance, they are averaged and merged into a single center point. If a radial tolerance is not specified, the default of 0.5 meters is used. | Linear unit |
accuracy_units (Optional) |
The accuracy category of the lines and polygons being migrated. Accuracy categories are defined by date of survey in the parcel fabric. Accuracy category 1 is the highest data accuracy (recently surveyed) and accuracy category 6 is the lowest data accuracy (year 1800 or lower). Accuracy categories are used in the fabric adjustment.
| String |
Code Sample
The following Python window script demonstrates how to use the LoadATopologyToAParcelFabric tool in immediate mode.
import arcpy
from arcpy import env
env.workspace = "C:/Parcel_Editor_Tutorial/Encinitas_City/Cadastral.gdb"
arcpy.LoadTopologyToParcelFabric_fabric("NewFabric", "Enc_polgon", "", "100", "0.5",
"JOINED_GROUP", "DEGREES_MINUTES_SECONDS",
"NORTH AZIMUTH", "COMPUTE_AREA", "HECTARES",
"1", "3 - 1908 to 1980")
The following stand-alone script demonstrates how to iterate through and load selected groups of parcels using the LoadTopologyToParcelFabric tool.
# Name: LoadTopologyToParcelFabric_Example2.py
# Description: Iterates through selections of parcels and imports each parcel selection
# into a parcel fabric. Parcels are selected using overlying blocks in the
# IterateBlocks feature class. Each polygon in IterateBlock is selected
# by block number in the "BlockNumber" attribute field.
# Import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "c:/data/OaklandCounty.gdb/ParcelData"
# Set variables
# BlockNumber is an attribute on the ItearateBlocks feature class
x = 1
whereclause = '%s = %s' % ("BlockNumber",x)
# Make feature layers from feature classes
arcpy.MakeFeatureLayer_management("c:/data/OaklandCounty.gdb/ParcelData/IterateBlock","IterateBlock_lyr")
arcpy.MakeFeatureLayer_management("c:/data/OaklandCounty.gdb/ParcelData/TaxParcelPolygons",
"TaxParcelPoly_lyr")
# Search feature class IterateBlock and obtain all features (block polygons)
rows = arcpy.SearchCursor("IterateBlock","","","","")
# Iterate and select each block. For each selected block, select underlying parcels
# and import selected parcels
row = rows.next()
while row <> None:
arcpy.SelectLayerByAttribute_management("IterateBlock_lyr","NEW_SELECTION",whereclause)
arcpy.SelectLayerByLocation_management("TaxParcelPoly_lyr","COMPLETELY_WITHIN","IterateBlock_lyr",
"","NEW_SELECTION")
arcpy.LoadTopologyToParcelFabric_fabric("CountyFabric","TaxParcelPoly_lyr","","100","","JOINED_GROUP",
"DEGREES_MINUTES_SECONDS","NORTH_AZIMUTH","COMPUTE_AREA",
"HECTARES","0.5","4_1881_TO_1907")
x = x+1
whereclause = '%s = %s' % ("BlockNumber",x)
row = rows.next()
# Since we only imported parcels that were completely within the IterateBlock polygons, we
# now need to import the perimeter parcels that are crossed by the boundary of the IterateBlock polygons
# Clear existing selection on IterateBlock_lyr
arcpy.SelectLayerByAttribute_management("IterateBlock_lyr","CLEAR_SELECTION")
arcpy.SelectLayerByLocation_management("TaxParcelPoly_lyr","CROSSED_BY_THE_OUTLINE_OF","IterateBlock_lyr",
"","NEW_SELECTION")
arcpy.LoadTopologyToParcelFabric_fabric("CountyFabric","TaxParcelPoly_lyr","","100","","JOINED_GROUP",
"DEGREES_MINUTES_SECONDS","NORTH_AZIMUTH","COMPUTE_AREA",
"HECTARES","0.5","4_1881_TO_1907")