I would like to find the length and width of polygons with respect to a compass direction stored in the attribute table. Does anyone have any thoughts on how to do this?

Thanks for your help!

Thanks for your help!

I would like to find the length and width of polygons with respect to a compass direction stored in the attribute table. Does anyone have any thoughts on how to do this?

Thanks for your help!

Thanks for your help!

- Rud,

In case the directions happen to align with the largest/longest extents of the polygons, and if you have ArcGIS 10, you can try Minimum Bounding Geometry tool (Data Management toolbox - Features toolset), which has the RECTANGLE_BY_WIDTH and RECTANGEL_BY_AREA options available for ArcView license. The width and length measurements can be included in the output.

Otherwise, if you can find a script that rotates the features by the directions, you can then use the Minimum Bounding Geometry tool to get the measurements. - I'm not sure if this is helpful but there is also a Cartography tool called Calculate Polygon MainAngle.

I have used this in conjuction with the previously mentioned Minimum Bounding Geometry tool.

My issue was that I needed to create an atlas from an irregular index grid of roughly 2600 tiles at various scales and I needed a way to determine which tiles had the largest extents factoring in the scale so that I could make sure I wasn't clipping any tile boundaries in the data frame of my atlas. In my case, since the data frame is rectangluar and not rotated I only need to know the largest North-South and East-West extents of my index grid tiles factoring in map scale.

Rather than setting up the data driven pages atlas and clicking through 2600 tiles to see if any of the tiles were clipped I used the two previously mentioned tools to script a solution.

I used the Minimum Bounding Geometry tool to find the largest and smallest extents of each tile's envelope. But without knowing which direction that longest side is, it's not much use.

So then I used the Calculate Main Angle tool to give me the angle of the longest extent of the polygon evelope created from the previous tool.

I also added two fields to the temp polygon envelopes dataset that are scale factor fields (Max and Min widths from the Minimim Bounding Geometry tool / map scale).

I run some cursors over the polygon envelopes dataset that pulls out the largest extent factoring in scale and it's direction, and then the largest extent in the opposite direction.

I then add a new field to my index grid and populate the two tiles with the direction in which they are the largest, or if one tile is the largest in both directions I just populate that tile with "Both".

Anyway, I don't know if anyone else has needed to figure this out but I am willing to share my code if anyone really needs it.

Joel - I just want to let you know that if you check the option of "Add geometric characteristics as attributes to output", Minimum Bounding Geometry will include a field for orientation:

MBG_Orientation�??The orientation of the longer side of the resulting rectangle.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003q000000 I just want to let you know that if you check the option of "Add geometric characteristics as attributes to output", Minimum Bounding Geometry will include a field for orientation:

MBG_Orientation�??The orientation of the longer side of the resulting rectangle.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003q000000

I know that the documentation indicates that the tool is supposed to output the orientation for**envelopes**but I do not believe that it does.Each geometry type can be characterized by one or more unique measurements; these measurements can optionally be added to the output as new fields as described below. The width, length, and diameter values are in feature units; the orientation angles are in decimal degrees clockwise from north. The prefix, MBG_, indicates minimum boulding geometry field.

For RECTANGLE_BY_AREA, RECTANGLE_BY_WIDTH, and ENVELOPE, the new fields and measurements are:

MBG_Width�??The length of the shorter side of the resulting rectangle.

MBG_Length�??The length of the longer side of the resulting rectangle.

MBG_Orientation�??The orientation of the longer side of the resulting rectangle.

I have tested several times using the tool in toolbox checking the "Add geometry characteristics as attributes to output" option and in the scripting environment using the "MBG_FIELDS" option.

In both cases the only MBG fields that I see in the output are MBG_Width and MBG_Length.

I tested using the RECTANGLE_BY_WIDTH option and the MBG_Orientation field did show up.

I haven't tested the RECTANGLE_BY_AREA option but it definitely seems that MBG_Orientation is not in the output when the ENVELOPE option is selected.

Is this a bug or was orientation not meant to be part of the ENVELOPE option? If not then I would like to see the help documents updated to reflect the way the tool actually works.

Thanks,

Joel- Rotating by attribute and calculating the width of the bounding envelope sounds like a promising approach!

Unfortunately I'm having a problem finding a script that rotates polygons by attributes. I've pasted one in below that is supposed to be used in the field calculator, but it fails every time I run it. Does anyone know of any other scripts for rotating polygons, or can you spot the problem with this one? (I did modify the name of the angle field)

'=========================

'polygon_rotate_byFieldValues.cal

'Author: Ianko Tchoukanski

'http://www.ian-ko.com

'=========================

Dim pPolygon As IPolygon

dim pArea As IArea

Dim pOrigin As IPoint

Dim dAngle As Double

Dim pTransform As ITransform2D

Dim Pi as Double

Dim sAngleField

'=======================

'adjust the value below

sAngleField = [Angle]

'=======================

Pi = 4 * Atn(1)

If (Not IsNull([Shape])) Then

Set pPolygon = [Shape]

dAngle = sAngleField*Pi/180

If (Not pPolygon.IsEmpty) Then

Set pArea = pPolygon

Set pOrigin = pArea.Centroid

Set pTransform = pPolygon

pTransform.Rotate pOrigin, dAngle

End If

End If

__esri_field_calculator_splitter__

pPolygon - Here is my (awkward) solution:

1. Run "polygon_rotate_byFieldValues.cal" using ArcGIS 9.x to rotate the polygons. This will not work on ArcGIS 10.x

2. On the output, run the minimum bounding geometry tool using geometry type: envelope.

3. On the output, run the minimum bounding geometry tool using geometry type: width.

You must run the MBG tool twice, or else you cannot know the orientation of the longest side. - Rud,

You should not have to run the tool twice. Here is how:

Once the polygons are rotated, run Minimum Bounding Geometry tool with the RECTANGLE_BY_WIDTH type, make sure you check the box "Add geometric characteristics as attributes to output". The output has the MBG_Width and MBG_Length fields.

Joel,

Thanks again for pointing out the doc error. The ArcGIS 10 web help has been updated:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003q000000

Someone else may have a simpler solution...