I need to label township ranges along the side and top of my map, respectively. I know the grid in the frame properties is a way to label the edges with lat/lon. I Think there is a way to do the same type of thing with dynamic text objects.

Anyone have experience with this?

  • I wish one of these were what I am looking for. I fear it is not doable without just slogging through manually. – Brad Nesom May 15 '11 at 5:27
  • It is doable. You have to create a custom grid. See additional links in my answer. – Sean May 16 '11 at 13:38
  • Is an arcobjects solution acceptable? – Kirk Kuykendall May 16 '11 at 14:06

You can do this with dynamic text of Data Driven Pages in ArcGIS 10.

EDIT: On first read I though you were trying to label neighbors but re-reading after Jakub's comment, it sounds like you want a custom reference grid. You need to create a custom overlay grid from your reference data. Check this relevant thread on the ESRI forums.

  • I don't see anything there that would indicate that you can use dynamic text to label latitude and longitude. Can you please provide some more information or a methodology? – Jakub Sisak GeoGraphics May 13 '11 at 17:07
  • Maybe I'm mistaken, but I don't think he's asking about labeling long/lat. – Sean May 13 '11 at 17:11
  • no I want to label T23N, and R5W along the edges. – Brad Nesom May 13 '11 at 17:17
  • thanks for the forum thread I got it to work but now am extending my polygons to allow labeling the entire state. – Brad Nesom May 16 '11 at 21:46

Take a look at What are grids and graticules? in the help. Not a programmatic solution but may be all you need.

  • I think Brad is asking whether this can be done with the dynamic text in version 10. – Jakub Sisak GeoGraphics May 13 '11 at 17:11

via arcpy

    import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ParcelAtlas.mxd")
pageNameList = ["MPB", "PJB", "AFB", "ABB"]
for pageName in pageNameList:
    pageID = mxd.dataDrivenPages.getPageIDFromName(pageName)
    mxd.dataDrivenPages.currentPageID = pageID
    fieldValue = mxd.dataDrivenPages.pageRow.TSR  #example values from a field called TSR are "080102", "031400"
    TRSTitle = arcpy.mapping.ListLayoutElements(MXD, "TEXT_ELEMENT", "TRSTitle")[0]
    township, range, section = fieldValue[:2].strip("0"), fieldValue[2:-2].strip("0"), fieldValue[-2:].strip("0")
    if section != "": 
        TRSTitle.text = "Section {0} T.{1}N. R.{2}W. W.M.".format(section, township, range)
        TRSTitle.text = "T.{0}N. R.{1}W. W.M.".format(township, range)
    mxd.dataDrivenPages.printPages(r"\\olyfile\SUITE_303", "CURRENT")
del mxd

bottom of page DataDrivenPages (example 2) http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00s300000030000000.htm


Just realized this is an ANCIENT thread...whoops. Leaving the answer for any who might stumble upon it.

We have a feature class named Townships, that we use as our grid for mapbooks. In the attribute table, for each row we have a "Township", "Range", and a "MapName" column. Then we simply add two dynamic text objects like so:

The MapName column is simply the Township and Range together, separated by a hyphen. Overly redundant, but it has its purpose.

So, if you have the township and range in your attribute table, just add the labels above, substituting your column names. If you don't have the township and range, add the columns to your table.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.