mapx實現查詢

2021-04-30 04:45:06 字數 3943 閱讀 8832

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...