Arcobjects .Net - Create a Parcel in Parcel Fabric

1211
1
10-02-2015 04:18 AM
VinayanMP
New Contributor

hello,

I want to create a new parcel in a parcel fabric. I have the x, y coordinates for the parcels to be created. I searched around a lot and found really nothing that actually "CREATES" a parcel.

Here is what I have tried so far.

IPointCollection pts = feat.ShapeCopy as IPointCollection; //an existig polygon from another featureclass used for copying x,y,z..

                ICadastralPoints cadPoints = new CadastralPacketClass();

                for (int i = 0; i < pts.PointCount; i++)

                {

                    IPoint p = pts.get_Point(i);

                    IGSPoint gsPt = new GSPointClass();

                    gsPt.X = p.X;

                    gsPt.Y = p.Y;

                    gsPt.Z = p.Z;

                    gsPt.Type = -1; //just tried when nothing worked..made no difference..

                    cadPoints.AddPoint(gsPt);

                }

                IEnumCELines ceLines = new EnumCELinesClass();

                ICadastralLines cadLines = new CadastralPacketClass();

                ISegmentCollection segments = feat.ShapeCopy as ISegmentCollection; //an existig polygon from another featureclass used for getting segments

                for (int i = 0; i < segments.SegmentCount; i++)

                {

                    ISegment seg = segments.get_Segment(i);

                    IGSLine gsLine = new GSLineClass();

                    double bearingDeg = utils.GetBearing(seg.FromPoint, seg.ToPoint);

                    gsLine.Bearing = (Math.PI * bearingDeg) / 180;

                    gsLine.Distance = seg.Length;

                    ceLines.Add(gsLine);

                }

                IEnumGSLines gsLines = ceLines as IEnumGSLines;

                IParcelLineFunctions parcelLineFunctions = new ParcelFunctionsClass();

                IConstructParcelFunctions constrParcelFunctions = new ParcelFunctionsClass();

                ICadastralPacket m_EditPacket = cadExtension.GetEditPacket();

                IEnumGSParcels outputParcels = null;

                int peRrorLinePointfrom = -1;

                int peRrorLinePointTo = -1;

                IGSPlan gsPlan = gsParcel.Plan; //gsParcel is an existing parcel..

                constrParcelFunctions.ConstructParcelsFromLines(gsPlan, cadPoints, gsLines, m_EditPacket, 1, ref outputParcels, ref peRrorLinePointfrom, ref peRrorLinePointTo);

                IGSParcel resultParcel = outputParcels.Next(); //resultParcel is null now..was expecting this to have some value..

Hope anyone would guide me into right direction..

0 Kudos
1 Reply
TimHodson
Esri Contributor

There are some parcel-fabric-specific code snippets available for download from this location on AGOL:

http://www.arcgis.com/home/item.html?id=816ce8cc1ddc4ac2a034f64914947912

Also, on GitHub the code for the published parcel editing/fabric add-ins is available:

Esri/parcel-fabric-desktop-addins · GitHub