MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定_第1頁(yè)
MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定_第2頁(yè)
MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定_第3頁(yè)
MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定_第4頁(yè)
MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第六章MapX屬性數(shù)據(jù)及數(shù)據(jù)綁定2/4/202316.1MapX的屬性數(shù)據(jù)MapInfo屬性數(shù)據(jù)組織(.dat文件)MapX中屬性數(shù)據(jù)的查找Layer.find對(duì)象可以搜索圖層中的特定圖Find對(duì)象屬性P146表6-12/4/20232Find對(duì)象方法Search(Address,[Boundary])Address是要尋找的地物名稱或街道,Boundary是搜索范圍,可以為地物或街道所在的一個(gè)地域范圍。返回查找到的圖元存儲(chǔ)在FindFeature對(duì)象的屬性中。FindFeature.FindRC屬性為Find操作的結(jié)果代碼。FindRC屬性含義P1472/4/20233Find對(duì)象方法SearchEx(Address,[Boundary])返回查找到的圖元存儲(chǔ)在FindResult對(duì)象的屬性中。如果沒有精確的匹配結(jié)果,MatchedFeature為空,Matches為返回的所有近似匹配結(jié)果。如果匹配到多個(gè)結(jié)果,則MultipleMatches為真。FindResult屬性含義P148舉例見P1492/4/20234Find對(duì)象方法DimlyrCityAsLayerDimdsCityAsDatasetDimdsStateAsDatasetDimobjFindResultAsFindResult'設(shè)置圖層SetlyrCity=Map1.Layers("UScities")Setlyrstate=Map1.Layers("USA")'加入數(shù)據(jù)集SetdsCity=Map1.DataSets.Add(miDataSetLayer,lyrCity)SetdsState=Map1.DataSets.Add(miDataSetLayer,lyrstate)'設(shè)置城市作為查找的數(shù)據(jù)集,查找的字段名是citySetlyrCity.Find.FindDataset=dsCitySetlyrCity.Find.FindField=dsCity.Fields("City")'設(shè)置州的圖層和數(shù)據(jù)集為搜索范圍,范圍的字段名是StateSetlyrCity.Find.RefineLayer=lyrstateSetlyrCity.Find.RefineDataset=dsStateSetlyrCity.Find.RefineField=dsState.Fields("state")'在txtstate州內(nèi)查找txtcity城市SetobjFindResult=lyrCity.Find.SearchEx(TxtCity,TxtState)'MsgBox

objFindResult.MatchedFeature.NamelyrCity.Selection.Add

