امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
مختصری از سیستم اطلاعات مکانی و نرم افزار جی آی اس آرک ویوو
نویسنده پیام
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #12
RE: مختصری از سیستم اطلاعات مکانی و نرم افزار جی آی اس آرک ویوو
كار با رشته ها

--------------------------------------------------------------------------------

Avenue Scrtip Strings
كار با رشته ها
مبحث كار با رشته ها را با چند مثال عملي كار مي كنيم.
نمايش با حروف بزرگ

کد:


'uppercase words**************************
a = "Hello World"
کد:
b =  a.UCase
MsgBox.Info(b,"")تركيب دو رشته
کد:
'*********active doc
کد:
aDocument = av.GetActiveDoc.GetName
MsgBox.Info( "The  active document is"++aDocument, "Active Document")شرط در رشته ها

کد:
*************if****************
کد:
[code]myString="Maybe"

if ( myString = "NO"  ) then
return nil
elseif (myString = "Maybe")
then MsgBox.Info( "Think  about it some more", "")
end
جايگزيني رشته ها

کد:
**********************
کد:
myString = "Montreal has a good hockey team! Go  Montreal!"
myNewString = myString.Substitute("Montreal",  "Colorado")
MsgBox.Info(myNewString, "")شكستن رشته به قسمت هاي كوچكتر
کد:
'**************split strings******************
کد:
myString =  "excel.exe"
periodIndex=myString.Indexof(".")
theFileName=myString.Left(PeriodIndex)
MsgBox.Info(theFileName,  "") '"excel"آزمايش چند روش نمايش پيغام
کد:
'***********************************
کد:
MsgBox.Info(  "HELLO".LCase, "" ) 'displays hello
MsgBox.Info( "IALLX".Translate( "IAX",  "HEO"), "" ) ' displays HELLO
MsgBox.Info( "hello world".Proper, "") '  displays Hello World
' displays the string: The string"Hello World" is often  used.
msgbox.info( "The string ""Hello World"" is often used.", "")
'  displays the string: "The string ""Hello World"" is often used."
msgbox.info(  "The string ""Hello World"" is often used.".Quote, "")
نمايش در دوخط

کد:
کد:
'show word in 2 line ********************
greeting =  "hello"+NL+"world"

MsgBox.Info( greeting,"")
نمايش ارايه

کد:
کد:
'show array***********************************
aBitMap = BitMap.Make( 5  )
aBitMap.SetAll myList = {}
for each i in aBitMap
myList.Add( i )  'SOLUTION: myList.Add( i.clone )
end
msgbox.ListAsString( myList, "",  "BITMAP")
مراحل ايجاد يك extension
ساده
اكنون نوبت نوشت كدهاي مربوط به حذف Extension است:

کد:
کد:
'Make sure there is a project if (av.GetProject = nil) then return nil end 'Uninstall only if the project is not closing if (av.GetProject.IsClosing) then return nil end 'The self object for this script is the extension 'The first root is the menu 'The second root is the view ' 'Remove the menu mb = av.GetProject.FindGUI("View").GetMenuBar mb.Remove(self.Get(0)) 'Remove the view av.GetProject.RemoveDoc(self.Get(1).GetName) 3. Save your work
پس از تكميل كدها را كمپايل نمائيد.
مرحله سوم: ايجاد extension
براي ايجاد extension شما نياز به كدهاي نصب و حذف extension، مسيرها، برنامه هاي داخلي داريد. فرايند دادن مسيرها ممكن است چندين مرتبه تكرار شود تا فرمانها آدرس دهي شوند. در مثال تست شده زير سه خط اول يك Extension اضافه مي نمايند. خطوط بعدي مسيرها را مشخص مي نمايند. در بخش بعدي توضيحاتي در مورد Extension مورد نظر اضافه مي شود. خط آخر دستور ساخت Extension را ارسال مي كند.

کد:
کد:
myExt = Extension.Make("D:\exampleext.avx".AsFileName,"Iran  Hydrology",
av.GetProject.FindScript("Install"),
av.GetProject.FindScript("Uninstall"),{})

