Is anyone working on porting the Canvec Symbology toolkit to ArcGIS 10? How would you go about it if you were?

The canvec symbology toolkit is comprised of a canvec.style file (which is an ms-access mdb with a different extension, containing tables of the style names and embedded symbology bitmaps), and an arcmap composition with some VBA code to loop through the table of contents and apply the styles as appropriate.

  • Have you gotten the Match to Symbols in Style feature to lighten your load any? I work with CanVec often and this has helped. (Depending on how you need to work with and store your data...) For example, one thing I do is merge ALL desired points into a single dataset then symbolize that. – SaultDon Sep 15 '11 at 1:32
  • @SaultDon, no I haven't. I should look at that more closely. I'm trying very to avoid things like merging as I'm trying to keep our datastore up to date with the twice annual Canvec release with a minimum of manual intervention. – matt wilkie Sep 15 '11 at 17:38
  • @matt. I am doing this right now. (Still downloading the Ontario FGDB) The VBA compiles without errors in ArcGIS 10 so it should run. Did you try it? – Jakub Sisak GeoGraphics Oct 12 '11 at 15:32
  • @Jakub, I don't have vba setup in arc10, so no I haven't tried. I ended up using Joe Fraser's symobolizaton utility (in answer below) and then manually setting symbols in the layer files I use most. It's good enough for the moment, but not done. I still intend to revisit building a more comprehensive solution later. My collection of scripts for dealing with canvec is here, but they're not yet in a state where they can be easily understood or used by others. Still, there may be some things of benefit. – matt wilkie Oct 12 '11 at 17:07
  • @matt - see my answer. It might be worth installing VBA. Only takes a minute to run. – Jakub Sisak GeoGraphics Oct 12 '11 at 17:40

The VBA procedure still works. (The smiley button is not there). I loaded all data for Ontario into the SymbologyToolcanvec.mxd from the 11 File Geodatabases.

Assuming the .style file is in "C:\Users\USERNAME\AppData\Roaming\ESRI\Desktop10.0\ArcMap"

Open VBA Customize -> VBA Macros -> Visual Basic Editor from the main menu. Once in VBA Expend the Project -> Modules and click on the SEEM1 module. In the main code window place your cursor anywhere inside the MapSymbology procedure and hit run (green run button) on the main menu. There is no progress bar so wait until the hourglass disappears. (The Ontario data took about a minute to run on my machine) Done. Close VBA. All layers are properly symbolized, buildings symbols have correct orientation, categories named and layers arranged.

The only issue that remains is labeling the Named Features layer (Code 1580010). There does not appear to be a procedure for that.

enter image description here Result: enter image description here

  • thanks Jakub, I got this to work now also, though I do have a lot of features which have bright yellow "code not found" symbols instead of proper cartography. A look through the .style file shows we have feature codes not in the file. I guess not all parts of the country are represented. Still a good start though. – matt wilkie Oct 12 '11 at 22:10
  • I'm having trouble getting this to work. When I run the SEEM1 code, I get a compile error saying variable not defined, and hilighting frmSymbology in the code window. Any ideas? I'n not too familiar with VBA. Thanks. – zarbo Dec 19 '11 at 22:08

You can start by importing the styles into style manager.

The manual way is to classify a Shapefile layer by Unique Values with CODE. For each CODE you then need to match up the # with the style that you imported. Unique classification

I haven't seen the VBA code in detail, but I'm guessing it automates this procedure.

  • Thanks Mike. It's the automation part I'm most interested in. There are some 400 feature class code's to match up, not something I'm looking forward to clicking my way through. ;-) – matt wilkie Mar 10 '11 at 22:10
  • From what I understand, Map Automation via Python and arcpy.mapping is the way forward (unlike VBA): blogs.esri.com/Dev/blogs/arcgisdesktop/archive/2010/09/24/… – Mike T Mar 11 '11 at 0:24
  • I will say, for my own purpose, I styled the data when I had 9.3, and saved the mxd. I then used arc10 to import the .style and then open the mxd to see the canvec data styled as it was in 9.3. It seems to get the vba code working again it would be a fair bit of work. So just using the mxd works for me. – mike Sep 14 '11 at 21:03

CanVec Symbolization Utility 1.1 automates this process:


  • 1
    Hi J, welcome to GIS.se :) The utility you mention is a useful tool, and I do use pieces of it. It is a good answer to the question "how do I more easily symbolize Canvec?" but it doesn't directly address the substance of this question which is also about using the particular style sets distributed with Canvec. (don't go removing your answer though, it may still be helpful to people more interested in the general question). – matt wilkie Apr 20 '11 at 18:48

I thought I would add a small contribution. When downloading many NTS sheets the shapefiles include the NTS sheet number. A small change allows the ArcGIS addin to work for all sheets downloaded into a single folder.

change line:

fcs = gp.ListFeatureClasses(searchstring)


fcs = gp.ListFeatureClasses("*"+searchstring)

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.