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 allows the loading of connection lines, unclosed parcels, and dependent lines.
You can choose to load the entire dataset or a selection of features. When loading large datasets, performance will depend on your existing computer memory specifications. This tool is best used for loading sections of parcel data at a time.
When loading a topology into a parcel fabric that already contains parcels, new parcel points are merged with existing parcel points if they lie within a tolerance of 2 × XY Tolerance of the feature dataset.
The topology needs to be validated, clean, and free of errors for the polygon and line features to be loaded into the parcel fabric. If an edit is made to correct a topology error, make sure to validate the topology again before running the tool.
To validate an entire topology, use the Validate Topology tool.
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, only the selected features will be loaded. If the line feature class is used as the input feature class, any selected lines that do not form a loop (dangling lines) and do not have a corresponding polygon, will be loaded 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, the importer will generate COGO attributes from the line geometry. If there are COGO attributes, the tool will load the existing COGO attributes.
You can populate system attributes in parcel fabric tables using attribute fields on your source parcel polygon and parcel line feature classes. For example, to load 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 field.
Learn more about populating system attributes in parcel fabric tables
If a line feature class is used as the input feature class to load unclosed parcels, you can populate system attribute fields in the parcels table by populating attribute fields on the line feature class. For example, to load a parcel identification number (PIN) for an unclosed parcel, add a Name attribute field to your line feature class. To assign a plan for the unclosed parcel add a PlanName attribute field.
User-defined attribute fields on the polygon and line feature classes can be loaded to the parcels and lines tables in the parcel fabric as long as the same attribute field is created in the parcel fabric tables before loading the data.
Specify a point feature class for the Input Point Features (optional) parameter to load user-defined attribute fields and system attribute values to the points table in the parcel fabric. Parcel fabric points are automatically created during the loading process. When point features are loaded, only the attribute values of the point features are loaded into the attribute fields of corresponding points in the parcel fabric. Attribute values can be loaded into both the system attribute fields and user-defined attribute fields on the parcel fabric Points table. User-defined attribute fields must exist on both the source point feature class and the parcel fabric Points table to be loaded successfully.
The Minimum Line String Segment Count (optional) parameter is the minimum number of line segments a line feature can have before it is loaded as a line string or natural boundary.
If a tolerance is specified for the Control Match Tolerance (optional) parameter, any loaded fabric points that lie within the specified match tolerance of an existing control point in the fabric will be linked to the control point.
Choose the Import Parcels as Unjoined Group option to load parcels 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. It is recommended to only load small groups of parcels as unjoined to reduce the complexity of the joining process when these parcels are joined to a fabric. This option is not recommended for loading large groups of parcels.
Syntax
LoadTopologyToParcelFabric_fabric (target_parcel_fabric, in_topology_class, {in_point_class}, {linestring_minimum_segments}, {control_match_tolerance}, unjoined_group, {direction_units}, {direction_type}, compute_area, {area_units}, {radial_point_tolerance}, {accuracy_units})
Parameter | Explanation | Data Type |
target_parcel_fabric | The target parcel fabric where the data will be loaded. | 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 loaded 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 loaded 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 parcel fabric points are associated with existing control points 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 that will be used when generating COGO-bearing attributes for line features during the loading process.
| String |
direction_type (Optional) | The direction type that will be used when generating COGO-bearing attributes for line features during the loading 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
LoadATopologyToAParcelFabric example 1 (Python window)
The following Python window script demonstrates how to use the LoadATopologyToAParcelFabric tool in immediate mode.
import arcpy
arcpy.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")
LoadATopologyToAParcelFabric example 2 (stand-alone script)
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
for row in rows:
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 += 1
whereclause = '%s = %s' % ("BlockNumber", x)
# 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")
Environments
Licensing information
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: Yes
- ArcGIS Desktop Advanced: Yes