




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四課第四課 幾何對象幾何對象GEOMETRYGEOMETRYn幾何對象概述幾何對象概述n使用幾何對象使用幾何對象n空間參考空間參考n地理變換地理變換幾何對象概述nGeometry對象用于表達(dá)要素對象用于表達(dá)要素(Feature)或圖形元素或圖形元素(Graphic Element)的幾何形狀。的幾何形狀。nArcGIS的幾何對象被分為兩個(gè)層次的幾何對象被分為兩個(gè)層次高級幾何對象:高級幾何對象:用于定義要素的幾何形狀;用于定義要素的幾何形狀;構(gòu)件幾何對象:構(gòu)件幾何對象:用于構(gòu)建高級幾何對象。用于構(gòu)建高級幾何對象。n高級幾何對象包括以下類型:高級幾何對象包括以下類型:PointPoint:具有:
2、具有X X、Y Y坐標(biāo)值,以及可選的屬性,如高程坐標(biāo)值,以及可選的屬性,如高程(Z(Z值值) ),測量,測量值值(M)(M)和和IDID號。號。MultipointMultipoint:是無序點(diǎn)的群集,它用于表示具有相同屬性設(shè)置的是無序點(diǎn)的群集,它用于表示具有相同屬性設(shè)置的同一組點(diǎn)。同一組點(diǎn)。PolylinePolyline:是一個(gè)有序路徑:是一個(gè)有序路徑(Path)(Path)的集合,這些路徑既可以是連的集合,這些路徑既可以是連續(xù)的,也可以是離散的。續(xù)的,也可以是離散的。PolygonPolygon:是環(huán):是環(huán)(Ring)(Ring)的集合,環(huán)是一種封閉的路徑。的集合,環(huán)是一種封閉的路徑。P
3、olygonPolygon可可以由一個(gè)或者多個(gè)環(huán)組成,甚至環(huán)內(nèi)套環(huán),形成島環(huán)的情況,但以由一個(gè)或者多個(gè)環(huán)組成,甚至環(huán)內(nèi)套環(huán),形成島環(huán)的情況,但是內(nèi)外環(huán)之間不能重疊。是內(nèi)外環(huán)之間不能重疊。MultiPatchMultiPatch :用于描述三維幾何形體面。:用于描述三維幾何形體面。n幾何構(gòu)件:幾何構(gòu)件: 路徑路徑(Path)(Path)、環(huán)、環(huán)( Ring)( Ring)、線段、線段( Segment)( Segment)、三角形帶三角形帶( TriangleStrip)( TriangleStrip)、三角形扇三角形扇( TriangleFan)( TriangleFan)及三角形及三角形用于
4、構(gòu)建用于構(gòu)建多段線多段線( (polyline)polyline)、多邊形、多邊形(polygon)(polygon)和多面體和多面體(MultiPatch)(MultiPatch). . Polylines contain paths, polygons contain rings Polylines contain paths, polygons contain rings and and MultiPatches MultiPatches contain TriangleStrips, TriangleFans, triangles, and rings. contain Triangl
5、eStrips, TriangleFans, triangles, and rings. Paths and rings are sequences of vertices connected by segments. Paths and rings are sequences of vertices connected by segments. A segment is a parametric function that defines the shape of the A segment is a parametric function that defines the shape of
6、 the curve connecting its vertices. curve connecting its vertices. Segment types include Segment types include CircularArc, CircularArc, Line, EllipticArc, and BezierCurveLine, EllipticArc, and BezierCurve. . lEnvelopeEnvelope:Envelopes describe the spatial extent of other Envelopes describe the spa
7、tial extent of other geometriesgeometries,是一個(gè)矩形,它用于表示要素的空間范圍。它覆蓋了是一個(gè)矩形,它用于表示要素的空間范圍。它覆蓋了幾何對象的最小坐標(biāo)和最大坐標(biāo)、幾何對象的最小坐標(biāo)和最大坐標(biāo)、Z Z值和值和M M值的變化范圍。值的變化范圍。 nGeometryBags provide operations on collections of geometries.n一個(gè)幾何對象的每個(gè)頂點(diǎn),除了有一個(gè)幾何對象的每個(gè)頂點(diǎn),除了有XY坐標(biāo)值外,還可坐標(biāo)值外,還可以有其它以有其它可選屬性可選屬性,如,如Z值、值、M值和值和ID。IZAwareIZAwareI
8、MAwareIMAware IPointIDAwareIPointIDAwareIPointIPoint pnt = new PointClass() as IPoint; pnt = new PointClass() as IPoint; pnt.PutCoords(1, 1); pnt.PutCoords(1, 1); IZAwareIZAware zAware = pnt as IZAware; zAware = pnt as IZAware; zAware.ZAware = true; zAware.ZAware = true; pnt.Z = 11.1; pnt.Z = 11.1;
9、nMultipoint, polyline, polygon和和 MultiPatch幾何對幾何對象在它們的幾何形狀上都有約束條件象在它們的幾何形狀上都有約束條件如多邊形的內(nèi)部必須明確定義,且必須與之外部分開。如多邊形的內(nèi)部必須明確定義,且必須與之外部分開。當(dāng)幾何對象上的所有約束條件都滿足時(shí),我們說這個(gè)幾何對當(dāng)幾何對象上的所有約束條件都滿足時(shí),我們說這個(gè)幾何對象是簡單的幾何對象;象是簡單的幾何對象;當(dāng)有一個(gè)約束條件未滿足或不知道這當(dāng)有一個(gè)約束條件未滿足或不知道這個(gè)約束條件是否滿足時(shí),我們說這個(gè)幾何對象是非簡單(個(gè)約束條件是否滿足時(shí),我們說這個(gè)幾何對象是非簡單(non-simplenon-sim
10、ple)的幾何對象。)的幾何對象。ITopologicalOperatorITopologicalOperator、IPolygon2IPolygon2IPolygon4IPolygon4和和IPolyline2IPolyline2IPolyline5IPolyline5接口中提供了檢測和強(qiáng)化幾何對象接口中提供了檢測和強(qiáng)化幾何對象簡單性的操作。簡單性的操作。n幾何對象幾何對象, 特別是線段類型,有一套豐富的方法用于定義它們的特別是線段類型,有一套豐富的方法用于定義它們的位置。位置。例如,例如,IConstructCircularArcIConstructCircularArc 接口中有不同的方
11、法定義圓弧線接口中有不同的方法定義圓弧線段。典型情況下,名字中包含段。典型情況下,名字中包含“constructconstruct”的接口或方法使用多的接口或方法使用多個(gè)輸入?yún)?shù)來完全定義目標(biāo)幾何對象。個(gè)輸入?yún)?shù)來完全定義目標(biāo)幾何對象。n高級幾何對象支持經(jīng)典的集合運(yùn)算來產(chǎn)生新的幾何對象,高級幾何對象支持經(jīng)典的集合運(yùn)算來產(chǎn)生新的幾何對象,這這些集合運(yùn)算包括集合的并些集合運(yùn)算包括集合的并(union)、交、交( intersection)、差、差( difference)和對稱差分和對稱差分(symmetric difference,也即異或運(yùn)算,也即異或運(yùn)算)。這些操作定義在這些操作定義在ITo
12、pologicalOperator接口中,且通常情況接口中,且通常情況下這些運(yùn)算一次操作兩個(gè)幾何對象,下這些運(yùn)算一次操作兩個(gè)幾何對象,但其中的但其中的ConstructUnion 運(yùn)算可作用于多于運(yùn)算可作用于多于2個(gè)幾何對象。個(gè)幾何對象。n高級幾何對象還支持高級幾何對象還支持IRelationalOperator 接口,接口,其中定義了其中定義了用于檢測用于檢測2個(gè)幾何對象之間的空間關(guān)系方法,個(gè)幾何對象之間的空間關(guān)系方法,如檢測如檢測2個(gè)幾何個(gè)幾何對象是否相離(對象是否相離(disjoint)、是否相接()、是否相接(touch)、是否包含)、是否包含(contain)等,)等,這些方法返回布
13、爾類型的值。這些方法返回布爾類型的值。Polyline(多段線)對象nPolyline(多段線多段線)對象是對象是相連相連或或不相連不相連的的路徑對象的有序集合路徑對象的有序集合,它可以分別是單個(gè)路徑、多個(gè)不相連的路徑和多個(gè)相連路徑的它可以分別是單個(gè)路徑、多個(gè)不相連的路徑和多個(gè)相連路徑的集合。集合。n路徑路徑(Path)是連續(xù)是連續(xù)Segment對象的集合對象的集合,除了路徑的第除了路徑的第一個(gè)和最后一個(gè)一個(gè)和最后一個(gè)Segment外,每一個(gè)外,每一個(gè)Segment的起始點(diǎn)的起始點(diǎn)都是前一個(gè)都是前一個(gè)Segment的終止點(diǎn),即路徑對象中的的終止點(diǎn),即路徑對象中的Segment不能出現(xiàn)分離的情況
14、。不能出現(xiàn)分離的情況。路徑可以是任意數(shù)目的路徑可以是任意數(shù)目的Line、CircularArc、EllipticArc和和BezierCurve的組合。的組合。一個(gè)或多個(gè)路徑對象組成一個(gè)一個(gè)或多個(gè)路徑對象組成一個(gè)Polyline對象。對象。GeometryCurvePaths PolyCurveBezierCurveCircularArcEllipticArcLinePolylineIs composed of PathsAre composed of SegmentsSegments can be of 4 different TypesSegmentsPolyline及相關(guān)對象結(jié)構(gòu)圖及相關(guān)
15、對象結(jié)構(gòu)圖Points are used to build Segments or PolylinePointsPolygon對象nPolygon(多邊形多邊形)對象是一個(gè)對象是一個(gè)有序環(huán)對象的集合有序環(huán)對象的集合,這些環(huán),這些環(huán)可以是一個(gè)或者多個(gè)。可以是一個(gè)或者多個(gè)。多邊形對象通常可以用于描述具多邊形對象通常可以用于描述具有面積的多邊形離散矢量對象。有面積的多邊形離散矢量對象。GeometryCurveRingsPolyCurveBezierCurveCircularArcEllipticArcLinePolygonIs composed of RingsAre composed of Se
16、gmentsSegments can be of 4 different TypesSegmentsPolygon及相關(guān)對象結(jié)構(gòu)圖及相關(guān)對象結(jié)構(gòu)圖Points are used to build Segments or PolygonPointsMultiPatch nMultiPatches describe 3D geometries that can have multiple, textured surfaces. They can also store vertex normals(頂點(diǎn)法線)(頂點(diǎn)法線), vertex ids, vertex measures and severa
17、l part-level attributes. nYou can create MultiPatches by importing data from a variety of different file formats (3D Studio Max .3ds files, OpenFlight .flt files, Sketchup .skp files, VRML .wrl files). nTriangle Strips (條、帶)(條、帶)nTriangle Fans(扇)(扇) nRings as used in MultiPatches Point and MultiPoin
18、tnPoint幾何對象幾何對象IPoint pPoint = new PointClass();pPoint.X = 100;pPoint.Y = 100;nMultiPoint幾何對象幾何對象構(gòu)建Multipoint對象/定義第一個(gè)點(diǎn)定義第一個(gè)點(diǎn)IPoint pPoint1 = new PointClass();pPoint1.X = 100;pPoint1.Y = 100;/定義第二個(gè)點(diǎn)定義第二個(gè)點(diǎn)IPoint pPoint2 = new PointClass();pPoint2.X = 200;pPoint2.Y = 200;/構(gòu)建其他點(diǎn)構(gòu)建其他點(diǎn)IPointCollection pMu
19、ltipoint = new MultipointClass();object o=Type.Missing;/添加第一個(gè)點(diǎn),不需要設(shè)置點(diǎn)的順序,參數(shù)設(shè)置為添加第一個(gè)點(diǎn),不需要設(shè)置點(diǎn)的順序,參數(shù)設(shè)置為Type.MissingpMultipoint.AddPoint(pPoint1, ref o, ref o);/添加第二個(gè)點(diǎn),不需要設(shè)置點(diǎn)的順序,參數(shù)設(shè)置為添加第二個(gè)點(diǎn),不需要設(shè)置點(diǎn)的順序,參數(shù)設(shè)置為Type.MissingpMultipoint.AddPoint(pPoint2, ref o, ref o);/添加其他點(diǎn)添加其他點(diǎn)Segment幾何對象Path and RingnPath幾何對
20、象幾何對象PathPath是連續(xù)的是連續(xù)的SegmentSegment的集合的集合除第一個(gè)除第一個(gè)SegmentSegment和最后一個(gè)和最后一個(gè)SegmentSegment外其余外其余SegmentSegment的起始點(diǎn)都是前的起始點(diǎn)都是前一個(gè)一個(gè)SegmentSegment的終止點(diǎn),即的終止點(diǎn),即PathPath對象的中的對象的中的SegmentSegment不能出現(xiàn)分離不能出現(xiàn)分離PathPath可以是任意數(shù)的可以是任意數(shù)的LineLine,CircularArcCircularArc,EllipticArcEllipticArc和和BezierCurveBezierCurve的組合的組
21、合一個(gè)或多個(gè)一個(gè)或多個(gè)PathPath組成一個(gè)組成一個(gè)PolylinePolyline對象對象Path and RingnRing幾何對象幾何對象RingRing是一個(gè)封閉的是一個(gè)封閉的PathPath即起始和終止點(diǎn)有相同的坐標(biāo)值。它有內(nèi)部即起始和終止點(diǎn)有相同的坐標(biāo)值。它有內(nèi)部和外部屬性和外部屬性一個(gè)或多個(gè)一個(gè)或多個(gè)RingRing對象組成一個(gè)對象組成一個(gè)PolygonPolygon對象對象Polyline and PolygonnPolyline幾何對象幾何對象由一個(gè)或多個(gè)相連或者不相連的由一個(gè)或多個(gè)相連或者不相連的pathpath對象的有序集合對象的有序集合可以是單個(gè)可以是單個(gè)PathPa
22、th對象組成,也可以多個(gè)相連的對象組成,也可以多個(gè)相連的PathPath對象組成,或者對象組成,或者是多個(gè)分離的是多個(gè)分離的PathPath組成組成Polyline and Polygon使用IGeometryCollection接口創(chuàng)建一個(gè)Polyline對象/定義第一個(gè)點(diǎn)定義第一個(gè)點(diǎn)IPoint pPoint1 = new PointClass();pPoint1.X = 100;pPoint1.Y = 100;/定義第二個(gè)點(diǎn)定義第二個(gè)點(diǎn)IPoint pPoint2 = new PointClass();pPoint2.X = 200;pPoint2.Y = 200;/創(chuàng)建一個(gè)創(chuàng)建一個(gè)Li
23、ne對象對象ILine pLine= new LineClass();/設(shè)置設(shè)置Line對象的起始終止點(diǎn)對象的起始終止點(diǎn)pLine.PutCoords(pPoint1,pPoint2);/QI到到ISegmentISegment pSegment= pLine as ISegment;/創(chuàng)建一個(gè)創(chuàng)建一個(gè)Path對象對象ISegmentCollection pPath= new PathClass();object o=Type.Missing;/通過通過ISegmentCollection接口為接口為Path對象添加對象添加Segment對對象象pPath.AddSegment(pSegmen
24、t,ref o,ref o);/創(chuàng)建一個(gè)創(chuàng)建一個(gè)Polyline對象對象IGeometryCollection pPolyline = new PolylineClass();/通過通過IGeometryCollection為為Polyline對象添加對象添加Path對象對象pPolyline.AddGeometry(pPath as IGeometry, ref o, ref o);Polyline and Polygonn Polygon對象對象由一個(gè)或多個(gè)由一個(gè)或多個(gè)RingRing對象的有序集合,它可以由單個(gè)對象的有序集合,它可以由單個(gè)Ring Ring 對象構(gòu)成,對象構(gòu)成,也可以使用
25、多個(gè)也可以使用多個(gè)RingRing組成。組成。RingRing可以分為可以分為Outer Ring(Outer Ring(外環(huán)外環(huán)) )和和InnerInnerRing(Ring(內(nèi)環(huán)內(nèi)環(huán)) )之分。外環(huán)和之分。外環(huán)和內(nèi)環(huán)都是有方向的,它們的區(qū)別是外環(huán)的方向是順時(shí)針的,內(nèi)環(huán)的方內(nèi)環(huán)都是有方向的,它們的區(qū)別是外環(huán)的方向是順時(shí)針的,內(nèi)環(huán)的方向是逆時(shí)針。向是逆時(shí)針。Polyline and Polygon/創(chuàng)建一個(gè)創(chuàng)建一個(gè)Ring對象,通過對象,通過ISegmentCollection接口向其中添加接口向其中添加Segment對象對象ISegmentCollection pSegCollection
26、 = new RingClass();object o = Type.Missing;pSegCollection.AddSegment(pSegment1, ref o, ref o);pSegCollection.AddSegment(pSegment2, ref o, ref o);/QI到到IRing接口封閉接口封閉Ring對象,使其有效對象,使其有效IRing pRing = pSegCollection as IRing;pRing.Close();/使用使用Ring對象構(gòu)建對象構(gòu)建Polygon對象對象IGeometryCollection pGeometryColl = new
27、 PolygonClass();pGeometryColl.AddGeometry(pRing, ref o, ref o);Envelope幾何對象nEnvelope是所有幾何對象的外接矩形,是所有幾何對象的外接矩形,所有的幾何對象都有一個(gè)所有的幾何對象都有一個(gè)Envelope對象對象nIEnvelope是是Envelope對象的主要接口對象的主要接口n可以獲取幾何對象的可以獲取幾何對象的Xmax,Xmin,Ymax,Ymin,Height,Width等屬性等屬性n通過通過IEnvelope的的Expand方法可以按比例方法可以按比例縮放縮放Envelope對象的范圍對象的范圍Curve對象
28、-1除除PointPoint,MultiPointMultiPoint和和EnvelopeEnvelope外,其他所有的幾何體都可以看做外,其他所有的幾何體都可以看做是是Curve(Curve(曲線曲線) )。LineLine,PolylinePolyline,PolygonPolygon,CircularArcCircularArc,BezierCurveBezierCurve,EllipticArcEllipticArc和和CircularArcCircularArc都是曲線的一種都是曲線的一種它們都實(shí)現(xiàn)了它們都實(shí)現(xiàn)了ICurveICurve接口。接口。Curve對象-2nLength屬性
29、返回一個(gè)屬性返回一個(gè)Curve對象的長度對象的長度nFromPoint和和ToPoint屬性獲得屬性獲得Curve對對象的起止點(diǎn)象的起止點(diǎn)nReverseorientation方法改變方法改變Curve對象對象的節(jié)點(diǎn)次序的節(jié)點(diǎn)次序nIsClosed屬性判斷起始點(diǎn)和終止點(diǎn)是否屬性判斷起始點(diǎn)和終止點(diǎn)是否在一個(gè)位置上在一個(gè)位置上nGetSubcurve方法復(fù)制一條方法復(fù)制一條Curve對象的對象的特定部分特定部分Curve對象n獲取獲取2-5千米處的公路曲線代碼:千米處的公路曲線代碼:/QI/QI到到ICurveICurve接口接口(PolyLinePolyLine實(shí)現(xiàn)了實(shí)現(xiàn)了ICurVeICurV
30、e接口)接口)ICurve pCurve = pPolyline as ICurve;ICurve pCurve = pPolyline as ICurve;/創(chuàng)建一個(gè)創(chuàng)建一個(gè)PolylinePolyline對象對象ICurve pNewCurve = new PolylineClass();ICurve pNewCurve = new PolylineClass();bool btrue= true;bool btrue= true;/獲取獲取2-52-5千米間的曲線對象千米間的曲線對象pCurve.GetSubcurve(2, 5, btrue, out pNewCurve);pCurve
31、.GetSubcurve(2, 5, btrue, out pNewCurve);Geometry集合接口nMultiPoint對象是點(diǎn)的集合對象是點(diǎn)的集合nPath對象是對象是Segment對象的集合對象的集合nPolyline對象是對象是Path對象的集合對象的集合nPolygon對象是對象是Ring對象的集合對象的集合n三個(gè)主要的幾何圖形集合接口三個(gè)主要的幾何圖形集合接口IPointCollectionIPointCollectionISegmentCollectionISegmentCollectionIGeometryCollectionIGeometryCollectionIGeo
32、metryCollection接口nIGeometryCollection接口被接口被Polygon,Polyline, Multipoint等實(shí)現(xiàn)等實(shí)現(xiàn)nGeometry屬性通過一個(gè)索引值返回組成該幾何屬性通過一個(gè)索引值返回組成該幾何對象的某個(gè)子對象對象的某個(gè)子對象nGeometryCount返回組成該幾何對象的子對象返回組成該幾何對象的子對象的數(shù)目的數(shù)目nAddGeometry和和AddGeometries方法都用于向方法都用于向一個(gè)幾何對象添加子對象一個(gè)幾何對象添加子對象n通過通過IGometryCollection創(chuàng)建創(chuàng)建Polygon時(shí),需使時(shí),需使用用ITopologicalOpe
33、rator 的的Simplify方法保證其方法保證其有效性。有效性。通過IGeometryCollection創(chuàng)建Polygon對象private IPolygon ConstructorPolygon(List pRingList) try IGeometryCollection pGCollection = new PolygonClass(); /創(chuàng)建一個(gè)Polygon對象object o = Type.Missing;for(int i=0;ipRingList.Count;i+) /遍歷Ring集合pGCollection.AddGeometry(pRingList, ref o,
34、ref o);/QI至ITopologicalOperatorITopologicalOperator pTopological = pGCollection as ITopologicalOperator;pTopological.Simplify(); /執(zhí)行Simplify操作IPolygon pPolygon=pGCollection as IPolygon;return pPolygon; /返回Polygon對象 catch (Exception Err) MessageBox.Show(Err.Message,MessageBox.Show(Err.Message,提示提示,Me
35、ssageBoxButtons.OK,MessageBoxIcon.Information);,MessageBoxButtons.OK,MessageBoxIcon.Information);return null;return null; 合并兩個(gè)Polygon對象為一個(gè)Polgyone對象nprivate IPolygon MergePolygons(IPolygon firstPolygon, IPolygon SecondPolygon)n try IGeometryCollection pGCollection1=new PolygonClass(); /IGeometryColl
36、ection pGCollection1=new PolygonClass(); /創(chuàng)建一個(gè)創(chuàng)建一個(gè)PolygonPolygon對象對象IGeometryCollection pGCollection2 = firstPolygon as IGeometryCollection;IGeometryCollection pGCollection2 = firstPolygon as IGeometryCollection;IGeometryCollection pGCollection3 = SecondPolygon as IGeometryCollection;IGeometryCollec
37、tion pGCollection3 = SecondPolygon as IGeometryCollection;pGCollection1.AddGeometryCollection(pGCollection2); /pGCollection1.AddGeometryCollection(pGCollection2); /添加添加firstPolygonfirstPolygonpGCollection1.AddGeometryCollection(pGCollection3); /pGCollection1.AddGeometryCollection(pGCollection3); /添加
38、添加SecondPolygonSecondPolygonITopologicalOperator pTopological = pGCollection1 as ITopologicalOperator; /QIITopologicalOperator pTopological = pGCollection1 as ITopologicalOperator; /QI至至ITopologicalOperator ITopologicalOperator pTopological.Simplify(); /pTopological.Simplify(); /執(zhí)行執(zhí)行SimplifySimplify
39、操作操作IPolygon pPolygon=pGCollection1 as IPolygon;IPolygon pPolygon=pGCollection1 as IPolygon;return pPolygon; /return pPolygon; /返回返回PolygonPolygon對象對象nncatch (Exception Err)n MessageBox.Show(Err.Message,提示提示,MessageBoxButtons.OK,MessageBoxIcon.Information);nreturn null; ISegmentCollection接口n被被Path,R
40、ing,Polyline和和Polygon四個(gè)類所實(shí)現(xiàn),四個(gè)類所實(shí)現(xiàn),它們被稱作是它們被稱作是Segment集合對象集合對象n處理組成處理組成Segment集合對象中的每一個(gè)子集合對象中的每一個(gè)子Segment對象。對象。n為為Segment集合對象添加,插入,刪除集合對象添加,插入,刪除Segment子對象。子對象。nSetCircle和和SetRectangle方法提供了一種簡單不方法提供了一種簡單不需要添加需要添加Segment的情況下構(gòu)建一個(gè)完成的的情況下構(gòu)建一個(gè)完成的Path,Ring,Polyline和和Polygon的方法。的方法。IPointCollection接口n被多個(gè)幾何
41、對象類所實(shí)現(xiàn):被多個(gè)幾何對象類所實(shí)現(xiàn):Mullipoint,Path,Ring,Polyline,Polygon等等n獲取,添加,插入,查詢,移除幾何對象中的獲取,添加,插入,查詢,移除幾何對象中的某頂點(diǎn)。某頂點(diǎn)。nAddPoint方法向方法向PointCollection對象中的特定對象中的特定索引位添加一個(gè)點(diǎn)對象,如果不指定位置,則索引位添加一個(gè)點(diǎn)對象,如果不指定位置,則添加到最后。添加到最后。nPoint屬性通過頂點(diǎn)索引可以得到某一頂點(diǎn)。屬性通過頂點(diǎn)索引可以得到某一頂點(diǎn)。幾何對象小結(jié)空間參考n空間參考(空間參考(Spatial Reference)是)是GIS數(shù)據(jù)的骨骼框架,數(shù)據(jù)的骨骼框
42、架,能夠?qū)⒖臻g數(shù)據(jù)定位到相應(yīng)的位置,為地圖中的每一點(diǎn)能夠?qū)⒖臻g數(shù)據(jù)定位到相應(yīng)的位置,為地圖中的每一點(diǎn)提供準(zhǔn)確的坐標(biāo)。提供準(zhǔn)確的坐標(biāo)。 nGeodatabase中新建一個(gè)要素?cái)?shù)據(jù)集或一個(gè)單獨(dú)的要素中新建一個(gè)要素?cái)?shù)據(jù)集或一個(gè)單獨(dú)的要素類都必須設(shè)置它們的空間參考。類都必須設(shè)置它們的空間參考。 n空間參考包括以下屬性:空間參考包括以下屬性:坐標(biāo)系坐標(biāo)系( (地理坐標(biāo)系、投影坐標(biāo)系、垂直坐標(biāo)系地理坐標(biāo)系、投影坐標(biāo)系、垂直坐標(biāo)系) )分辨率與空間域分辨率與空間域容差容差nGEOGCS GCS_Xian_1980GCS_Xian_1980,DATUMDATUMD_Xian_1980,SPHEROIDXian
43、_1980,6378140.0,298.257D_Xian_1980,SPHEROIDXian_1980,6378140.0,298.257 , , PRIMEMPRIMEMGreenwich,0.0Greenwich,0.0,UNITUNITDegreeDegree,0.01745329251994330.0174532925199433 nPROJCSXian_1980_3_Degree_GK_Zone_38,Xian_1980_3_Degree_GK_Zone_38,GEOGCSGEOGCSGCS_Xian_1980,DATUMD_Xian_1980,SPHEROIDXian_1GCS_
44、Xian_1980,DATUMD_Xian_1980,SPHEROIDXian_1980,6378140.0,298.257,PRIMEMGreenwich,0.0,UNITDe980,6378140.0,298.257,PRIMEMGreenwich,0.0,UNITDegree,0.0174532925199433gree,0.0174532925199433 , ,PROJECTIONPROJECTIONGauss_Kruger,Gauss_Kruger,PARAMETERPARAMETERFalse_Easting,38500000.0,False_Easting,38500000.0
45、,PARAMETERPARAMETERFalse_Northing,0.0,False_Northing,0.0,PARAMETERPARAMETERCentral_Meridian,114.0,Central_Meridian,114.0,PARAMETERPARAMETERScale_Factor,1.0,Scale_Factor,1.0,PARAMETERPARAMETERLatitude_Of_Origin,0.0,Latitude_Of_Origin,0.0,UNITMeter,1.0UNITMeter,1.0Use the SpatialReferenceEnvironment n
46、ArcObjects包含大量的預(yù)定義的空間參考系以及空間參考系的構(gòu)包含大量的預(yù)定義的空間參考系以及空間參考系的構(gòu)建塊建塊(building blocks) .每個(gè)每個(gè)預(yù)定義的對象由一個(gè)工廠代碼識別預(yù)定義的對象由一個(gè)工廠代碼識別( (a factory codea factory code) )。工廠代碼由工廠代碼由esriSR esriSR 開頭的枚舉集合定義,一般使用枚舉宏開頭的枚舉集合定義,一般使用枚舉宏( (enumeration macro)enumeration macro)而不是整數(shù)值來生成而不是整數(shù)值來生成預(yù)定義的對象。預(yù)定義的對象。nISpatialReferenceFacto
47、ry接口提供的方法使用接口提供的方法使用FactoryCode 來來生成預(yù)定義的空間參考對象,這個(gè)接口提供了三種類型的方法:生成預(yù)定義的空間參考對象,這個(gè)接口提供了三種類型的方法:返回單個(gè)對象的方法返回單個(gè)對象的方法返回同類對象集合的方法返回同類對象集合的方法基于基于PRJ PRJ 文件或文件或PRJPRJ字符串表達(dá)來導(dǎo)入字符串表達(dá)來導(dǎo)入/ /導(dǎo)出空間參考對象的導(dǎo)出空間參考對象的方法方法nprivate void PrintPreDefinedProjections() ISpatialReferenceFactoryISpatialReferenceFactory spatialRefere
48、nceFactory = spatialReferenceFactory = new new SpatialReferenceEnvironmentClassSpatialReferenceEnvironmentClass(); (); ISetISet projectionSet = projectionSet = spatialReferenceFactory.CreatePredefinedProjectionsspatialReferenceFactory.CreatePredefinedProjections(); (); MessageBox.Show(Number of pred
49、efined Projections = MessageBox.Show(Number of predefined Projections = + projectionSet.Count); + projectionSet.Count); projectionSet.Reset(); projectionSet.Reset(); for(int i = 0; i projectionSet.Count; i+) for(int i = 0; i projectionSet.Count; i+) IProjectionIProjection projection = projectionSet.
50、Next() as projection = projectionSet.Next() as IProjection; MessageBox.Show(projection.Name); IProjection; MessageBox.Show(projection.Name); nprivate void CreateGeographicCoordinateSystem() / SpatialReferenceEnvironment is a singleton object and needs / SpatialReferenceEnvironment is a singleton obj
51、ect and needs to use the Activator class.to use the Activator class. TypeType t = t = Type.GetTypeFromProgID(esriGeometry.SpatialReferenceEnvironment);Type.GetTypeFromProgID(esriGeometry.SpatialReferenceEnvironment); System.ObjectSystem.Object obj = Activator.CreateInstance(t); obj = Activator.Creat
52、eInstance(t); ISpatialReferenceFactoryISpatialReferenceFactory srFact = obj as srFact = obj as ISpatialReferenceFactory;ISpatialReferenceFactory; / Use the enumeration to create an instance of the predefined / Use the enumeration to create an instance of the predefined object.object. IGeographicCoor
53、dinateSystemIGeographicCoordinateSystem geographicCS = geographicCS = srFact.CreateGeographicCoordinateSystem(int)esriSRGeoCSType.esriSRsrFact.CreateGeographicCoordinateSystem(int)esriSRGeoCSType.esriSRGeoCS_NAD1983);GeoCS_NAD1983); 單實(shí)例對象的創(chuàng)建與釋放nRuntime callable wrappers and the System._COMObject typ
54、e在在.NET.NET中,每個(gè)類、接口、枚舉類型等通過其類型進(jìn)行描述。中,每個(gè)類、接口、枚舉類型等通過其類型進(jìn)行描述。Type Type 類(類(.NET .NET 框架中的類)包含一個(gè)數(shù)據(jù)類型的數(shù)據(jù)成員及函數(shù)成員的框架中的類)包含一個(gè)數(shù)據(jù)類型的數(shù)據(jù)成員及函數(shù)成員的有關(guān)信息。有關(guān)信息。當(dāng)在當(dāng)在.NET.NET中通過中通過interopinterop創(chuàng)建創(chuàng)建COMCOM對象時(shí),你獲得了該對對象時(shí),你獲得了該對象的引用(該對象被包裝在象的引用(該對象被包裝在RCW RCW 中)中) , 在在.NET.NET應(yīng)用程序內(nèi)部,應(yīng)用程序內(nèi)部, RCWRCW擁有對該擁有對該COMCOM對象的引用。對象的引用
55、。n代碼代碼1:ISimpleMarkerSymbolISimpleMarkerSymbol sym = new sym = new SimpleMarkerSymbolClassSimpleMarkerSymbolClass();();Debug.WriteLine(sym.GetType().FullName);Debug.WriteLine(sym.GetType().FullName);運(yùn)行以上代碼時(shí),運(yùn)行以上代碼時(shí),sym sym 的類型是的類型是SimpleMarkerSymbolClassSimpleMarkerSymbolClass, symsym擁有了擁有了SimpleMar
56、kerSymbolClassSimpleMarkerSymbolClass的的ISimpleMarkerSymbol ISimpleMarkerSymbol 的引用。的引用。n代碼代碼2:ISimpleMarkerSymbolISimpleMarkerSymbol sym = rend.Symbol as sym = rend.Symbol as ISimpleMarkerSymbolISimpleMarkerSymbol; ; Debug.WriteLine(sym.GetType().FullName);Debug.WriteLine(sym.GetType().FullName);上述代
57、碼中,上述代碼中,symsym通過另一個(gè)對象通過另一個(gè)對象rend(ISimpleRenderer)rend(ISimpleRenderer)的的屬性獲得對一個(gè)屬性獲得對一個(gè)RCW(SimpleMarkerSymbol)RCW(SimpleMarkerSymbol)的引用的引用. .n分析比較:分析比較:代碼代碼1 1中,通過中,通過new new 關(guān)鍵字創(chuàng)建了一個(gè)關(guān)鍵字創(chuàng)建了一個(gè)SimpleMarkerSymbolClass SimpleMarkerSymbolClass 類型的符類型的符號號symsym。當(dāng)代碼編譯的時(shí)候,編譯器使用。當(dāng)代碼編譯的時(shí)候,編譯器使用 Reflection Re
58、flection 機(jī)制能夠發(fā)現(xiàn)變量的機(jī)制能夠發(fā)現(xiàn)變量的確切類型,且將該類型的元數(shù)據(jù)保存到編譯后的代碼中。當(dāng)代碼運(yùn)行的時(shí)候確切類型,且將該類型的元數(shù)據(jù)保存到編譯后的代碼中。當(dāng)代碼運(yùn)行的時(shí)候,運(yùn)行時(shí)擁有變量類型的所有信息。,運(yùn)行時(shí)擁有變量類型的所有信息。代碼代碼2 2中,通過中,通過ISimpleRendererISimpleRenderer的的SymbolSymbol屬性設(shè)置了屬性設(shè)置了symsym變量的值。變量的值。當(dāng)代碼當(dāng)代碼編譯的時(shí)候,編譯器能夠發(fā)現(xiàn)的元數(shù)據(jù)只有編譯的時(shí)候,編譯器能夠發(fā)現(xiàn)的元數(shù)據(jù)只有SymbolSymbol屬性返回的對屬性返回的對ISymbolISymbol的的引用,其對象
59、的確切類型不能被發(fā)現(xiàn)。引用,其對象的確切類型不能被發(fā)現(xiàn)。 盡管可以使用接口查詢獲得盡管可以使用接口查詢獲得sym sym 變變量的量的ISimpleMarkerSymbol ISimpleMarkerSymbol ,但代碼運(yùn)行的時(shí)候,運(yùn)行時(shí)沒有所需的元數(shù)據(jù),但代碼運(yùn)行的時(shí)候,運(yùn)行時(shí)沒有所需的元數(shù)據(jù)來發(fā)現(xiàn)變量的確切類型。來發(fā)現(xiàn)變量的確切類型。在這種情況下,當(dāng)訪問在這種情況下,當(dāng)訪問SymbolSymbol屬性時(shí),屬性時(shí),.NET .NET 運(yùn)行運(yùn)行時(shí)將對時(shí)將對COM COM 對象的引用包裝在通用的對象的引用包裝在通用的RCW: System._ComObjectRCW: System._ComO
60、bject中。中。 System._ComObjectSystem._ComObject是是.NET .NET 框架內(nèi)部的類,用于引用任何類型的框架內(nèi)部的類,用于引用任何類型的COMCOM對象,對象,其目的是扮演一個(gè)未知類型的其目的是扮演一個(gè)未知類型的COMCOM對象的對象的RCWRCW。n單實(shí)例對象僅支持對象的一個(gè)實(shí)例。單實(shí)例對象僅支持對象的一個(gè)實(shí)例。當(dāng)使用當(dāng)使用new 關(guān)鍵字實(shí)例化關(guān)鍵字實(shí)例化一個(gè)單實(shí)例的一個(gè)單實(shí)例的COM對象對象(singleton )時(shí),如果之前該時(shí),如果之前該COM類已經(jīng)類已經(jīng)實(shí)例化了,你將獲得對一個(gè)已經(jīng)存在的對象的引用,而不是又實(shí)例化了,你將獲得對一個(gè)已經(jīng)存在的對象
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店財(cái)務(wù)指標(biāo)解讀與應(yīng)用試題及答案
- 紡織機(jī)械操作證書考試的重要形式的試題及答案
- Adobe設(shè)計(jì)師考試考點(diǎn)試題及答案揭示
- 成功逆襲2024年酒店經(jīng)營管理師考試試題及答案
- 紡織機(jī)械操作流程的細(xì)節(jié)試題及答案
- 紡織機(jī)械操作合規(guī)性測試試題及答案2024
- 未來城市的多層次交通體系試題及答案
- 2024年酒店經(jīng)營管理師考試重難點(diǎn)例題試題及答案
- 了解CAD 工程師考試的全貌試題及答案
- 2024年酒店經(jīng)營管理師考試復(fù)習(xí)確認(rèn)試題及答案
- FZ/T 07019-2021針織印染面料單位產(chǎn)品能源消耗限額
- 重癥醫(yī)學(xué)科各項(xiàng)規(guī)章制度匯編
- 社會(huì)組織培訓(xùn)概述課件
- 春節(jié)作文優(yōu)秀課件
- 三角函數(shù)的應(yīng)用論文Word版
- 農(nóng)業(yè)創(chuàng)業(yè)風(fēng)險(xiǎn)控制與防范培訓(xùn)課件
- 生物制造國內(nèi)外狀況課件
- 幼兒園大班數(shù)學(xué)口算練習(xí)題可打印
- 藥物臨床試驗(yàn)管理和質(zhì)量控制課件(PPT 55頁)
- 【匯總】高二政治選擇性必修三(統(tǒng)編版) 重點(diǎn)知識點(diǎn)匯總
- 橋梁下部結(jié)構(gòu)監(jiān)理細(xì)則
評論
0/150
提交評論