/3.2 (Extension.1 Name: "Meff Fragmentation Analysis (260405)" FirstRootClassName: "Script" Roots: 2 Roots: 3 Roots: 4 Roots: 5 Roots: 6 Roots: 7 Roots: 8 Roots: 13 Version: 32 InstallScript: 21 UninstallScript: 22 ) (Script.2 Name: "meff_clip" SourceCode: "'av.DelayedRun(\"GeoProc.CloseWait\",nil,1)\n\ntheview = av.GetActiveDoc\nintheme1 = self.get(0).asstring\nintheme2 = self.get(1).asstring\noutFName = self.get(2)\nselect1 = false\nselect2 = true\n\nif ((theview.findtheme(intheme2)=NIL) or (theview.findtheme(intheme1)=NIL)) then\n msgbox.error(\"At least one theme is not selected\",\"Error\")\n return(false)\nend\n\n'geowait=av.finddialog(\"GeoWait\")\n'geowait.findbyname(\"changeme\").setlabel(\"Clipping 2 themes\")\n'geowait.open\n\nftab1 = theView.FindTheme(intheme1).getftab\nftab1s hpField=ftab1.findfield(\"shape\")\nif (select1) then\n ftab1records = ftab1.getselection\n nrecords=ftab1.GetNumSelRecords\nelse\n ftab1records = ftab1\n nrecords=ftab1.GetNumRecords\nend\n\nftab2 = theView.FindTheme(intheme2).getftab\nftab2shpField=ftab2.findfield(\"shape\")\nif (select2) then\n ftab2records = ftab2.getselection\n nrecords2=ftab2.GetNumSelRecords\nelse\n ftab2records = ftab2\n nrecords2=ftab2.GetNumRecords\nend\n\n\naFilename=\"$HOME\".asfilename.MakeTmp (\"tmp\", \"shp\")\n\nftab22=FTab.MakeNew( aFilename, POLY GON )\ntempfield={Field.Make (\"c\", #FIELD_SHORT, 2, 0)}\nftab22.AddFields( tempfield )\nftab22.seteditable(false)\nftab22.seteditable(TRUE)\n\nftab22shpField=ftab22.findfield(\"shape\")\nftab22cField=ftab22.findfield(\"c\")\ncount=0\nfor each arec in ftab2records\n count=count+1\n av.showmsg(\"processing overlay shapes on\"++count.asstring++\"of\"++nrecords2.asstring)\n test=av.SetWorkingStatus\n av.showstopbutton\n if (test=FALSE) then\n geowait=av.finddialog(\"GeoWait\")\n geowait.close\n return(nil)\n end\n\n ashp=fta b2.returnvalue(ftab2shpfield,arec)\n x=ftab22.addrecord\n ftab22.setvalue(ftab22shpField,x,ashp)\n ftab22.setvalue(ftab22cField,x,1)\nend\nftab22.seteditable(false)\n\n\nftab2=ftab22\nftab2records=ftab2\nftab2shpField=ftab2.findfield(\"shape\")\nftab2cField=ftab2.findfield(\"c\")\nnrecords2=ftab2.getnumrecords \nintheme2 = FTheme.Make(ftab2)\ntheview.addtheme(intheme2)\n\n\notheme=intheme2\n\n\n\n\n \nshapeType = ftab1shpField.GetType\n\nif (shapeType = #FIELD_SHAPELINE) then \n outClass = POLYLINE\nelseif (shapeType = #FIELD_SHAP EMULTIPOINT) then\n outClass = MULTIPOINT\nelseif (shapeType = #FIELD_SHAPEPOINT) then\n outClass = POINT\nelseif (shapeType = #FIELD_SHAPEPOLY) then\n outClass = POLYGON\nelse\n MsgBox.Error(\"Invalid shape field type.\", \"Clip Themes\")\n geowait.close\n return nil\nend\n\nOutputFTab = FTab.MakeNew( outFName, outClass )\n\ntheme1Fields = {}\ntheme2Fields = {}\n\nfor each f in ftab1.GetFields\n if (f.GetName <> \"Shape\") then\n fCopy = f.Clone\n theme1Fields.Add(fCopy)\n end\nend\n\nif (theme1Fields.Count > 0) then\n Ou tputFTab.AddFields( theme1Fields )\nend\n\noutshpfld = OutputFtab.findfield(\"Shape\")\n\nftab1_oldselection = ftab1.getselection.clone\n\n\nOutputFtab.SetEditable(False)\n\n\nacount=0\nftab1_oldselection = ftab1.GetSelection.Clone\n\n\nif (select1.not) then\n '** Select the features of intheme1\n theView.FindTheme(intheme1).SelectByTheme (intheme2, #FTAB_RELTYPE_INTERSECTS, 0, #VTAB_SELTYPE_NEW )\n ftab1.updateselection\n ftab1records = ftab1.getselection\n nrecords = ftab1.getnumselrecords\nelseif (select1) then\n '** Sele ct the features of intheme1 from the currently selected set\n theView.FindTheme(intheme1).SelectByTheme (intheme2, #FTAB_RELTYPE_INTERSECTS, 0, #VTAB_SELTYPE_AND )\n ftab1.updateselection\n ftab1records = ftab1.getselection\n nrecords = ftab1.getnumselrecords\nend\n\naFilename2=\"$HOME\".asfilename.MakeTmp (\"tmp\", \"shp\")\nnewFTab = FTab2.Summarize( aFilename2, Shape, ftab2cfield,{ftab2shpfield},{#VTAB_SUMMARY_AVG})\nnewFTab.CreateIndex( newFTab.FindField( \"Shape\" )) \nftab2=nil\nftab2=newftab\nnewftab=nil\nftab2record s=ftab2\nftab2shpField=ftab2.findfield(\"shape\")\nnrecords2=ftab2.getnumrecords \ntheview.deletetheme(intheme2)\nintheme2 = FTheme.Make(ftab2)\ntheview.addtheme(intheme2)\nselectedshape=ftab2.returnvalue(ftab2shpField,0)\n\nOutputFtab.seteditable(True)\n\nacount=0 'A counter variable\nfor each aFtab1record in ftab1records\n acount=acount+1\n av.showmsg(\"Splitting Shapes. On shape\"++acount.asstring++\" of\"++nrecords.asstring)\n test=av.SetStatus(acount/nrecords * 100)\n av.showstopbutton\n if (test=FALSE) then\n geowait=av.finddialog(\"GeoWait\")\n geowait.close\n return(nil)\n end\n theSRCshape = ftab1.returnvalue(ftab1shpField,aFtab1record)\n' if (select2) then\n' ftab2.setselection(ftab2_oldselection)\n' ftab2.updateselection\n' seltype=#VTAB_SELTYPE_AND \n' else\n seltype=#VTAB_SELTYPE_NEW\n' end\n if (theView.getprojection.isNull) then\n intheme2.SelectbyShapes({theSRCshape}, seltype)\n else\n pshp=theSRCShape.returnProjected(theView.getprojection)\n intheme2.SelectbyShapes({pshp}, seltype)\n end \n\n recordcount = 0 \n' for each Selrec in ftab2.getselection\n recordcount=recordcount +1\n' SelectedShape = biginshp\n' ftab2.returnvalue(ftab2shpField,Selrec)\n if (outshpfld.getType = #FIELD_SHAPELINE) then\n if (SelectedShape.iscontainedin(theSRCShape)) then\n alineshp1 = SelectedShape\n else 'Else split the line using the polygon\n alineshp1 = theSRCshape.LineIntersection(SelectedShape)\n end \n for each alineshp in alineshp1.explode\n theou trec=outputftab.addrecord\n outputFtab.SetValue(outshpfld,theoutrec,alineshp) \n for each afield in theme1Fields\n oldfield=ftab1.findfield(afield.getname)\n if (oldfield<>NIL) then \n oldvalue=ftab1.returnvalue(oldfield,aFtab1record)\n outputftab.setValue(afield, theoutrec, oldvalue)\n end\n end\n end\n elseif(outshpfld.getType = #FIELD_SHAPEPOLY) then\n shpIntersect1 = theSRCshape.ReturnIntersection(SelectedShape) \n if (shpintersect1.isempty) then \n continue \n end\n for each shpIntersect in shpIntersect1.explode\n theoutrec=outputftab.addrecord\n outputFtab.SetValue(outshpfld,theoutrec,shpIntersect)\n for each afield in theme1Fields\n oldfield=ftab1.findfield((afield.getname))\n if (oldfield<>NIL) then \n oldvalue=ftab1.returnvalue(oldfield,aFtab1record)\n outputftab.setValue(afield, theoutrec, oldvalue)\n end\n en d \n end\n else\n if (theSRCshape.IsContainedIn(SelectedShape) ) then \n theoutrec=outputftab.addrecord\n outputFtab.SetValue(outshpfld,theoutrec,theSRCshape)\n for each afield in theme1Fields\n oldfield=ftab1.findfield((afield.getname))\n if (oldfield<>NIL) then \n oldvalue=ftab1.returnvalue(oldfield,aFtab1record)\n outputftab.setValue(afield, theoutrec, oldvalue)\n end\n end \n end\n end 'if its poly or line\n' end 'end for each selected record in the table2\nend 'ends the for each record in the table1\n\nOutputftab.seteditable(false)\n\n\n'----------------------------------------------------------\n' Reset the initial selection\n'----------------------------------------------------------\ntheview.deletetheme(otheme)\ntheview.deletetheme(intheme2)\n\nftab2.deactivate\nftab22.deactivate\n\notheme=nil\nintheme2=nil\nftab22=nil\ntempfield=nil\nnewftab=nil\nftab22shpField=nil\nftab22cField=nil\nftab2=nil\nftab2shpField=NIL\nftab2records=NIL\n\na v.purgeobjects\nav.purgeobjects\n\n\n\nftab1.setselection(ftab1_oldselection)\nftab1.updateselection\n\nif (OutPutFTab.GetNumRecords = 0) then\n Msgbox.info(\"No features were clipped.\",\"\")\n return nil\nend\n\n\ntheNewTheme = FTheme.Make( OutputFTab )\n'theView.AddTheme( theNewTheme )\nSelectedShape=nil\n\n'geowait.close\nav.clearstatus\nav.purgeobjects\n\nif (file.canDelete(aFilename)) then\n file.delete(aFileName)\nend\nif (file.canDelete(aFilename2)) then\n file.delete(aFileName2)\nend\n\n" ) (Script.3 Name: "meff_ganz" SourceCode: "theview = av.GetActiveDoc\nthemelist = theView.GetThemes\nworkshp = \"$HOME\".asfilename.MakeTmp(\"work\", \"shp\")\n\nZgeoTheme = MsgBox.List (themeList, \"Select fragmentation polygon layer to be analysed\", \"Complete fragmentation analysis\")\nZgeoTheme.ExportToFTab (workshp)\n\nFarea = 0\nif (MsgBox.YesNo (\"Total area equal sum of meshs?\", \"Complete fragmentation analysis\", true) = false )then\n Farea = MsgBox.input(\"Total area:\",\"Complete fragmentation analysis\",\"0\").asnumber\nend\n\nmeff_exec_return = av.run(\"meff_exec\", {workshp, \"\", Farea})\nmeff = meff_exec_return.get(0)\nareamin = meff_exec_return.get(1)\nareamax = meff_exec_return.get(2)\nareaavg = meff_exec_return.get(3)\ntotarea = meff_exec_return.get(4)\n\noutput = \"Effective Mesh Size = \"+meff.asstring+NL+NL+\n \"Mesh area statistics:\"+NL+\n \"Minimum = \"+areamin.asstring+NL+\n \"Maximum = \"+areamax.asstring+NL+\n \"Mean = \"+areaavg.asstring+NL+NL+\n \"Total area used: \"+totarea.asstring\n \nmsgbox.report( output, \"Meff-gesamt (\"+ZgeoTh eme.asstring+\")\") \n \n\n" ) (Script.4 Name: "meff_teil" SourceCode: "theproj = av.getproject\ntheview = av.GetActiveDoc\nthemelist = theView.GetThemes\n\nlog = av.finddialog(\"Logtext\")\nlogtext = log.findbyname(\"logtext\")\n\nZgeoTheme = MsgBox.List (themeList, \"Select a fragmentation polygon layer...\", \"Analysis of subregions\")\n\ntheview.deletetheme(Zgeotheme)\nthemelist = theView.GetThemes\nTgeoTheme = MsgBox.List (themeList, \"Analysis for subregions in...\", \"Analysis of subregions\")\ntheview.addtheme(Zgeotheme)\n\nZgeoFtab = ZgeoTheme.getftab\ntgeoFtab = tgeotheme.getftab\nshpFld = tgeoF tab.findField(\"Shape\")\nBT = tgeoftab.GetSelection\nBZ = ZgeoFtab.GetSelection\nBTsize = BT.getsize - 1\nworkshp = \"$HOME\".asfilename.MakeTmp(\"work\", \"shp\")\n\n\n\n'''''''''''''''''''''''''''''''\nm = { \"(1) ...if partially is inside\", \n \"(2) ...if completely is inside \", \n \"(3) ...if center is inside \",\n \"(4) ...by cutting-out condition\",\n \"(5) ...by one-sided relation\",\n \"(6) ...by two-sided relation\"}\n\nm_ausw = MsgBox.choiceasstring( m, \"Mesh included in the analysis of a subregion...\", \" select a method...\" )\nFstat = MsgBox.YesNo (\"Calculation of mesh area statistics?\", \"Analysis of subregions\", true)\n\ntgeoFtab.seteditable(true)\nmfldnam = \"Meff_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\nmfld = tgeoFtab.FindField( mfldnam)\nif (mfld = nil) \n then mfld = Field.Make(mfldnam, #FIELD_DOUBLE , 16, 2) \n tgeoFtab.addfields({ mfld})\n end\n\nif (fstat = true) then\navefldnam = \"MiwFi_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\navefld = tgeoFtab.FindField( avefldnam)\nif (avefld = nil) then \n avefld = Field.Make(avefldnam, #FIELD_DOUBLE , 16, 2)\n tgeoFtab.addfields({ avefld}) \n end\n \n\nminfldnam = \"MinFi_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\nminfld = tgeoFtab.FindField( minfldnam)\nif (minfld = nil) then \n minfld = Field.Make(minfldnam, #FIELD_DOUBLE , 16, 2)\n tgeoFtab.addfields({ minfld}) \n end\n\nmaxfldnam = \"MaxFi_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\nmaxfld = tgeoFtab.FindField( maxfldnam)\nif (maxfld = nil) then \n maxfld = Field.Make(m axfldnam, #FIELD_DOUBLE , 16, 2)\n tgeoFtab.addfields({ maxfld}) \n end\n\nend\n\nif (fstat = false) then\navefldnam = \"MiwFi_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\navefld = tgeoFtab.FindField( avefldnam)\nif (avefld <> nil) then \n tgeoFtab.removefields({ avefld}) \n end\n \n\nminfldnam = \"MinFi_\"+ZgeoTheme.asstring+\"_\"+m_ausw.left(3)\nminfld = tgeoFtab.FindField( minfldnam)\nif (minfld <> nil) then\n tgeoFtab.removefields({ minfld}) \n end\n\nmaxfldnam = \"MaxFi_\"+Zge oTheme.asstring+\"_\"+m_ausw.left(3)\nmaxfld = tgeoFtab.FindField( maxfldnam)\nif (maxfld <> nil) then\n tgeoFtab.removefields({ maxfld}) \n end\n\nend\n\n'''''''''''''''''''''''''''''''\n'***************\nif (m_ausw.left(3) = \"(1)\") then \n log.open \n for each i in 0..Btsize 'rec in tgeoftab\n \n BT.set(i)\n logtext.setlabel((i+1).asstring)\n tgeoftab.updateselection \n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n polyarea = thePoly.returnarea / 1000000 \n\n ZgeoTheme.SelectByTheme (TgeoTheme, #FTAB_RELTYPE_INTERSECTS, 0, #VTAB_SELTYPE_NEW )\n ZgeoTheme.ExportToFTab (workshp) \n \n meff_exec_return = av.run(\"meff_exec\",{workshp, i.asstring, polyarea})\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0)) \n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i, meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n \n BT.clearall\n end\n log.close\nend\n\n'***************\nif (m_ausw.left(3) = \"(2)\") then\n log.open\n for each i in 0..Btsize 'rec in tgeoftab\n \n BT.set(i)\n logtext.setlabel((i+1).asstring)\n tgeoftab.updateselection \n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n polyarea = thePoly.returnarea / 1000000\n \n ZgeoTheme.SelectByTheme (TgeoTheme, #FTAB_RELTYPE_ISCOMPLETELYWITHIN, 0, #VTAB_SELTYPE_NEW )\n ZgeoTheme.ExportToFTab (worksh p)\n \n meff_exec_return = av.run(\"meff_exec\",{workshp, i.asstring, polyarea})\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0))\n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i, meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n\n \n BT.clearall\n end\n log.close\nend\n\n'***************\nif (m_ausw.left(3) = \"(3)\") then\n log.open\n for eac h i in 0..Btsize 'rec in tgeoftab\n \n BT.set(i)\n logtext.setlabel((i+1).asstring)\n tgeoftab.updateselection \n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n polyarea = thePoly.returnarea / 1000000\n \n ZgeoTheme.SelectByTheme (TgeoTheme, #FTAB_RELTYPE_HASCENTERWITHIN, 0, #VTAB_SELTYPE_NEW )\n ZgeoTheme.ExportToFTab (workshp) \n BZ = ZgeoFtab.GetSelection \n if (BZ.count > 0) \n then \n meff_exec_retur n = av.run(\"meff_exec\",{workshp, i.asstring, polyarea})\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0))\n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i, meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n else\n tgeoFtab.setvalue(mfld, i, 0)\n if (Fstat = true) then \n tgeoFt ab.setvalue(minfld, i, 0)\n tgeoFtab.setvalue(maxfld, i, 0)\n tgeoFtab.setvalue(avefld, i, 0)\n end\n end \n BT.clearall\n end\n log.close\nend\n\n'***************\nif (m_ausw.left(3) = \"(4)\") then\n\n \n log.open\n for each i in 0..BTsize \n \n \n BT.set(i)\n logtext.setlabel((i+1).asstring)\n \n \n tgeoftab.updateselection\n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n polyarea = thePoly.returna rea / 1000000\n \n clipshp = \"$HOME\".asfilename.MakeTmp(\"clip\", \"shp\")\n av.run(\"meff_clip\",{ZgeoTheme, tgeotheme, clipshp}) \n clipgeotheme = theme.make(srcname.make(clipshp.asstring))\n clipgeoTheme.ExportToFTab(workshp)\n \n if (file.canDelete(clipshp)) then\n file.delete(clipshp)\n end\n \n meff_exec_return = av.run(\"meff_exec\",{workshp, i.asstring, polyarea})\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0))\n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i, meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n\n \n BT.clearall\n end\n log.close\n \n \nend\n\n'***************\nif (m_ausw.left(3) = \"(5)\") then\n\n \n z_workshp = \"$HOME\".asfilename.MakeTmp(\"z_work\", \"shp\")\n ZgeoTheme.ExportToFTab(z_workshp)\n vt = ftab.make(srcname.make(z_workshp.asstring))\n vT.seteditable(true)\n ferg = vT.Fin dField( \"Ferg\") 'Fläche vor clip\n if (ferg = nil) \n then ferg = Field.Make(\"Ferg\", #FIELD_DOUBLE , 16, 2) \n vT.addfields({ ferg})\n end \n calcstr = \"[Shape].ReturnArea / 1000000\" \n vT.Calculate( calcstr, ferg)\n vt.seteditable(false)\n\n z_workshptheme = theme.make(srcname.make(z_workshp.asstring)) \n av.GetActiveDoc.addtheme(z_workshptheme)\n \n log.open\n for each i in 0..BTsize \n \n BT.set(i)\n logtext.setlabel((i+1). asstring)\n \n tgeoftab.updateselection\n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n polyarea = thePoly.returnarea / 1000000\n \n clipshp = \"$HOME\".asfilename.MakeTmp(\"clip\", \"shp\")\n av.run(\"meff_clip\",{z_workshptheme, tgeotheme, clipshp}) \n clipgeotheme = theme.make(srcname.make(clipshp.asstring))\n clipgeoTheme.ExportToFTab(workshp)\n \n if (file.canDelete(clipshp)) then\n file.delete(clipshp)\n end\n \n meff _exec_return = av.run(\"meff_exec_2\",{workshp, i.asstring, polyarea, \"(5)\"})\n\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0))\n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i, meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n\n \n BT.clearall\n end\n log.close\n \n if (file.canDelete(clipshp)) then\n file.delete(clipshp)\n end\n \n z_workshpthe me.getftab.deactivate \n av.GetActiveDoc.deletetheme(z_workshptheme)\n if (file.canDelete(z_workshp)) then\n file.delete(z_workshp)\n end\n\n\n\nend\n\n\n\n'***************\nif (m_ausw.left(3) = \"(6)\") then\n\n \n z_workshp = \"$HOME\".asfilename.MakeTmp(\"z_work\", \"shp\")\n ZgeoTheme.ExportToFTab(z_workshp)\n vt = ftab.make(srcname.make(z_workshp.asstring))\n vT.seteditable(true)\n ferg = vT.FindField( \"Ferg\") 'Fläche vor clip\n if (ferg = nil) \n then ferg = Field.Make (\"Ferg\", #FIELD_DOUBLE , 16, 2) \n vT.addfields({ ferg})\n end \n calcstr = \"[Shape].ReturnArea / 1000000\" \n vT.Calculate( calcstr, ferg)\n vt.seteditable(false)\n\n z_workshptheme = theme.make(srcname.make(z_workshp.asstring)) \n av.GetActiveDoc.addtheme(z_workshptheme)\n\n log.open\n for each i in 0..BTsize \n \n BT.set(i)\n logtext.setlabel((i+1).asstring)\n \n tgeoftab.updateselection\n \n thePoly = tgeoftab.ReturnValue(shpFld,i)\n p olyarea = thePoly.returnarea / 1000000\n \n clipshp = \"$HOME\".asfilename.MakeTmp(\"clip\", \"shp\")\n av.run(\"meff_clip\",{z_workshptheme, tgeotheme, clipshp}) \n clipgeotheme = theme.make(srcname.make(clipshp.asstring))\n clipgeoTheme.ExportToFTab(workshp)\n \n meff_exec_return = av.run(\"meff_exec_2\",{workshp, i.asstring, polyarea, \"(6)\"})\n\n tgeoFtab.setvalue(mfld, i, meff_exec_return.get(0))\n if (Fstat = true) then \n tgeoFtab.setvalue(minfld, i , meff_exec_return.get(1))\n tgeoFtab.setvalue(maxfld, i, meff_exec_return.get(2))\n tgeoFtab.setvalue(avefld, i, meff_exec_return.get(3))\n end\n\n \n BT.clearall\n end\n log.close\n \n if (file.canDelete(clipshp)) then\n file.delete(clipshp)\n end\n \n z_workshptheme.getftab.deactivate \n av.GetActiveDoc.deletetheme(z_workshptheme)\n if (file.canDelete(z_workshp)) then\n file.delete(z_workshp)\n end\n\nend\n\n'''''''''''''''''''''''''''''''''''''''''''''''''''''\ntge oFtab.seteditable(false)\n\n\nif (file.canDelete(workshp)) then\n 'file.delete(workshp)\n end\n\nmsgbox.info(\"Finished!\",\"meff_tool\")\n\n" ) (Script.5 Name: "meff_exec" SourceCode: "theproj = av.GetProject\nuFn = self.get(0) 'filename of shape that contains geometry to analyse\nid = self.get(1) 'id tag (string)\nFg = self.get(2) 'complete area as number; if zero: Fg is set to sum_Fi\n\nvt = ftab.make(srcname.make(uFn.asstring))\n\nif (File.Exists(uFn))\nthen \n vT.seteditable(true)\n fi = vT.FindField( \"Fi\")\n fi2 = vT.FindField( \"Fi2\")\n g = vT.FindField( \"g\")\n \n if (fi = nil) \n then fi = Field.Make(\"Fi\", #FIELD_DOUBLE , 16, 2) \n vT.addfields({ fi})\n end\n if ( fi2 = nil) \n then fi2 = Field.Make(\"Fi2\", #FIELD_DOUBLE , 16, 2) \n vT.addfields({ fi2})\n end \n \n if (g = nil) \n then g = Field.Make(\"g\", #FIELD_CHAR , 6, 0) \n vT.addfields({ g})\n end\n\n \n calcstr = \"[Shape].ReturnArea / 1000000\" \n vT.Calculate( calcstr, fi)\n \n calcstr = \"[Fi]*[Fi]\"\n vT.Calculate( calcstr, fi2)\n \n calcstr = id\n vT.Calculate( calcstr.quote, g)\n \n vT.seteditable(false)\n \n sumFile = filename.Make(\"$HOME\"+\"sum.txt\")\n groupfield = vT.FindField( \"g\")\n statTab = vT.Summarize( sumFile, DText, groupfield, {fi,fi,fi,fi,fi2}, { #VTAB_SUMMARY_AVG, #VTAB_SUMMARY_MIN, #VTAB_SUMMARY_MAX, #VTAB_SUMMARY_SUM, #VTAB_SUMMARY_SUM })\n areaavg = statTab.returnvaluenumber(statTab.findfield(\"Ave_fi\"),0)\n areamin = statTab.returnvaluenumber(statTab.findfield(\"Min_fi\"),0)\n areamax = statTab.returnvaluenumber(statTab.findfield(\"Max_fi\"),0)\n sumFi2 = statTab.returnvaluenumber(statTab.findfield(\"Sum_Fi2\"),0)\n sumFi = statTab.retu rnvaluenumber(statTab.findfield(\"Sum_Fi\"),0)\n if (sumFi = 0)\n then \n meff = 0\n totarea = 0\n else\n \n if (Fg > 0) \n then meff = sumFi2 / Fg \n else meff = sumFi2 / sumFi\n end \n if (Fg > 0) \n then totarea = Fg \n else totarea = sumFi\n end\n \n end \n return {meff,areamin,areamax,areaavg,totarea}\nelse\nreturn {meff,0,0,0,0}\nend \n\n\n" ) (Script.6 Name: "meff_exec_2" SourceCode: "theproj = av.GetProject\nuFn = self.get(0) 'filename of shape that contains geometry to analyse\nid = self.get(1) 'id tag (string)\nFg = self.get(2) 'complete area as number; if zero: Fg is set to sum_Fi\nmethod = self.get(3)\n\nvt = ftab.make(srcname.make(uFn.asstring))\n\nif (File.Exists(uFn))\n then \n vT.seteditable(true)\n fi = vT.FindField( \"Fi\")\n fi2 = vT.FindField( \"Fi2\")\n g = vT.FindField( \"g\")\n \n if (fi = nil) \n then fi = Field.Make(\"Fi\", #FIELD_DOUBLE , 16, 2) \n vT.addfields( { fi})\n end\n if (fi2 = nil) \n then fi2 = Field.Make(\"Fi2\", #FIELD_DOUBLE , 16, 2) \n vT.addfields({ fi2})\n end \n \n if (g = nil) \n then g = Field.Make(\"g\", #FIELD_CHAR , 6, 0) \n vT.addfields({ g})\n end\n\n calcstr = \"[Shape].ReturnArea / 1000000\" \n vT.Calculate( calcstr, fi)\n \n if (method = \"(5)\") \n then calcstr = \"[Fi]*[Ferg]\"\n end \n \n if (method = \"(6)\") \n then calcstr = \"(2*[Fi]*[Ferg])-([Fi]*[Fi])\"\n end\n \n vT.Calculate( c alcstr, fi2)\n \n calcstr = id\n vT.Calculate( calcstr.quote, g)\n \n vT.seteditable(false)\n \n sumFile = filename.Make(\"$HOME\"+\"sum.txt\")\n groupfield = vT.FindField( \"g\")\n statTab = vT.Summarize( sumFile, DText, groupfield, {fi,fi,fi,fi,fi2}, { #VTAB_SUMMARY_AVG, #VTAB_SUMMARY_MIN, #VTAB_SUMMARY_MAX, #VTAB_SUMMARY_SUM, #VTAB_SUMMARY_SUM })\n areaavg = statTab.returnvaluenumber(statTab.findfield(\"Ave_fi\"),0)\n areamin = statTab.returnvaluenumber(statTab.findfield(\"Min_fi\"),0)\n aream ax = statTab.returnvaluenumber(statTab.findfield(\"Max_fi\"),0)\n sumFi2 = statTab.returnvaluenumber(statTab.findfield(\"Sum_Fi2\"),0)\n sumFi = statTab.returnvaluenumber(statTab.findfield(\"Sum_Fi\"),0)\n \n if (Fg > 0) \n then meff = sumFi2 / Fg \n else meff = sumFi2 / sumFi\n end \n return {meff,areamin,areamax,areaavg}\n end \n\n\n" ) (Script.7 Name: "meff_info" SourceCode: "infotext = \"Meff-tool written by\"+NL+NL+\n \"Dr. H.-G. Schwarz-v.Raumer\"+NL+\n \"Institute for Landscape Planning and Ecology\"+NL+\n \"University of Stuttgart/FRGermany\"+NL+NL+\n \"For further notes and help \"+NL+\n \"refer to meff_tool.pdf.\"\n \nmsgbox.report( infotext, \"(c) meff_tool\") \n \n\n" ) (PMenu.8 Child: 9 Child: 10 Child: 11 Child: 12 Label: "Meff" ) (Choice.9 Label: "Complete Analysis" Click: "meff_ganz" Shortcut: "Keys.None" ) (Choice.10 Label: "Analysis of subregions" Click: "meff_teil" Shortcut: "Keys.None" ) (Space.11 ) (Choice.12 Label: "Info..." Click: "meff_info" Shortcut: "Keys.None" ) (AVDLog.13 Name: "logtext" X: 162 Y: 153 W: 201 H: 48 Server: 14 ControlPanel: 15 Title: "meff_tool" EscapeEnabled: 1 Resizable: 1 AlwaysOnTop: 1 HasTitleBar: 1 Closeable: 1 DefaultButton: 20 ) (Nil.14 ) (CPanel.15 Child: 16 Child: 17 ResBox: 18 ResBox: 19 Listening: 1 ) (TextLabel.16 InternalName: "logtext" Constraints: 0x55 Label: "8" Listening: 1 ) (TextLabel.17 InternalName: "aTextLabel2" Constraints: 0x55 Label: "Processing Subregion " Listening: 1 ) (RectD.18 Left: 132.00000000000000 Top: 41.00000000000000 Right: 195.00000000000000 Bottom: 16.00000000000000 ) (RectD.19 Left: 18.00000000000000 Top: 44.00000000000000 Right: 159.00000000000000 Bottom: 16.00000000000000 ) (Nil.20 ) (Script.21 Name: "avx_install" SourceCode: "theGUI = av.GetProject.FindGUI( \"View\" )\n\nif (theGUI <> nil) then \n windowMenu = theGUI.GetMenuBar.FindByLabel(\"Window\") \n place = theGUI.GetMenuBar.GetControls.Find( windowMenu ) \n if (place <> -1) then \n theGUI.GetMenuBar.Add( self.get(6), place)\n \n else \n theGUI.GetMenuBar.Add( self.get(6),theGUI.GetMenuBar.GetControls.count )\n end\nend" ) (Script.22 Name: "avx_uninstall" SourceCode: "\n\nif (av.GetProject = nil) then return nil\nend\n\nif (av.GetProject.IsClosing) then return nil\nend\n\ntheGUI = av.GetProject.FindGUI( \"View\" )\ntheGUI.GetMenuBar.remove( self.get(6))\n\n\n" )