Thanks a lot Greg for this solution, it is very helpful given the lack of other ways to do it. The only problem is related to the fact that it will be very slow because for example creating contours for entire clutter map of France takes at least one hour (if MapInfo doesn't crash because of huge number of objects which has to be created).
I don’t think that you can do much analysis within Vertical Mapper as you are using a classified grid, which has character attribute information, rather than a numeric grid (like a DEM).
You can use the Region Information tool on the VM toolbar (i within a polygon) and it will allow you to select a polygon from your admin boundary table and report back the area and percent for each classification within the selected polygon. Unfortunately, I couldn’t find a way of doing this for ALL the polygons within the table using the functions available within VM. You can do this for a numeric grid, but it only returns statistical information (like max value or standard deviation)>
The process I settled on in the end was to convert the .grc file into a vector table using the Contour option within VM. This will trace around the cell boundaries for each classification and create a region for each one. You can then use this file within MapInfo and use SQL to work out the area overlap between the admin boundary and land cover polygon tables. This query will do it for the sample data you posted:
Select FrVecSmpl_UTM31n_25m.CODE_INSEE, x_grd_contour.Class, sum(proportionoverlap(FrVecSmpl_UTM31n_25m.obj, x_grd_contour.obj)), sum(areaoverlap(FrVecSmpl_UTM31n_25m.obj, x_grd_contour.obj)) from FrVecSmpl_UTM31n_25m, x_grd_contour where FrVecSmpl_UTM31n_25m.Obj intersects x_grd_contour.Obj group by 1,2 into Selection
(Sorry, but I can't upload the x_grd_contour.tab table that I created in VM)
It does take awhile to run, so you may well be better off using FME now that you are working with 2 vector tables.
The query groups by CODE_INSEE (1) and CLASS (2) and proportionoverlap() produces the percentage of one object covered by another and areaoverlap() returns the area of overlap in the currently set area units (Map – Options – Area Unts)
Not sure if that helps you any, but I don't think there is any other way of doing it using MapInfo and Vertical Mapper.
The best way to do this with MapInfo and VM would be a MapBasic program which would be able to use that function in Vertical Mapper which produce statistics for a single polygon. But as far as I see there is no way to use VM functions from within MapBasic. Do I miss something ?