I'm looking for an ArcGIS 9.3.1 solution to change annotation font size in an automated/dynamic way. The annotation data represents civic addresses and are displayed over a parcel fabric. What we would like to do is have the font size change in proportion to the area of the parcel. The current dataset has several classes and this kind of lets us do what we want, but still, it doesn't cut it. In the past we have done this manually, but our quickly growing municipality makes this task rather arduous and cumbersome. I can't foresee a simple solution to this problem, but I'm willing to try anything.
-
Out of curiosity ..what was your manual approach? Were you running a query on geometry/area, then field calculating the font size variable using some ratio equation?– elrobisCommented Dec 4, 2012 at 19:40
-
Much more manual than that ... we were going into the attribute table and manually changing the font size on an individual bases. This worked greate when we were a small rural municipallity where things changed very slowly. This method is no longer feasible. I was thinking along the lines of what you have stated, using some ratio based on parcel size.– dchaboyaCommented Dec 4, 2012 at 20:04
-
Gotcha---are the annos in an AnnotationFeatureClass, or are they dynamically labeled on-the-fly in ArcMap from a parcel polygon FeatureClass? Also, what format is the data (SDE, GeoDatabase, PGDB, etc.)?– elrobisCommented Dec 4, 2012 at 20:12
-
It's an AnnotationFeatureClass in a FileGeoDatabase.– dchaboyaCommented Dec 4, 2012 at 20:17
-
heh, ok and finally, is it living in a central location/server?– elrobisCommented Dec 4, 2012 at 20:23
1 Answer
I'd probably use ArcObjects to create a simple little command line utility that took as params 1) a path to the dataset, and 2) the AnnoFeatureClass's layer name, then measured the parcel areas and imposed a font size. Next, I'd use the Windows TaskScheduler to run the utility every night and ensure the dataset stays tip-top.
Modifying your annos dataset may not be straightforward, however---if you use Annotation Classes, you may have to set the feature's class id from a handful of class options/categories, but if you're storing the characteristics inline (bold, font family, font size), then I think you can forcibly update the anno's FontSize
field. It sounds like you're already setting the FontSize
manually, so I would expect you could pursue that case programmatically without introducing new concerns (that is, I recall inline styling is bulky, and can lead to heavy data sets).
Next, associating the anno points back to their parcel features may present another obstacle, especially if some of your annos are placed outside of the polygons they label (i.e. via leaderlines)---in this case, you can't expect a geometric intersection of point-in-polyon to return a perfect match of anno-to-feature, but they may be good enough to satisfy. Alternatively, you might have feature-linked annos, which in theory, should simplify that problem.
I've never much enjoyed working with the AnnotationFeatureClass, but I do believe I have some old code hibernating somewhere that might apply to this sort of problem. I'll see if I can find it.
-
Thanks for the response. I can forsee needing to inlcude a few conditional statements to deal with probablimatic anno features. One that comes to minde is several anno features located within the same parcel(e.g. strata unit). If we are basing the size of the feature based on a ratio derived from parcel area then we may end up with overlaping anno features. Good times!– dchaboyaCommented Dec 4, 2012 at 22:34