7. listopadu 2007

Ave Caesar, ave skriptíky

Pár vyřešených skriptíků do PPGI2.
Zařazuji do rubriky Kočkozmat, ale lépe by se hodilo GISákzmat...
Zde tedy jsou, užijte jich ve zdraví...
P.S. Příště to snad dám jinam než na blog.
Co skript dělá:z polygonů zjistí středy, nabídne uživateli MsgBox s ID -> vytvoří polyline spojením těchto středů
Made by Vlasta. Před spaním doladila Looney

theView = av.getActiveDoc
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFtab
theShape = theFTab.FindField("Shape")
theID = theFTab.FindField("ID")

theFTab2 = FTab.makeNew("Theme_body".AsFileName,Polyline)
theID2 = Field.Make("ID",#FIELD_SHORT,2,0)
theFTab2.addFields({theID2})
theShape2= TheFTab2.FindField("Shape")

seznam = {}

For each i in theFTab
IDP = theFTab.ReturnValue(theID,i)
theP = theFTab.ReturnValue(theShape,i)
seznam.add(IDP)
End

seznam2 = {}
sezn = (seznam.count)-1 'musí tam být mínus jedna, bo cyklus je od 0..

For each j in 0..sezn
bod = msgBox.ListAsString(seznam,"Vyberte body","Výběr")
For each k in theFTab
If (bod = theFTab.ReturnValue(theID,k)) Then
seznam2.add(theFtab.ReturnValue(theShape,k).ReturnCenter)
End
End
seznam.RemoveObj(bod)
End

polyl = PolyLine.Make({seznam2})
theFTab2.addRecord
theFTab2.SetValue(theShape2,0,polyl)

theView.AddTheme(FTheme.Make(theFTab2))

Ilustrační obrázek



Co skript dělá:mřížku nad bodovým tématem
Made by Zbyňa.

theView = av.GetActivedoc
theThemeB = theView.GetActiveThemes.Get(0)
theFTabB = theThemeB.GetFTab
theShapeB = theFTabB.FindField("Shape")

theFTabP= FTab.MakeNew("Polygon.sp".asfilename,polygon)
theShapeP= theFTabP.FindField("shape")
theIDP =Field.Make("ID",#FIELD_short,2,0)
theFTabP.AddFields({theIDP})
theFTabP.SetEditAble(True)

theRect=theThemeB.ReturnExtent
Sirka=theRect.GetWidth
PixD=Sirka/10
Pix=MsgBox.Input("Zadej","Zadej",PixD.AsString).AsNumber
PocetS=(sirka/Pix).Ceiling
Vyska=theRect.GetHeight
PocetV=(Vyska/Pix).Ceiling
PocD=theRect.GetBottom
PocL=theRect.GetLeft

p=0
PocL2=PocL
for each i in 0..(PocetV-1)
PocL=pocL2
for each j in 0..(PocetS-1)
thePolygon=Rect.Make(PocL@PocD,Pix@Pix).AsPolygon
theFTabP.AddRecord
theFtabP.SetValue(theShapeP,p,thePolygon)
theFTabB.SelectByPolygon (thePolygon, #VTAB_SELTYPE_NEW )
pocet=theFTabB.GetSelection.Count
theFtabP.SetValue(theIDP,p,pocet)
PocL=PocL+Pix
p=p+1
end
PocD=PocD+Pix

end


theFTabP.SetEditAble(False)
theView.addTheme(FTheme.make(theFTabP))

Ilustrační obrázek

P.S. Jak ses Kash ptala na ty skripty, tak teď už je jasno, ne?

7 komentářů:

  1. ten poslední obrázek vypadá hrozně strašidelně..

    OdpovědětVymazat
  2. Ehm......tohle asi veterináři nepochopí?:D

    OdpovědětVymazat
  3. to Pliwatko: Co a kolik sis toho vzal? :D

    to SillyFish: Nejen veterináři... :D

    OdpovědětVymazat
  4. Brý den. A zase hned naschle. *smajlík, nesoucí si v dlani oči vypadlý z důlků*

    OdpovědětVymazat
  5. To byla malá ukázka toho, čím se \"baví\" studenti druhého ročníku geoinformatiky...
    Kash, z tvýho smajlíka mám ještě teď záchvat smíchu!

    OdpovědětVymazat
  6. Ahoj Looney,......tak už mi ty oči zapadly zpátky (ale trvalo to, to víš, byla jsem v pérplexu - dle vtoru DUPLEX) *smích*

    OdpovědětVymazat