'***********roots***************
myExt.Add(av.GetProject.FindGUI("View").GetMenuBar.FindByLabel("My  Menu"))
' Assumes there is a view named My  View
myExt.Add(av.GetProject.FindDoc("My View"))
' Add to the extension  the scripts that are attached to the menu items
' The following line shows  how this would work for one such scripts.
' You may need several such  lines.
myExt.Add(av.GetProject.FindScript("A Menu Item Click-Event  Script"))
'****************************
myExt.SetAbout("This is my first  extension."++
"This text will appear in the Iran Hydrology Extension Manager’s About box")
myExt.SetExtVersion(3.02)
'****************************
myExt.Commitبا كمپايل و اجراي اين كدها فايلي به نام exampleext.avx ايجاد مي شود كه چنانچه در پوشه ARCVIEW\EXT32 كپي شود، در ليست موجود خواهد بود.


مرحله چهارم : آزمون و خطايابي
يك پروژه جديد ايجاد نموده و extension ايجاد شده با نام Iran Hydrology را تيك بزنيد. از آن استفاده كنيد و آنرا خطايابي نمائيد.

در اين بخش شما با روش نوشتن يك extension جديد بصورت گام به گام آشنا خواهيد شد.
مرحله اول: ايجاد پروژه

پروژه اي حاوي كليه ملزومات Extension مورد نظر ايجاد نمائيد. اين پروژه تا مرحله 5 اين دستورالعمل فعال خواهد بود.
يك View باز كنيد و چند لايه به آن اضافه نمائيد. تغييرات مورد نظر را در راهنما با ويرايشگر راهنما انجام دهيد.
با استفاده از پنجره خصوصي سازي منوها، يك منو جديد اضافه كنيد و گزينه هاي مربوطه را نيز به آن اضافه نمائيد. توجه داشته باشيد در اين مرحله دستور Undo و كليدهاي مربوطه غير فعال هستند.
كار خود را ذخيره كنيد.
مورد نظر شما در هنگام بارگذاري و يا حذف نياز به اضافه و يا حذف منوها و برخي اطلاعات مورد نياز دارد. بدين منظور يكسري كد بايد در Extension نوشته شده توسط شما درج شود. نيازي به نصب scriptهاي مورد استفاده در extension نمي باشد زيرا برنامه آنها را بطور خودكار صدا خواهد زد. در اين مرحله اقدامات زير را انجام ميدهيم. نمونه زير مثالي از نصب است.

مرحله دوم: ايجاد scriptهاي مورد نياز براي نصب و حذف Extension مورد نظر
Extension

کد:
کد:
'Make sure there is a project if (av.GetProject = nil) then return nil end ' The self object for this script is the extension 'The first root is the menu 'The second root is the view ' 'Add the menu after the view's FILE menu b = av.GetProject.FindGUI("View").GetMenuBar m = mb.FindByLabel("File") if (m <> nil) then mb.Add(self.Get(0), mb.GetControls.Find(m)) else mb.Add(self.Get(0), 999) end 'Add the view av.GetProject.AddDoc(self.Get(1))
۱۸-اردیبهشت-۱۳۸۹, ۰۲:۰۴:۱۲
ارسال‌ها
پاسخ
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #13
اسکریپت نویسی در آرک ویو
[/code]در اين بخش و بخشهای بعدي با چند مثال كاربردي آشنا خواهيد شد.


مثالي از تغيير عنوان پنجره View
کد:
'********exapmple for chengae window title


theView = av.GetProject.FindDoc( "View1" )if (theView <> nil) then
theView.SetName( "States")
end
آزمون وجود پنجره فعال

کد:
'********exapmple for if there are any active view
theView = av.GetProject.FindDoc( "View1" )
if (theView.GetThemes.count = 0) then
MsgBox.Info( "there are no themes", "")
end

دريافت نام كلاس جدول


کد:
'**************
MsgBox.Info(table.GetClassName,"")




'**************lstbox


' Get the list of SrcNames available in this coverage
SrcNames = Coverage.ReturnSrcNames( "D:\GIS_lessons/landuse.shp" )


' Make a list of feature classes
flist = {} for each s in SrcNames
flist.Add( s.GetSubName )
end

' Display the feature classes
FeatureClass = msgbox.ChoiceAsString( flist, "", "Feature Classes" )


'****Here is a script that gets the list of available SrcNames from a coverage; the list has one '****SrcName object for each feature class in the coverage






نمايش صفحه بارگذاري Extension ها
کد:
av.GetExtensionWin.Show
درج يك نمودار جديد:
کد:
l = {}
for each d in av.GetProject.GetDocs
if (d.Is(Table)) then
l.Add(d)
end
end

if (l.Count > 1) then
theTable = MsgBox.Choice(l,"Pick a Table","New Chart")
else
theTable = l.Get(0)
end

