|
POST
|
In case you missed the 2021 Developer Summit session ArcGIS Pro SDK for .NET: Introduction to the Parcel Fabric API, the recording is available here: https://www.youtube.com/watch?v=2Jd-9qCaEr0&list=PLaPDDLTCmy4btgVu7omfiaw6PhKUzyk0M
... View more
05-11-2021
03:07 PM
|
2
|
0
|
824
|
|
POST
|
Update: The Parcel Fabric API is now available with 2.7. Start here to learn more.
... View more
05-04-2021
10:36 AM
|
0
|
0
|
2129
|
|
POST
|
hi Pascal, Here are the functions. Note there is a slight signature change with addition of the spatial reference parameter. I edited, in place, the calling code in the previous comment: private bool GetCOGOFromGeometry(Polyline myLineFeature, SpatialReference MapSR, double ScaleFactor, double DirectionOffset, out object[] COGODirectionDistanceRadiusArcLength)
{
COGODirectionDistanceRadiusArcLength = new object[4] { DBNull.Value,DBNull.Value,DBNull.Value, DBNull.Value };
try
{
COGODirectionDistanceRadiusArcLength[0] = DBNull.Value;
COGODirectionDistanceRadiusArcLength[1] = DBNull.Value;
var GeomSR= myLineFeature.SpatialReference;
if (GeomSR.IsGeographic && MapSR.IsGeographic)
return false; //no SDK support for Geodesics till 2.8
double UnitConversion = 1;
if (GeomSR.IsGeographic && MapSR.IsProjected)
{ //only need to project if dataset is in a GCS.
UnitConversion = MapSR.Unit.ConversionFactor; // Meters per unit. Only need this for converting to metric for GCS datasets.
myLineFeature = GeometryEngine.Instance.Project(myLineFeature, MapSR) as Polyline;
}
EllipticArcSegment pCircArc;
ICollection<Segment> LineSegments = new List<Segment>();
myLineFeature.GetAllSegments(ref LineSegments);
int numSegments = LineSegments.Count;
IList<Segment> iList = LineSegments as IList<Segment>;
Segment FirstSeg = iList[0];
Segment LastSeg = iList[numSegments - 1];
var pLine = LineBuilder.CreateLineSegment(FirstSeg.StartCoordinate, LastSeg.EndCoordinate);
COGODirectionDistanceRadiusArcLength[0] =
PolarRadiansToNorthAzimuthDecimalDegrees(pLine.Angle - DirectionOffset*Math.PI/180);
COGODirectionDistanceRadiusArcLength[1] = pLine.Length * UnitConversion / ScaleFactor;
//check if the last segment is a circular arc
var pCircArcLast = LastSeg as EllipticArcSegment;
if (pCircArcLast == null)
return true; //we already know there is no circluar arc COGO
//Keep a copy of the center point
var LastCenterPoint = pCircArcLast.CenterPoint;
COGODirectionDistanceRadiusArcLength[2] = pCircArcLast.IsCounterClockwise ?
-pCircArcLast.SemiMajorAxis : Math.Abs(pCircArcLast.SemiMajorAxis); //radius
double dArcLengthSUM = 0;
//use 30 times xy tolerance for circular arc segment tangency test
double dTangencyToleranceTest = MapSR.XYTolerance * 30; //around 3cms if using default XY Tolerance - recommended
for (int i = 0; i < numSegments; i++)
{
pCircArc = iList[i] as EllipticArcSegment;
if (pCircArc == null)
{
COGODirectionDistanceRadiusArcLength[2] = DBNull.Value; //radius
COGODirectionDistanceRadiusArcLength[3] = DBNull.Value; //arc length
return true;
}
var tolerance = LineBuilder.CreateLineSegment(LastCenterPoint, pCircArc.CenterPoint).Length;
if (tolerance > dTangencyToleranceTest)
{
COGODirectionDistanceRadiusArcLength[2] = DBNull.Value; //radius
COGODirectionDistanceRadiusArcLength[3] = DBNull.Value; //arc length
return true;
}
dArcLengthSUM += pCircArc.Length; //arc length sum
}
//now check to see if the radius and arclength survived and if so, clear the distance
if (COGODirectionDistanceRadiusArcLength[2] != DBNull.Value)
COGODirectionDistanceRadiusArcLength[1] = DBNull.Value;
COGODirectionDistanceRadiusArcLength[3] = dArcLengthSUM * UnitConversion / ScaleFactor;
COGODirectionDistanceRadiusArcLength[2] = (double)COGODirectionDistanceRadiusArcLength[2] * UnitConversion / ScaleFactor;
return true;
}
catch
{
return false;
}
} Here is the second function for direction unit/format conversions from polar to north azimuth: private static double PolarRadiansToNorthAzimuthDecimalDegrees(double InPolarRadians)
{
var AngConv = DirectionUnitFormatConversion.Instance;
var ConvDef = new ConversionDefinition()
{
DirectionTypeIn = ArcGIS.Core.SystemCore.DirectionType.Polar,
DirectionUnitsIn = ArcGIS.Core.SystemCore.DirectionUnits.Radians,
DirectionTypeOut = ArcGIS.Core.SystemCore.DirectionType.NorthAzimuth,
DirectionUnitsOut = ArcGIS.Core.SystemCore.DirectionUnits.DecimalDegrees
};
return AngConv.ConvertToDouble(InPolarRadians, ConvDef);
}
... View more
02-26-2021
05:26 PM
|
2
|
0
|
4465
|
|
POST
|
Pascal, the function will be shared either today, tomorrow, or early next week. It is written, but needs some testing. Note that you have access to the full geometry API, and the lines in the parcel fabric are standard line features. For example, below is a code snippet to return the info for the straight line between the first and last vertex of the feature. -Tim ICollection<Segment> LineSegments = new List<Segment>();
myLineFeature.GetAllSegments(ref LineSegments);
int numSegments = LineSegments.Count;
IList<Segment> iList = LineSegments as IList<Segment>;
Segment FirstSeg = iList[0];
Segment LastSeg = iList[numSegments - 1];
var pLine = LineBuilder.CreateLineSegment(FirstSeg.StartCoordinate, LastSeg.EndCoordinate);
var dDirectionPolarRadians = pLine.Angle;
var dDistance = pLine.Length;
... View more
02-25-2021
08:52 AM
|
0
|
0
|
4482
|
|
POST
|
Hi Pascal, Below is a snippet of code to programmatically assign the COGO values. The function called GetCOGOFromGeometry is not yet complete, but this should help to get you started on the right track. Note, all of this and more will be covered in the Dev Summit during the session called: ArcGIS Pro SDK for .NET: Introduction to the Parcel Fabric API, on 8th April. As you are probably aware, there is also SDK content here. I just mention it for the benefit of others reading this post. Once it's ready I will also share the code for the function. -Tim
ParcelEditToken peToken = editOper.CopyLineFeaturesToParcelType(srcFeatLyr, ids,
destLineL, destPolygonL);
if(!editOper.Execute())
return editOper.ErrorMessage;
//collect ground to grid correction values
var mapView = MapView.Active;
if (mapView?.Map == null)
return "";
var pSpatRef = mapView.Map.SpatialReference;
var cimDefinition = mapView.Map?.GetDefinition();
if (cimDefinition == null) return "";
var cimG2G = cimDefinition.GroundToGridCorrection;
double dScaleFactor = cimG2G.GetConstantScaleFactor();
double dDirectionOffsetCorrection = cimG2G.GetDirectionOffset();
var editOper2 = editOper.CreateChainedOperation();
var FeatSetCreated = peToken.CreatedFeatures;
Dictionary<string, object> ParcelLineAttributes = new Dictionary<string, object>();
if (FeatSetCreated != null)
{
foreach (KeyValuePair<MapMember, List<long>> kvp in FeatSetCreated)
{
if (kvp.Key == destPolygonL)
continue; //skip polygons, we just want to work with the lines
foreach (long oid in kvp.Value)
{
var insp = kvp.Key.Inspect(oid);
Polyline lineGeom = (Polyline)insp["SHAPE"];
object[] COGODirectionDistanceRadiusArcLength;
if (!GetCOGOFromGeometry(lineGeom, pSpatRef, dScaleFactor, dDirectionOffsetCorrection, out COGODirectionDistanceRadiusArcLength))
{
editOper2.Abort();
return "";
}
ParcelLineAttributes.Add("Direction", COGODirectionDistanceRadiusArcLength[0]);
ParcelLineAttributes.Add("Distance", COGODirectionDistanceRadiusArcLength[1]);
ParcelLineAttributes.Add("Radius", COGODirectionDistanceRadiusArcLength[2]);
ParcelLineAttributes.Add("ArcLength", COGODirectionDistanceRadiusArcLength[3]);
ParcelLineAttributes.Add("Rotation", dDirectionOffsetCorrection);
ParcelLineAttributes.Add("Scale", dScaleFactor);
ParcelLineAttributes.Add("IsCOGOGround", 1);
editOper2.Modify(kvp.Key, oid, ParcelLineAttributes);
ParcelLineAttributes.Clear();
}
editOper2.Execute();
}
}
... View more
02-24-2021
10:05 PM
|
1
|
0
|
4492
|
|
POST
|
Hi, The GP Tool Enable COGO, adds the required attribute fields to a line feature class. On the View tab click the Geoprocessing button: On the Geoprocessing pane, click in the Search box and type COGO: Start the Enable COGO tool For the Input Line Features browse to the feature class: Click Run. After the feature class is COGO Enabled drag and drop it onto a map. When the new layer is created it detects the COGO fields and automatically applies specialized labeling and symbology for the new line layer. ArcGIS Pro 2.6 introduced a new tool that adds the ability to Split lines into COGO lines: https://pro.arcgis.com/en/pro-app/help/editing/split-lines-into-cogo-lines.htm If you select a COGO line after its split, and open the Attributes pane, using the button on the Edit tab, then you can copy and paste the value from there:
... View more
12-09-2020
04:20 PM
|
1
|
0
|
4045
|
|
POST
|
Hi Audrey, thanks for your question. With version ArcGIS Pro 2.7 the traverse grid will have the ability to configure the default circular arc entry parameters and to save those to your project. This will include setting Chord Direction as the default entry method for circular arcs. -Tim
... View more
10-23-2020
10:12 AM
|
0
|
0
|
1728
|
|
IDEA
|
Thank you Lucas for your feedback on the Meetup about Dynadjust. Support for these measurement types is still in the product plan for the future. Per our discussion earlier in the year on this topic, we will be reaching out to you / BLM to work with us on it to make sure we get it right before it's released. -Tim
... View more
09-12-2020
12:28 PM
|
1
|
0
|
3742
|
|
POST
|
Jeff, Thanks for reporting this. I have been able to reproduce the problem and confirm it is a bug. There is a fairly simple workaround. The bug is that when the column is using a Delta Angle, then if you use the “c“ override to indicate a chord distance, the distance is getting a unit angle conversion applied, because the grid cell still "thinks" it’s in an angular unit. The specific criteria are: Second Curve Parameter column is set to Delta Angle The unit drop down is "dms" Workaround: Before applying the "c" override, set the unit drop-down in the cell to "dd" (decimal degrees) - this way the numbers after the decimal point are not parsed as minutes and seconds, and this bypasses the bug. -Tim
... View more
07-23-2020
04:09 PM
|
1
|
1
|
2021
|
|
POST
|
Great demonstration by my colleague Amy Andis showing how to work with spiral curves using Pro.
... View more
07-13-2020
12:18 PM
|
3
|
0
|
1397
|
|
POST
|
Thanks for the feedback, Sarah! Glad to hear it was useful.
... View more
06-09-2020
08:38 AM
|
0
|
0
|
4301
|
|
POST
|
Hi Diane, There is a new Training Seminar available that shows creation of a subdivision from scratch (demo 3): Managing Parcels with ArcGIS Pro -Tim
... View more
06-08-2020
10:21 AM
|
1
|
2
|
4301
|
|
DOC
|
NOTE: Installing a different version of an add-in. If you are installing the add-in directly on your client machine, as opposed to placing the add-in file at a network share location, then follow these steps: First un-install the version currently on the client machine. 1. In ArcMap go to Customize -> Add-in Manager 2. On the Add-ins tab click to select the add-in you want to un-install, and then click the Delete button. 3. Click Yes on the dialog that asks for confirmation on the delete. 4. Click Close. 5. Close ArcMap. 6. Start ArcMap and use Add-in Manager to confirm the add-in is not listed under the My Add-ins section of the left pane. 7. Close ArcMap. 8. Double-click the add-in file for the version of the add-in that you want to install. 9. Click the Install Add-in button. 10. Start ArcMap and use Add-in Manager to confirm that the desired version of the add-in is now listed under My Add-ins. Troubleshooting Notes: A. if problems are encountered when attemping to run the add-in, check to make sure you have privileges on the well-known folder. You should be able to browse to the file add-in location on disk, in the well-known folder: C:\Users\<username>\Documents\ArcGIS\AddIns\Desktop10.<0-1>\ B. Alternatively, consider using a network share for your add-in, and follow the steps below. If you use a network share to load the add-in, then follow these steps: 1. In ArcMap go to Customize -> Add-in Manager. 2. In the left pane on the Add-ins tab, scroll down to the Shared Add-ins. 3. Under Shared Add-ins, click on the add-in name that you want to change and confirm the add-in version in the right pane is the one you want to change from. 4. Click the Options tab on the Add-in Manager and get the share location for the add-in you want to change from. 4. Click Close on the Add-in Manager and close ArcMap. 5. Using the required privileges, browse to the share location and replace the add-in file with the version of the add-in file that you want to change to. 6. Start ArcMap and use Add-in Manager to confirm that the desired version of the add-in is now listed under Shared Add-ins. General notes and resources: A. See the Administrator Settings heading under the help section here: https://bit.ly/2XD5mb8 B. Additional uninstall and re-install steps:https://bit.ly/2xN8dPy
... View more
04-16-2020
10:08 AM
|
0
|
0
|
1080
|
|
POST
|
Travis, thanks for the follow up. Since you mention tangency, note that the Circular Arc tool in Pro has some additional functionality for that as well. While using the Two-Point line tool, you can switch to the Tangent Curve segment tool, and snap to the end of an existing line feature. Then when you start the Circular arc tool the direction parameter defaults to Tangent type and the tangent direction value is automatically calculated from the geometry of the existing line feature that you snapped to, and that value is placed in the direction entry field as the default.
... View more
01-28-2020
10:15 AM
|
1
|
0
|
9004
|
|
POST
|
Hi Joe, note that the Circular Arc tool itself has the capability to double as a curve calculator. For example, you can choose and enter the circular arc parameters in the dialog and get the blue line preview of the resulting curve shown in the map: Changing the *values* of the parameters on the right-hand side of the dialog will update the circular arc preview to show the resulting circular arc...whereas changing any of the parameters *types* on the left side of the dialog, does NOT change the resulting curve on the preview, but it does update the values of the parameters in the dialog to reflect that same circular arc geometry for the numbers that were initially typed in. The following are screenshots of the curve calculations for this example: Does this help for your scenario? -Tim
... View more
01-27-2020
01:26 PM
|
1
|
7
|
9004
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 4 weeks ago | |
| 2 | 4 weeks ago | |
| 1 | 4 weeks ago | |
| 2 | 05-06-2026 06:04 PM | |
| 1 | 09-18-2024 12:38 PM |
| Online Status |
Offline
|
| Date Last Visited |
3 weeks ago
|