This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== EGOML Script ====== ===== Overview ===== Any model can be saved as an EGOML document. The resulting file uses the extension ".egoml" (the old extension ".xml" is still supported for backward compatibility). See [[basic_data_flow|Basic Data Flow]] for the execution model shared by EGOML and [[ego_script|EGO Script]]; this page covers the XML notation specifically. The EGOML file is an XML document written according to the following DTD; see [[https://skew.org/xml/tutorial/|skew.org's XML tutorial]] for a good introduction to the DTD description syntax: <code dtd> <?xml version="1.0"?> <!DOCTYPE script [ <!ELEMENT script (property*, functor*, containerfunctor*)> <!ELEMENT functor (property*, inputport*, outputport*)> <!ATTLIST functor name CDATA #REQUIRED> <!ELEMENT containerfunctor (property*, inputport*, outputport*, internalinputport*, internaloutputport*, (functor|containerfunctor)*)> <!ATTLIST containerfunctor name CDATA #REQUIRED> <!ELEMENT property EMPTY> <!ATTLIST property key CDATA #REQUIRED value CDATA #REQUIRED> <!ELEMENT inputport (#PCDATA)> <!ATTLIST inputport name CDATA #REQUIRED peerid IDREFS #IMPLIED> <!ELEMENT outputport EMPTY> <!ATTLIST outputport name CDATA #REQUIRED id ID #REQUIRED> <!ELEMENT internalinputport EMPTY> <!ATTLIST internalinputport name CDATA #REQUIRED peerid IDREFS #IMPLIED> <!ELEMENT internaloutputport EMPTY> <!ATTLIST internaloutputport name CDATA #REQUIRED id ID #REQUIRED> ]> </code> The property keys are always fully expanded. There is no property alias as in the [[ego_script|EGO Script]] format. Below is an example of an EGOML script used to load a map, calculate an image convolution, and save the result: <file xml apply-edge-detection-convolution.egoml> <?xml version="1.0" standalone="yes" ?> <script> <property key="dff.date" value="Fri Apr 22 16:07:49 2011" /> <property key="dff.version" value="1.6.2.20101213" /> <property key="metadata.author" value="Dinamica Team" /> <property key="metadata.description" value="This is an example of map algebra expression written in Dinamica’s Calculate Map functor. This functor also performs contextual image operation, such as edge detection filters using nbConvol expression." /> <property key="metadata.organization" value="CSR / UFMG" /> <property key="metadata.showproperties" value="yes" /> <property key="metadata.title" value="Apply Edge Detection Convolution Easier" /> <functor name="LoadMap"> <property key="dff.functor.alias" value="input map" /> <inputport name="filename">"../../lesson1/amazon_states.tif"</inputport> <inputport name="loadAsSparse">.no</inputport> <inputport name="defineNullValue">.no</inputport> <inputport name="nullValue">0</inputport> <inputport name="suffixDigits">0</inputport> <inputport name="step">.none</inputport> <inputport name="workdir">.none</inputport> <outputport name="map" id="v1" /> </functor> <functor name="SaveMap"> <property key="dff.functor.alias" value="saved map" /> <inputport name="map" peerid="v2" /> <inputport name="filename">"output.ers"</inputport> <inputport name="suffixDigits">0</inputport> <inputport name="step">.none</inputport> <inputport name="useCompression">.yes</inputport> <inputport name="workdir">.none</inputport> </functor> <containerfunctor name="CalculateMap"> <property key="dff.container.collapsed" value="yes" /> <property key="dff.functor.alias" value="edge map" /> <property key="dff.functor.comment" value="Image convolution in Dinamica EGO" /> <inputport name="expression">[ nbConvol(i1, t1, 3, 3) ]</inputport> <inputport name="cellType">.int32</inputport> <inputport name="nullValue">0</inputport> <inputport name="resultIsSparse">.no</inputport> <outputport name="result" id="v2" /> <functor name="NumberMap"> <property key="dff.functor.alias" value="numberMap1215" /> <inputport name="map" peerid="v1" /> <inputport name="mapNumber">1</inputport> </functor> <functor name="NumberTable"> <property key="dff.functor.alias" value="numberTable1216" /> <inputport name="table">[ "Key" "Value", 1 1 .. 4 1, 5 -8, 6 1 .. 9 1 ]</inputport> <inputport name="tableNumber">1</inputport> </functor> </containerfunctor> </script> </file>