objFindResult.MatchedFeatureMap1.Refresh2/4/202356.2屬性數(shù)據(jù)的更新一個(gè)空間對(duì)象在屬性數(shù)據(jù)庫(kù)表中對(duì)應(yīng)一行。Layer.KeyField屬性指定字段名稱,再給Feature.KeyValue屬性賦值,然后調(diào)用Feature.Update進(jìn)行更新就可以了。舉例見P1502/4/202366.2屬性數(shù)據(jù)的更新DimftrsAsFeaturesDimftrAsFeatureMap1.Layers(9).Editable=TrueMap1.Layers(9).KeyField="state"Setftrs=Map1.Layers(9).SelectionSetftr=ftrs(1)Map1.Layers(9).KeyField="state"ftr.KeyValue="TCOM"ftr.Update2/4/202376.3MapX引入外部數(shù)據(jù)外部數(shù)據(jù)的優(yōu)勢(shì):圖形矢量數(shù)據(jù)以MapInfo文件格式存儲(chǔ),屬性數(shù)據(jù)放在外部數(shù)據(jù)庫(kù),通過ID聯(lián)系。發(fā)揮大型數(shù)據(jù)庫(kù)系統(tǒng)的檢索和管理海量數(shù)據(jù)的優(yōu)勢(shì)。MapX外部數(shù)據(jù)綁定類型:數(shù)據(jù)綁定就是建立空間數(shù)據(jù)和屬性數(shù)據(jù)的關(guān)系,使地理對(duì)象和相關(guān)屬性有機(jī)結(jié)合,從而實(shí)現(xiàn)圖文互動(dòng)。2/4/202386.3.2MapX外部數(shù)據(jù)綁定類型X-Y綁定:如果要綁定的數(shù)據(jù)表中包含X/Y坐標(biāo)信息的字段,并以這兩個(gè)字段的數(shù)據(jù)為坐標(biāo)創(chuàng)建點(diǎn)對(duì)象時(shí),就采用該方式。該方式為靜態(tài)綁定。靜態(tài)綁定下圖層不會(huì)與數(shù)據(jù)表同步更新,即當(dāng)數(shù)據(jù)表打開時(shí),MapX將數(shù)據(jù)一次性讀入;數(shù)據(jù)表打開后,即使修改表中數(shù)據(jù),也不會(huì)改變圖層的顯示。Normal綁定:圖層對(duì)象與其屬性數(shù)據(jù)庫(kù)綁定PointReference綁定:數(shù)據(jù)表不含X/Y坐標(biāo)信息,但含有可作為參考信息的字段,如郵政編碼,那么就要利用PointReference綁定方式將數(shù)據(jù)在圖層中以點(diǎn)的形式表現(xiàn)出來。這時(shí)有一個(gè)包含X/Y坐標(biāo)的圖層作為基于ZipCode數(shù)據(jù)表的參考圖層。該方式也是靜態(tài)綁定。2/4/202396.3.3外部數(shù)據(jù)源地圖數(shù)據(jù):TAB文件遠(yuǎn)程空間數(shù)據(jù)庫(kù):Oracle8i和MapInfoSpatialWare中的地圖數(shù)據(jù)其他遠(yuǎn)程數(shù)據(jù):ADO、DAO及RDO等,以及通過ODBC具體見P152表6-42/4/2023106.4MapX

數(shù)據(jù)集對(duì)象MapX中的數(shù)據(jù)集對(duì)象DataSets進(jìn)行數(shù)據(jù)綁定,有兩種方法:1)有VB的綁定數(shù)據(jù)控件,設(shè)計(jì)時(shí)使用Map對(duì)象的DataSet屬性。2)通過使用DataSets.Add編程方法來綁定注意要使用地圖對(duì)象Map的DataSets,圖層對(duì)象Layer的DataSets是只讀屬性。2/4/2023116.4MapX

數(shù)據(jù)集對(duì)象DataSets.Add(Type,SourceData,[Name],[GeoField],[SecondaryGeoField],[BindLayer],[Fields],[Dynamic])Type參數(shù)取值為DataSetTypeConstants常量,對(duì)應(yīng)于不同的數(shù)據(jù)源類型。其含義和取值見P153表6-5SourceData用來引用數(shù)據(jù),隨Type不同而不同,其對(duì)應(yīng)關(guān)系見P154表6-6Name為數(shù)據(jù)集名稱,默認(rèn)名為Dataset1,Dataset2,…GeoField是數(shù)據(jù)源中包含地理信息的字段名稱(如果指定了Fields參數(shù),GeoField必須引用Fields集合的列)SecondaryGeoField:當(dāng)GeoField不唯一時(shí)需要指定。如地圖表中多個(gè)省都有相同縣名的情況。BindLayer:6.6節(jié)再介紹Fields:描述導(dǎo)入數(shù)據(jù)源的字段Dynamic:布爾型,控制數(shù)據(jù)綁定是否是動(dòng)態(tài)的。2/4/2023126.4MapX

數(shù)據(jù)集對(duì)象DataSets.Remove(index)從數(shù)據(jù)集中刪除一個(gè)指定的數(shù)據(jù)對(duì)象DataSets.RemoveAllDataSets.Restore(Name,SourceData)恢復(fù)原先向DataSets添加的數(shù)據(jù)對(duì)象。2/4/2023136.5MapX

字段集合對(duì)象當(dāng)數(shù)據(jù)源有多哥數(shù)據(jù)列時(shí),如果MapX只綁定數(shù)據(jù)表中的某一列數(shù)據(jù)或某一字段的數(shù)據(jù),可以用DataSets.Add方法的Fields參數(shù)限定。Fields是字段集合對(duì)象,F(xiàn)ield是字段對(duì)象DimfldsasnewMapXlib.Fields

