Hi again Reinaldo,
You're just missing a comma. Instead of: rh = GetFirstRecord (sLayerName + "|" + sSetName) use: rh = GetFirstRecord (sLayerName + "|" + sSetName, ) The second parameter in question is for the sort order. Maptitude will use the "natural order" of the database if you leave that value null, which in your case is fine (since the sort order is irrelevant for your application). But I'm curious: what did you need that my macro isn't doing? It should compute both the outer perimeter of the selected area (whether the polygons are contiguous or not) and the length of any shared borders. If you need the sum of all perimeters, that is simply [the outer perimeter + (2 * the shared borders)] -- which is actually found in the macro as "perimeter_sum". --- In [email protected], Reinaldo Paul P�rez Machado <rpmgis@...> wrote: > > /*Hi Armando, > > I found that there was lacking quotation marks around the name of the > Layer. But now what follows is this then I do not know how to proceed. > > Cheers, > > Reinaldo > > */ > /* > P.S. The modified macro, that I am running on Maptitude 4.6: > > // Returns an options array where the name of the option is the Name of > the polygon and the value is its perimeter > // it also returns the total perimeter of all areas found > // > > Macro "GetPolygons" (sLayerName, sSetName, sNameField) > > > SetLayer("Favelas2010") > > // This problem was solved > *//**//* > if sNameField = null then sNameField = "ID" > > rh = GetFirstRecord (sLayerName + "|" + sSetName) > // Now stops here... > > arPerimeters = {} > nTotper = o > while rh <> null do > nPer = GetPerimeter(rh2id(rh)) > arPerimeters.(sLayerName.(sNameField)) = nPer > nTotper = nTotper + nPer > rh = GetNextRecord (sLayerName + "|" + sSetName ,, ) > end > > Return( { arPerimeters, nTotper} ) > > endMacro > */ > ------------------------------------------------------------------------ > > Armando Scalise wrote: > > > > > > HI Reinaldo > > > > > > Here is some code that might help you do that. > > > > I have not tested it, so bear in mind it might require some slight > > changes to do what you need. > > > > Good luck > > > > > > // Returns an options array where the name of the option is the Name > > of the polygon and the value is its perimeter > > // it also returns the total perimeter of all areas found > > // > > > > Macro "GetPolygons" ( sLayerName, sSetName, sNameField) > > > > SetLayer(sLayerName) > > > > if sNameField = null then sNameField = "ID" > > > > rh = GetFirstRecord (sLayerName + "|" + sSetName) > > > > arPerimeters = {} > > nTotper = o > > while rh <> null do > > nPer = GetPerimeter(rh2id(rh)) > > arPerimeters.(sLayerName.(sNameField)) = nPer > > nTotper = nTotper + nPer > > rh = GetNextRecord (sLayerName + "|" + sSetName ,, ) > > end > > > > > > Return( { arPerimeters, nTotper} ) > > > > endMacro > > > > 2011/2/4 Reinaldo Paul P�rez Machado <rpmgis@... > > <mailto:rpmgis@...>> > > > > > > > > /*Hello, > > > > Please, I would like to know how is it possible to get the > > corresponding perimeter of a bunch of polygons in a geographic files? > > > > Thanks in advance. Any aid would be very much appreciated. Cheers, > > > > Reinaldo*/ > > > > > > > > > > -- > > Armando Scalise > > > ------------------------------------ Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/Maptitude/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/Maptitude/join (Yahoo! ID required) <*> To change settings via email: [email protected] [email protected] <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
