Examples of Lua scripts |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Simple examples (one script can prepare multiple values of semantics): -- Multiply the area of the object at the height from the semantics field with the code 1 and save the value of one to the semantics field with code 10 -- (code depends on the map classifier) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
value = getSquare() * getCodeSem(1) setCodeSem(10, value)
-- If the value of semantics field with code 11 is set, the multiply the object length by the width from semantics field with code 11 and save the -- value in the semantics field with the code 12 (code depends on the classifier maps)
if getCodeSem(11, -1) ~= -1 then value = getLength() * getCodeSem(11) setCodeSem(12, value) end
-- Make a string from semantics field 9 and the layer name and save to the semantics field with code 345. If semantics field 9 not, write the -- value "No name"
value = getCodeSemStr(9, "No name").." - "..getLayerName() setCodeSem(345, value);
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Example of script to collect statistics for selected objects and save the report to a text file -- of calculations, function DoObject () is called on each object --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Function Start () is called when opening the script to initialize global variables function Start() TypeA = 0 TypeB = 0 TypeC = 0 Total = 0; File = io.open("c:\\Report.txt", "w") end
-- Function Stop () is called before the closing script to summarize the findings and report generation
function Stop() s = "Processed objects count is "..Total.."\n\r" File:write(s) p = 100 * TypeA / Total s = "Objects count for type A is "..TypeA.."\t percentage is "..p.."\n\r" File:write(s) p = 100 * TypeB / Total s = " Objects count for type B is "..TypeB.."\t percentage is "..p.."\n\r" File:write(s) p = 100 * TypeC / Total s = " Objects count for type C is "..TypeC.."\t percentage is "..p.."\n\r" File:write(s)
io.close(File) end
-- Statistics collection is performed in the function DoObject (), if the script contains a function Start () function DoObject() if getCodeSem(4) < 100 then TypeA = TypeA + 1; elseif getCodeSem(4) < 200 then TypeB = TypeB + 1; else TypeC = TypeC + 1; end Total = Total + 1 end
------------------------------------------------------------------------------------------------------------------- -- Example script to update the text and the semantics of the caption text -------------------------------------------------------------------------------------------------------------------
-- Request value of semantics field with code 9 "own name" sem = getCodeSemStr(9, -1) if sem ~= -1 then
-- Replace the string "abc." to "abcdef" in semantics if string.find(sem, "abc.") and string.len(sem) == 4 then setCodeSem(9, "abcdef") end end
-- Is type of object label? if getLocal() ~= 3 then return; end
text = getText(0);
-- Replace the string "abc." to "abcdef" in label if string.find(text, " abc.") and string.len(text) == 4 then setText(0, "abcdef") end
----------------------------------------------------------------------------------------------------------------------------------- -- Example of a script for formation of text semantics in the form of a part of a line of other semantics ----------------------------------------------------------------------------------------------------------------------------------- sem = getCodeSemStr(9, -1) if sem ~= -1 then -- Replace the string "38:13:000106:1708" onto ":1708" size = string.len(sem) if size > 13 then val = string.sub(sem, 13) setCodeSem(1111, val) end end |