if (theTable = NIL) then
return nil
end

newChart = Chart.MakeUsingDialog(theTable.GetVTab, av.GetProject.GetSelectedGUI.GetName)
if (newChart <> nil) then
newChart.GetWin.Open
end
ارسال به چاپگر

کد:
if (0 <= Printer.The.Edit({av.GetProject.GetSelectedGUI.GetTitle})) then
av.UseWaitCursor
System.RefreshWindows
for each d in av.GetProject.GetSelectedDocs
av.ShowMsg("Printing "+d.GetName+"...")
d.Print
end
end
گرفتن ويژگيهاي محيط فعال (نمايش پنجره خصوصيات)
کد:
themyActiveDoc= av.GetActiveDoc
themyActiveDoc.Edit
۲۵-اردیبهشت-۱۳۸۹, ۰۱:۴۰:۱۲
ارسال‌ها
پاسخ
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #14
RE: مختصری از سیستم اطلاعات مکانی و نرم افزار جی آی اس آرک ویوو
نمايش پنجره طرحهاي پيش فرض
کد:
theLayout = av.GetActiveDoc
t = TemplateMgr.Show
if (t <> nil) then
objs = theLayout.GetGraphics.GetFrameObjs
objs.Merge(av.GetProject.GetDocs)
theLayout.UseTemplate(t)
theLayout.GetGraphics.FillFrames(objs)
end
نمايش پنجره باز كردن جداول
کد:
av.Run( "Project.AddTable", NIL )
ارسال جداول به فرمتهاي ديگر

کد:
theTable = av.GetActiveDoc
formats = {"dBASE", "INFO", "Delimited Text"}

format = MsgBox.ListAsString(formats, "Export Format:", "Export Table")
if (format = "dBASE") then
theClass = DBASE
theFilter = "*.dbf"
theExt = "dbf"
elseif (format = "Delimited Text") then
theClass = DTXT
theFilter = "*.txt"
theExt = "txt"
elseif (format = "INFO") then
theClass = INFO
theFilter = "arcdr9"
theExt = ""
else
return nil
end

theFileName=FileDialog.Put(av.GetProject.MakeFileName("table", theExt),
theFilter,"Export Table")
if (theFileName = NIL) then return nil end

theVTab = theTable.GetVTab
ext = theFileName.GetExtension
if (((theClass.IsSubclassOf(DTXT)) or (theClass.IsSubClassOf(DBASE))) and (ext <> theExt)) then
theFileName.SetExtension(theExt)
end

