1、 屬性查詢。find、search方法:注意的是find方法只支援tab表檔案,不支援空間資料
表。 find :與foxpro中locate定位命令想類似。
search:支援sql語句。寫法:僅指sql語句的where 部分,且from語句中只能有乙個表—
—僅對單錶進行操作:select * from layername where id like 「%北京%」
示例:
a、查詢
dim ftrs as mapxlib.features 『圖元集合
set ftrs=lyr.search(「id like 「「%北京%」」」)
for i=1 to ftrs.count
『執行語句
next
b、高亮顯示
lyr.selection.replace ftrs 『將當前查詢所得的結果集全部高亮顯示(隱含執行:
lyr.clearselection語句)——加入selection集合
閃爍:不能用selection,否則會對整個螢幕進行整個重新整理(抖動)。使用更新style的方
法進行選定圖元的閃爍。
記載圖元的老樣式:set oldsytle=ftr.style
lyr.selection.add ftrs 『將當前查詢所得的結果集新增到已有的結果集中,再全部
高亮顯示
c、對查詢的結果集進行屬性修改
示例程式:完成的是professional中資訊工具功能
dim ds as mapxlib.dataset
dim flds as mapxlib.fields
dim ftr as mapxlib.feature
set lyr=mainmap.layers.item(layername)
set ds=lyr.datasets.item(1)
set flds=ds.fields
『查詢
set ftrs=lyr.search(「id like 「「%北京%」」」)
if ftrs.count=0 then exit sub
『讀取屬性值
for i=1 to ftrs.count
set ftr=ftrs.item(i)
for j=1 to flds.count
fldsname(j)=flds.item(j).name 『字段列表
lyr.keyfield=fldsname(j)
valuestr(i,j)=ftr.keyvalue 『值列表
next
next
『修改屬性
mainmap.auyoredraw=false
lyr.editable=true
for j=1 to flds.count
lyr.keyfield= flds.item(j).name
ftrs.item(j).keyvalue =valuestr(j) 『更新值列表
ftrs.item(j).update true
next
lyr.refresh
lyr.editable=false
mainmap.auyoredraw=true
『修改樣式
dim newstyle as mapxlib.style
with newstyle
『設定樣式
end with
mainmap.auyoredraw=false
lyr.editable=true
for i=1 to ftrs.count
set ftr =ftrs.item(i)
set ftr.style=newstyle 『更新樣式
ftr.update true
next
lyr.refresh
lyr.editable=false
mainmap.auyoredraw=true
2、 空間查詢
² 點查詢:searchatpoint,結果集為features型別
dim pnt as mapxlib.point
pnt.set x,y
set ftrs=lyr.searchatpoint(pnt,misearchresultall)
for i=1 to ftrs.count
『執行語句
next
注意:點查詢時,一般情況下結果集在乙個以上的圖層都存在。所以取值時應分別提取
² 園查詢:在臨時圖層上畫乙個不儲存的圓,然後查詢被這個圓所包含的所有圖層的
圖元物件。
dim pnt as mapxlib.point
dim tempcir as mapxlib.feature
dim feafac as mapxlib.featurefactory
pnt.set x,y
set tempcir=feafac.createcircularregion(micircletypemap ,pnt,1, mainmap.mapuni
t,,)
『misearchtypecentroidwithin :中心點包含
『misearchtypepartiallywithin :部分包含
『misearchtypeentirelywithin :全部包含
set ftrs=lyr.searchwithinfeature (tempcir, misearchtypepartiallywithin)
for i=1 to ftrs.count
『執行語句
next
set pnt =nothing
set tempcir =nothing
set feafac =nothing
3、 相交
判斷兩個圖元是否有交點以及交點座標資訊。
(1)判斷是否相交
if lyr.intersectiontest( ftr1, ftr2, miintersectfeature ) then
『交點
end if
(2)獲取相交點座標資訊
『交點
dim ftr as mapxlib.feature
set ftr=mainmap.featurefactory. intersectfeatures(ftr1,ftr2)
『交點座標資訊
for j=1 to ftr.parts.item(1).count
x1= ftr.parts.item(1).item(j).x
y1= ftr.parts.item(1).item(j).y
next
4、 測距
使用map物件的distance方法。如何測量任意多邊形的周長?
使用累加的方法,還要使用圖元節點集合。
distancevalue=0
『第乙個點
pnt.set ftr.parts.item(1).item(1).x, ftr.parts.item(1).item(1).y
for j=2 to ftr.parts.item(1).count
『累加
x1= ftr.parts.item(1).item(j-1).x
y1= ftr.parts.item(1).item(j-1).y
x2= ftr.parts.item(1).item(j).x
y2= ftr.parts.item(1).item(j).y
distancevalue = distancevalue +mainmap.distance(x1, y1, x2, y2)
next
『多邊形周長
msgbox distancevalue+」 」+mainmap.mapunit
mapx模糊查詢
dim templayer as layer,tempfeatures as new mapxlib.features dim tempdataset as mapxlib.dataset,tempfeature as mapxlib.feature,tempfield as mapxlib.fie...
php 實現查詢快取
適合讀者 本教程適合於那些對快取sql查詢以減少資料庫連線與執行的負載 提高指令碼效能感興趣的php程式設計師。概述 這樣乙個系統通過把sql查詢的結果快取到系統的乙個檔案中儲存,從而阻止連線資料庫,構造查詢與取得返回結果而提高了響應時間。有些系統資料庫並不是放在web伺服器上的,這樣需要乙個遠端連...
通過表關聯實現查詢
建資料庫students 建立三個 分別儲存學生,教師,課程資訊 mysql create table student key student int 5 not null auto increment,student name varchar 20 not null,primary key key...