為了防止與DAO的Fields沖突Fields的方法:Add,AddDateField,AddFloatField,…見P1562/4/2023146.5MapX

字段集合對(duì)象Fields.Add

DataSourceCol,Name,[AggregateFunction],[Type]DataSourceCol為數(shù)據(jù)源的字段名或列索引。Name是要添加的字段名,一般默認(rèn)與數(shù)據(jù)源的字段名相同,AggregateFunction為所使用的聚合函數(shù),當(dāng)綁定時(shí)有多個(gè)字段匹配,此參數(shù)決定了如何計(jì)算最終的字段,取值見P156表6-7,對(duì)于字符串的字段,默認(rèn)為MiAggregationIndividual,而對(duì)于數(shù)值字段,則默認(rèn)為求和MiAggregationSum。Type是字段的數(shù)據(jù)類型,見P157表6-82/4/2023156.5MapX

字段集合對(duì)象Fields.Remove(index)刪除一個(gè)字段Fields.RemoveAll例子見P1572/4/2023166.6綁定圖層綁定圖層BindLayer數(shù)據(jù)綁定是一種特殊的數(shù)據(jù)綁定類型,用來根據(jù)數(shù)據(jù)源指定的位置數(shù)據(jù)創(chuàng)建新的點(diǎn)圖層。綁定圖層通常在下面兩種情況下使用:1)當(dāng)數(shù)據(jù)包含X和Y坐標(biāo)時(shí)(如經(jīng)緯度),可以直接在指定位置創(chuàng)建點(diǎn)。2)當(dāng)數(shù)據(jù)包含引用信息時(shí),例如郵政編碼,可以根據(jù)編碼創(chuàng)建點(diǎn)。在以上兩種情況下,利用綁定圖層的概念,可以創(chuàng)建點(diǎn)圖層,來表現(xiàn)坐標(biāo)點(diǎn)或引用點(diǎn)的位置2/4/2023176.6綁定圖層只有用綁定圖層BindLayer來添加地理位置點(diǎn)的數(shù)據(jù)集時(shí),這些點(diǎn)會(huì)自動(dòng)顯示在地圖上,不過默認(rèn)點(diǎn)符號(hào)是灰色的星型,可以通過設(shè)置圖層的屬性Layer.StyleOveride為True,然后改變Layer.Style屬性改變默認(rèn)符號(hào)。其他類型圖層不會(huì)自動(dòng)在地圖上顯示數(shù)據(jù)集中點(diǎn)的位置。BindLayer沒有方法,通過設(shè)置屬性來操作。見P158表6-9LayerType屬性決定了其他一些屬性的取值,一般情況下,使用BindLayer創(chuàng)建的新點(diǎn)圖層為臨時(shí)圖層。如果想讓新的圖層成為永久圖層,即MapInfo表,可以指定BindLayer.Filespec屬性的文件名稱和位置。2/4/2023186.6綁定圖層使用BindLayer對(duì)象分兩步:1)創(chuàng)建BindLayer對(duì)象2)通過Datasets.Add方法中的BindLayer參數(shù)傳遞此對(duì)象來添加數(shù)據(jù)集例子P160源數(shù)據(jù)為X/Y的綁定圖層源數(shù)據(jù)為點(diǎn)引用數(shù)據(jù)的綁定圖層2/4/2023196.6綁定圖層源數(shù)據(jù)為X/Y的綁定圖層DimbindlayerobjectAsNewBindLayerDimfldsAsNewMapXLib.FieldsDimdbAsDatabaseDimdsAsMapXLib.DatasetSetdb=DBEngine.Workspaces(0).OpenDatabase("D:\ProgramFiles\MapInfo\MapX5.0\data\mapstats.mdb")Setrs=db.OpenRecordset("US_CUST")bindlayerobject.LayerName="USCustomers"bindlayerobject.RefColumn1="X"bindlayerobject.RefColumn2="Y"bindlayerobject.LayerType=miBindLayerTypeXYSetds=Map1.DataSets.Add(miDataSetDAO,rs,"U.S.Customers","City","State",bindlayerobject)2/4/2023206.7MapX的綁定數(shù)據(jù)事件在程序里,如果使用了字段對(duì)象添加數(shù)據(jù)集的字段,并且運(yùn)行數(shù)據(jù)集對(duì)象的Add方法,則綁定數(shù)據(jù)的過程開始了。源數(shù)據(jù)中的每一行與一個(gè)地物相對(duì)應(yīng),源數(shù)據(jù)的屬性就成為了地圖中圖元的屬性。完成了從屬性數(shù)據(jù)到空間數(shù)據(jù)的對(duì)應(yīng)過程。2/4/2023216.7MapX的綁定數(shù)據(jù)事件在數(shù)據(jù)綁定期間,MapX默認(rèn)觸發(fā)一些事件,開發(fā)過程中,可能在一定的情況下使用這些事件。1)數(shù)據(jù)不匹配

DataMismatch(DatasetName,byvalrow,geocolvalue)

DatasetName是出現(xiàn)不匹配的數(shù)據(jù)集的名稱,byvalrow是出現(xiàn)不匹配的行數(shù),geocolvalue出現(xiàn)不匹配的字段名稱字符串2)非一一對(duì)應(yīng)

ResolveDataBind(flag,nummatches,matches,choice,cancel)flag錯(cuò)誤類型標(biāo)志,0表示出現(xiàn)多字段匹配,1表示多圖層匹配,2多地圖集匹配

nummatches匹配侯選者個(gè)數(shù),matches侯選者數(shù)組,choice用戶指定的侯選者序號(hào),為0則MapX自動(dòng)選擇,cancel為真,則程序可以終止3)數(shù)據(jù)請(qǐng)求事件

Datasets.add綁定數(shù)據(jù)時(shí),如果DatasetType=miDatasetUnbound,則MapX自動(dòng)觸發(fā)RequestData事件,可以一次一個(gè)的向MapX提供數(shù)據(jù)。

RequestData(row,column,value,done)2/4/2023226.8常用的外部數(shù)據(jù)綁定方法和示例DAO開發(fā)步驟:1加載DAO對(duì)象2創(chuàng)建/打開數(shù)據(jù)庫(kù)3創(chuàng)建記錄集對(duì)象4綁定例子見書P1622/4/2023236.8常用的外部數(shù)據(jù)綁定方法和示例ADO開發(fā)步驟:1加載ADO2創(chuàng)建連接Connection3創(chuàng)建記錄集Recordset對(duì)象4綁定例子見書P1652/4/2023246.8常用的外部數(shù)據(jù)綁定方法和示例ODBCMapInfo表方式RDO方式GlobalHandle其他方式(舉例UnBound方式,見P170)2/4/2023256.8常用的外部數(shù)據(jù)綁定方法和示例'ThissampledemonstratestheuseofDatasets.Addandthe'RequestDataeventsupportedbyMapXtobuildanunbound'dataset,whichallowsMapXtoaccessdatawhoseformat'isknownonlytotheprogrammer.Inthisexample,the'dataisintheformofatwo-dimensionalarrayinVB.PrivateConstkNumberOfRows=3DimtheData(1To3,1To2)AsVariantPrivateSubForm_Load()theData(1,1)="ME"'FillinthedatatotheData(2,1)="NH"'beusedbyRequestDatatheData(3,1)="VT"theData(1,2)=100theData(2,2)=200theData(3,2)=300'ZoominonNewEnglandMap1.ZoomTo800,-70.26,44.05EndSub2/4/2023266.8常用的外部數(shù)據(jù)綁定方法和示例PrivateSubCommand1_Click()OnErrorGoTo

MapXErrDimfldsAsNewMapXLib.FieldsDimdsAsDataset'Describethestructureoftheunbounddataset:

flds.Add"State","State",miAggregationIndividual,miTypeString

flds.Add"Sal

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論