if (theVTab.GetSelection.Count=0) then
theVTab.Export(theFileName, theClass, FALSE)
av.ShowMsg("All records written to"++theFileName.GetBaseName)
else
theVTab.Export(theFileName, theClass, TRUE)
av.ShowMsg("Selected records written to"++theFileName.GetBaseName)
end
if ((System.GetOS = #SYSTEM_OS_MAC) and ((format = "INFO").not)) then
Script.Make("MacClass.SetDocInfo(SELF, Table)").DoIt(theFileName)
end
۲۶-اردیبهشت-۱۳۸۹, ۰۲:۳۹:۰۳
ارسال‌ها
پاسخ
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #15
RE: مختصری از سیستم اطلاعات مکانی و نرم افزار جی آی اس آرک ویوو
درج يك لايه جديد
کد:
' View.Add
theView = av.GetActiveDoc
srcnames = SourceDialog.Show("")
zoom = (theView.GetThemes.Count = 0)
useDD=TRUE
isOther=FALSE

theBox=Rect.makexy(-200,-100,200,100)
themeList={}
if (srcnames.count = 0) then
return(nil)
end

for each n in srcnames
theTheme=Theme.Make(n)
theleg=thetheme.getlegend.clone
if (TheBox.contains(theTheme.returnextent).NOT) then
useDD=FALSE
end
if (theTheme.Is(FTheme).Not) then
isOther=TRUE
end
theavlname=" "
if (n.getfilename<>NIL) then
if (n.getfilename.getextension<>"") then
theext=n.getfilename.asstring.right(4)
theAVLname=n.getfilename.asstring.substitute(theext,".avl")
else
aFN=n.getfilename
afn=aFN.asstring+".avl"
theAVLname=afn
end
if ((theTheme.is(FTheme)) and (file.exists(theAVLname.asfilename))) then
alinefile=textfile.make(theAVLname.asfilename,#FILE_PERM_READ)
asource=alinefile.read(alinefile.getsize)
alinefile.close
if ((asource.contains("LegExt").Not) or (Extension.Find("Spatial Analyst")<>NIL))then
theleg=theTheme.getlegend
theleg.load(theAVLname.asfilename,#LEGEND_LOADTYPE_ALL)
theflds=theleg.getfieldnames
for each afld in theflds
if (thetheme.getftab.findfield(afld)=NIL) then
thetheme.getlegend.setlegendtype(#LEGEND_TYPE_SIMPLE)
thetheme.getlegend.singlesymbol
end
end
if ((theflds.count=0) and (theleg.getlegendtype <>#LEGEND_TYPE_SIMPLE)) then
thetheme.getlegend.setlegendtype(#LEGEND_TYPE_SIMPLE)
thetheme.getlegend.singlesymbol
end

end
end
end
theView.AddTheme(theTheme)
end


' Test if it is OK to set the Map Units to DD and then also set DistanceUnits to Miles (feet for StreetMap)
'
if ((theView.getUnits = #UNITS_LINEAR_UNKNOWN) and (useDD=TRUE)) then
theView.setUnits(#UNITS_LINEAR_DEGREES)
theView.getDisplay.setDistanceUnits(#UNITS_LINEAR_MILES)
theView.InvalidateTOC(theTheme)
end

' Test if the user added projected data into a projected view
'
if ((theView.getProjection.isNull.NOT) and (useDD=FALSE)) then
if (isOther.Not) then
msgbox.warning("One or more of the data sources you have chosen is not"++
"in decimal degrees. This data can't be projected to match this"++
"view's projection. The theme(s) will be added but won't display properly.",
"Warning: input theme(s) cannot be projected")
end
end

if ((theView.GetActiveThemes.Count = 0) and (srcnames.Count > 0)) then
theView.GetThemes.Get(0).SetActive(TRUE)
end

if (zoom) then
theThemes = theView.GetThemes
r = Rect.MakeEmpty
for each t in theThemes
r = r.UnionWith(t.ReturnExtent)
end
if (r.IsEmpty) then
return nil
elseif ((r.ReturnSize) = (0@0)) then
theView.GetDisplay.PanTo(r.ReturnOrigin)
else
theView.GetDisplay.SetExtent(r.Scale(1.1))
end
end

av.GetProject.SetModified( TRUE )
۲۷-اردیبهشت-۱۳۸۹, ۰۲:۲۱:۰۴
ارسال‌ها
پاسخ
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #16
ورود و خروج دیتا به آرک ویو
Arcview Importin and Exporting Data
Start Arcview, and load the Spatial Analyst extension (choose File-Extensions, then scroll and check mark Spatial Analyst).Choose File - Import Data Source,In the scroll list, choose USGS DEM. Press OK. Now the DEM should be available for adding to the view. Choose View - Add Theme Spatial Analyst or ArcView 3D Analyst and used to create very striking digital terrain models If you are using ArcView 3.x, it is necessary to first turn on the Spatial Analyst extension.
وارد كردن ويا Import
وارد كردن ويا اصطلاحاً Import يكي از راههاي ورود اطلاعات مي باشد. فرمت Shape كه فرمت استاندارد داده هاي arcview است امروزه به يك قالب متداول تبديل شده است و بسياري از نرم افزارهاي ديگر قادر به توليد اين فايلها را دارند. علاوه براين اين نرم افزار قادر است فايل هاي زير را نيز بپذيرد:
کد:
Band Interleaved by Line (*.bil)
Band Interleaved by Pixel (*.bip)
Band Sequential (*.bsq)
CompuServe GIF (*.gif)
Encapsulated PostScript (*.eps)
ERDAS GIS (*.gis)
ERDAS LAN (*.lan)
IMPELL Bitmap (*.rlc)
MacPaint (*.mcp)
Nexpert Object Image (*.nbi)
Postscript (*.ps)
Sun Raster (*.rs)
TIFF Bitmap (*.tif)
Windows Bitmap (*.bmp)
X-Bitmap (*.xbm)
Windows Metafile (*.wmf)
Autocad files(dxf,dwg)
۲۸-اردیبهشت-۱۳۸۹, ۰۲:۰۷:۴۰
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  نرم افزار مدیریت ارتباط با مشتریان / نرم افزار CRM s.moghadam140 0 2,014 ۰۶-بهمن-۱۳۹۴, ۱۷:۴۵:۲۳
آخرین ارسال: s.moghadam140

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS