在ae中資料編輯是乙個重難點。它包括的東西很多,如地物的新增,地物的修改,地物查詢,節點捕捉,地物的符號化等一系列的問題。熟練的使用地物編輯的功能,是開發乙個系統必須具備的條件。資料編輯問題解決得好壞直接決定著軟體是否操作方便。在這我只是寫一些相應的功能函式,至於軟體開發中的架構暫不考慮。
1、新增地物
什麼是地物,這是 gis的基本概念,在此只說明一點,地物可以表現在地圖上,如房子、鐵路、水管等等。我們把房子的總稱稱為乙個地物類,在ae中對應乙個地物類(ifeatureclass),乙個地物類在地圖上表示為乙個地物層(ifeaturelayer),單獨的一棟房子或一條管道我們稱為地物(ifeature),arcgis中一類地物只能放在乙個層,通過圖層的疊加組成一幅地圖。
熟悉物件導向的人都知道,其實上邊的地物類和地物的概念就是類和物件的概念。房子、鐵路、水管等是一類地物的抽象,而具體的某一房子就是物件了。大家了解這一點,接下來的開發就容易理解一些了。當然,還有一些其他的概念也必須了解一下:如長事務、短事務、編輯空間等。請大家查詢一些相關資料,了解這方面的內容。
一、新增點
我們可以有多種方法新增點,但基本的思路一樣,只是有少量的介面有變化。下邊是通過ifeatureclass的createfeature()函式新增地物。
ifeaturelayer i = maptest.map.get_layer(0) as ifeaturelayer;
ifeatureclass fc = i.featureclass;
ifeatureclasswrite fcw = fc as ifeatureclasswrite;
iworkspaceedit w = (fc as idataset).workspace as iworkspaceedit;
ifeature f;
ipoint p;
w.startediting(false);
w.starteditoperation();
f = fc.createfeature();
p = new pointclass();
p.putcoords(93000, 48000);
f.shape = p;
fcw.writefeature(f);
w.stopeditoperation();
w.stopediting(true);
二、新增線
新增線的方法跟新增點一樣,不同的只是地物型別不一樣而已,我把**貼出來,大家跟新增點的方式進行對比。
ifeaturelayer i = maptest.map.get_layer(0) as ifeaturelayer;
ifeatureclass fc = i.featureclass;
ifeatureclasswrite fcw = fc as ifeatureclasswrite;
iworkspaceedit w = (fc as idataset).workspace as iworkspaceedit;
ifeature f;
ipoint p = new pointclass();
w.startediting(false);
w.starteditoperation();
//可選引數設定
object missing = type.missing;
f = fc.createfeature();
//定義乙個多義線物件
ipolyline polyline = new polylineclass();
//定義乙個點的集合
ipointcollection ptcollect = polyline as ipointcollection;
//定義一系列要新增到多義線上的點物件,並賦初始值
p.putcoords(95000, 48000);
ptcollect.addpoint(p, ref missing, ref missing);
p.putcoords(93000, 48000);
ptcollect.addpoint(p, ref missing, ref missing);
f.shape = polyline;
fcw.writefeature(f);
w.stopeditoperation();
w.stopediting(true);
三、新增面
新增面和新增線基本一致,將ipolyline換成ipolygon就可以了
ifeaturelayer fealayer = maptest.map.get_layer(0) as ifeaturelayer;
ifeatureclass fc = fealayer.featureclass;
ifeatureclasswrite fcw = fc as ifeatureclasswrite;
iworkspaceedit workspace = (fc as idataset).workspace as iworkspaceedit;
ifeature f;
ipoint p = new pointclass();
workspace.startediting(false);
workspace.starteditoperation();
//可選引數設定
object missing = type.missing;
f = fc.createfeature();
//定義乙個多邊形物件
ipolygon polygon = new polygonclass();
//定義乙個點的集合
ipointcollection ptcollect = polygon as ipointcollection;
//定義一系列要新增到多邊形上的點物件,並賦初始值
p.putcoords(90000, 48000);
ptcollect.addpoint(p, ref missing, ref missing);
p.putcoords(90000, 50000);
ptcollect.addpoint(p, ref missing, ref missing);
p.putcoords(93000, 50000);
ptcollect.addpoint(p, ref missing, ref missing);
f.shape = polygon;
fcw.writefeature(f);
workspace.stopeditoperation();
workspace.stopediting(true);
給UIImageView新增點選事件
uiimageview imageview1 uiimageview alloc initwithframe cgrectmake 125,50,229,229 imageview1 setimage uiimage imagewithcontentsoffile path imageview1.u...
vue router link 上新增點選事件
根據vue2.0官方文件關於父子元件通訊的原則,父元件通過prop傳遞資料給子元件,子元件觸發事件給父元件。但父元件想在子元件上監聽自己的click的話,需要加上native修飾符。所以如果在想要在router link上新增事件的話需要 click.native這樣寫 router link to...
(二)AS給button新增點選事件
三種方法給button新增點選事件 一 通過button的id,新增繼承view.onclicklistener的監聽實現 button android id id btn button2 android text 按鈕2 android layout width match parent andr...