[GIS] Programmatically calculating the length of all polyline features in a featureclass

arcgis-10.0arcobjectsvb.net

I've come across this issue a few times and have not yet found an agreed upon solution on any forum.

Simply put, I have a featureclass containing many polyline features. I would like to calculate the lengths of each feature and write that value to a new field, which I have already added to the featureclass.

I know that I can export the featureclass to a geodatabase and have the length calculated automatically, but that doesn't make much sense in terms of programmatic workflow. It seems like I might be missing something simple, but there are obviously others out there with the same unanswered question.

EDIT: I should have been more clear. I would like to carry this out using ArcObjects. The field calculator method that keeps coming up does not appear to work for this purpose.

EDIT 2: I've sorted out one method for doing this using ArcObjects. Solution/Code is below. Thanks for all the help and suggestions.

The following code assumes you are operating on IFeatureClass and have already added a field called "Length" to the existing FeatureClass (which contains a series of polyline Features). I have tested it on a shapefile containing about 300 polyline Features.

            Dim nLengthFieldIndex As Integer = pFCXS.FindField("Length")
            Debug.Assert(nLengthFieldIndex > -1)
            Dim dLength As Double
            If TypeOf pFC Is IFeatureClass Then
                Dim pFeatureCursor As IFeatureCursor
                pFeatureCursor = pFC.Search(Nothing, False)
                If TypeOf pFeatureCursor Is IFeatureCursor Then
                    Dim pFeature As IFeature = pFeatureCursor.NextFeature()
                    While pFeature IsNot Nothing
                        Dim pLine As IPolyline
                        pLine = pFeature.Shape
                        If TypeOf pLine Is IPolyline Then
                            dLength = pLine.Length
                            pFeature.Value(nLengthFieldIndex) = dLength
                            pFeature.Store()
                            pFeature = pFeatureCursor.NextFeature
                        End If
                    End While
                End If
                pFeatureCursor.Flush()
            End If

Best Answer

You can use Field Calculator for the same.
See the code snippet below.
Dim dblLength as double
Dim pCurve as ICurve
Set pCurve = [shape]
dblLength = pCurve.Length

Refer the online link for more information.

Cheers!