版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 地理圖形標(biāo)記語言GML的架構(gòu)及范例</p><p><b> 一、前言</b></p><p> 在信息高速公路的時代,如何能在不同的GIS 系統(tǒng)間實時分享資料,是刻不容緩的問題,現(xiàn)在該問題已經(jīng)有了一個很好解決方案,那就是以 XML 為基礎(chǔ)的 GIS 編碼標(biāo)準(zhǔn),稱為地理圖形標(biāo)記語言GML(Geography Markup Language)。
2、</p><p> GML是由開放式地理信息系統(tǒng)聯(lián)盟(OpenGIS Consortium,簡稱OGC)所發(fā)展,專為地理信息而發(fā)展的,以XML 為基礎(chǔ)的編碼標(biāo)準(zhǔn),其與生俱來的轉(zhuǎn)換及存取能力,將地理空間信息的管理開啟一個全新的領(lǐng)域(請參考 黃旭初[2002],『新世代的GIS編碼標(biāo)準(zhǔn)-地理圖形標(biāo)記語言 GML』,國土信息系統(tǒng)通訊第42期)。</p><p> 由于GML在GIS領(lǐng)域,將對
3、『資料交換』課題的扮演關(guān)鍵的角色,GIS 的參與者實有必要對GML的內(nèi)容有深入的了解,本文將介紹GML的架構(gòu),并以范例說明。</p><p><b> 二、GML基本架構(gòu)</b></p><p> ?。ㄒ唬┮訶ML技術(shù)為基礎(chǔ)</p><p> GML 目前的正式版本是2.1.1版,它以XML技術(shù)為基礎(chǔ),并使用最新的 XML Schema文件
4、定義技術(shù),XML Schema具有 DTD所沒有的型態(tài)繼承(type inheritance)、名稱空間(namespaces)等,且其使用XLink來表現(xiàn)地理空間實體間的關(guān)系,使得實體間關(guān)系的建立不僅限于同一數(shù)據(jù)庫,甚至可橫跨網(wǎng)際網(wǎng)絡(luò),因此GML 2.1.1版已足以建構(gòu)分布式的GIS數(shù)據(jù)庫。</p><p> ?。ǘ┮詓imple feature為處理的單元</p><p> GML
5、使用『地理圖形實體(稱為feature)』來描述這個世界,基本上一個feature是由一系列的屬性(properties)及幾何圖形(geometries)所組成,屬性的內(nèi)容包括名稱(name)、型態(tài)(type)、值的敘述(value description)等,幾何圖形(geometries)則由基本幾何區(qū)塊(例如點、線、及多邊形)所組成,為了簡化,GML的初始規(guī)格限定在平面的簡單幾何圖形(稱為 simple feature,包括點、
6、線、及多邊形),在不久的將來,將會擴展至3D的幾何圖形及位相資料。</p><p> GML的編碼可以容許相當(dāng)復(fù)雜的feature,一個feature的幾何圖形可以由許多幾何圖形元素所組成(稱為 Geometric Collection),也可以包含不同型態(tài)的幾何圖形。例如一個無線電轉(zhuǎn)播塔可以同時有一個點的屬性(它的位置點)及一個以多邊形所構(gòu)成的面的屬性(它所涵蓋的區(qū)域)。</p><p&g
7、t;<b> ?。ㄈ〨ML的內(nèi)容</b></p><p> GML 2.1.1版以XML技術(shù)為基礎(chǔ),并使用 XML Schema文件定義技術(shù),目前GML以Feature Schema、Geometry Schema、Xlinks Schema等三個基本的schema來定義它的內(nèi)容,分述如下:</p><p> 1. Feature Schema(feature.
8、xsd)</p><p> Feature Schema定義feature的內(nèi)容及結(jié)構(gòu)。圖1是以UML來描述Feature schema的內(nèi)容及結(jié)構(gòu),從圖中可以看到幾何圖形的屬性(geometric property)被當(dāng)作一個關(guān)聯(lián)類別(association class),來將一個feature與一個幾何圖形(geometry)連結(jié),例如PointProperty用來連結(jié)一個點(point)的幾何圖形。詳細(xì)的
9、Feature schema內(nèi)容請參考GML2.1.1規(guī)格書(位于http://opengis.net/gml/02-009/GML2-11.html)之附錄A。</p><p> 圖1. Feature schema之UML圖標(biāo)</p><p> 2. Geometry Schema(geometry.xsd)</p><p> Geometry schem
10、a有關(guān)幾何圖形元素的類型的定義,包括點(point)、線(line)、多邊形(polygon)等簡單幾何圖形,及復(fù)合類型(complex type)的幾何圖形。圖2是以UML來描述Geometry schema的內(nèi)容及結(jié)構(gòu)。</p><p> Feature schema使用<include>元素來將幾何圖形結(jié)構(gòu)Geometry schema帶進(jìn)來,使得在定義feature type時可以引用:&l
11、t;/p><p> <include schemaLocation= geometry.xsd /></p><p> 詳細(xì)的Geometry schema內(nèi)容請參考GML 2.1.1規(guī)格書之附錄B。</p><p> 圖2. Geometry schema之UML圖標(biāo)</p><p> GML 定義了幾個基本的幾何圖形屬性(
12、Geometric property),用來將feature與幾何圖形連結(jié),有關(guān)基本的幾何圖形屬性表列如下。</p><p> 3. XLinks Schema(xlink.xsd)</p><p> 提供XLink屬性來作為數(shù)據(jù)鏈結(jié)使用。Geometry schema使用<import>元素來引用XLink。詳細(xì)的XLinks schema內(nèi)容請參考GML 2.1.1規(guī)格
13、書之附錄C。</p><p> Feature schema、Geometry schema及XLink schema三個基本schema之間的關(guān)系可用圖3來表示。</p><p> 圖3. Feature schema、Geometry schema及XLink schema等三個基本schema之間的關(guān)系。</p><p> 三、以GML編碼的范例<
14、/p><p> ?。ㄒ唬o幾何圖形的數(shù)據(jù)的編碼</p><p> 本節(jié)以最簡單的范例介紹起,假設(shè)有個非空間資料的feature type稱為 員工 (Employee),他有姓名、年齡、及別名等屬性,其中別名可能有0個或1個以上,若以XML來對"員工"這個feature type編碼,則可能的XML instance如下:</p><p> &l
15、t;Employee></p><p> <name>黃旭初</name></p><p> <Age>41</age></p><p> <nickName>小黃</nickName></p><p> <NickName>阿初</nic
16、kName></p><p> </Employee></p><p> 在尚不考慮GML的狀況下,本實例的XML schema應(yīng)定義如下:</p><p> <element name="Employee" type="ex:EmployeeType" /></p><
17、p> <complexType name="EmployeeType"></p><p> <sequence></p><p> <element name="name" type="string"/></p><p> <element name=
18、"age" type="integer"/></p><p> <Element name="nickName" type="string" minOccurs="0"maxOccurs="unbounded"/></p><p> </Seq
19、uence></p><p> </complexType></p><p> 若要引用GML的Feature schema,必須先確認(rèn)哪些元素扮演feature type及其屬性(property)的角色,在本例中 員工 是一個feature type,年齡是一個屬性(property),則上例改寫成GML的語法如下:</p><p> &
20、lt;element name="Employee" type="ex:EmployeeType" substitutionGroup="gml:_Feature" /></p><p> <ComplexType name="EmployeeType"></p><p> <com
21、plexContent></p><p> <extension base="gml:AbstractFeatureType"></p><p> <sequence></p><p> <element name="name" type="string"/>
22、</p><p> <element name="age" type="integer"/></p><p> <element name="nickName" type="string" minOccurs="0" maxOccurs="unbounded&
23、quot;/></p><p> </sequence></p><p> </extension></p><p> </complexContent></p><p> </complexType></p><p> 而且GML的Feature sch
24、ema中有一些已經(jīng)定義好的屬性(例如如GML feature ID(fid)及其description屬性等),可以在制作XML instance的時候使用,舉例如下:</p><p> <Employee fid="D1123"></p><p> <Gml:description>內(nèi)政部信息中心的員工</gml:descriptio
25、n></p><p> <name>黃旭初</name></p><p> <age>41</age></p><p> <nickName>小黃</nickName></p><p> <nickName>阿初</nickName>
26、</p><p> </Employee></p><p> ?。ǘ┳鴺?biāo)及坐標(biāo)范圍的編碼</p><p> 幾何圖形的坐標(biāo)可以用一系列的<coord>元素組、或<coordinates>元素的單一字符串來編碼,兩種方法都可以對1、2、3度空間的坐標(biāo)編碼,其中<coord>元素可以使用XML 解析器(parser)
27、來驗證其正確性。</p><p> <coord>元素在 GML的Geometry schema 中定義如下:</p><p> <element name="coord" type="gml:CoordType" /></p><p> <complexType name="Co
28、ordType"></p><p> <sequence></p><p> <element name="X" type="decimal"/></p><p> <element name="Y" type="decimal" mi
29、nOccurs="0"/></p><p> <element name="Z" type="decimal" minOccurs="0"/></p><p> </sequence></p><p> </complexType><
30、/p><p> <Coord>元素中資料組的組數(shù)由數(shù)據(jù)類型決定,例如點(point)資料只含有一組坐標(biāo)組,如下:</p><p> <Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"></p><p> <coord><X>5
31、.0</X><Y>40.0</Y></coord></p><p><b> </Point></b></p><p> ?。ɡ衧rsName="http://www.opengis.net/gml/srs/epsg.xml#4326是空間參考系統(tǒng)。)</p><p>
32、 而<coordinates>與<coord>的作用一樣,但更具有彈性,使用者可以定義坐標(biāo)值之間的間隔符號(delimiter),<coordinates>元素在 GML的Geometry schema 中定義如下:</p><p> <Element name="coordinates" type="gml:CoordinatesType
33、"/></p><p> <complexType name="CoordinatesType"></p><p> <simpleContent></p><p> <extension base="string"></p><p> <
34、;Attribute name="decimal" type="string" use="default" value="."/></p><p> <attribute name="cs" type="string" use="default" value=&
35、quot;,"/></p><p> <attribute name="ts" type="string" use="default" value=" "/></p><p> </extension></p><p> &
36、lt;/simpleContent></p><p> </complexType></p><p> <Coordinates>的坐標(biāo)值是儲存在一個字符串內(nèi),其中預(yù)設(shè)的小數(shù)點是 "."、坐標(biāo)值的間隔符號是 ","、坐標(biāo)組的間隔符號是Unicode的空白(#x20),使用者可以依其需要改變上述之間隔符號。</p
37、><p> 同樣以點資料為例,以<coordinates>編碼坐標(biāo)如下:</p><p> <Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"></p><p> <coordinates>5.0,40.0</coordinates
38、></p><p><b> </Point></b></p><p> (三)基本幾何圖形的編碼</p><p> 幾何圖形的坐標(biāo)都是定義在某種空間參考系統(tǒng)(Spatial Reference System,縮寫為SRS)中,GML 2.1.1版中沒有規(guī)定 SRS的細(xì)部規(guī)格,目前OGC已經(jīng)提出一份建議規(guī)格進(jìn)行討論,應(yīng)該
39、很快就會公布,幾何圖形類型(geometry type)的srsName屬性是用來指向SRS的定義。</p><p> 幾何圖形類型(geometry type)的gid 屬性是幾何圖形元素的唯一辨識碼,屬于選擇使用的項目,依規(guī)定,gid的值是字符串且第一個字符不能是數(shù)字。</p><p> GML中所定義的基本幾何圖形元素(primitive geometry element)包括坐
40、標(biāo)范圍(Box)、點(Point)、線串(LineString)、線環(huán)(LinearRing)、及多邊形(Polygon),分述如下:</p><p> 1. Box:用來對feature的坐標(biāo)范圍編碼,第一組坐標(biāo)是坐標(biāo)范圍的極小值,第二組坐標(biāo)是坐標(biāo)范圍的極大值,舉例如下:</p><p> <Box srsName="http://www.opengis.net/gm
41、l/srs/epsg.xml#4326"></p><p> <coord><X>0.0</X><Y>0.0</Y></coord></p><p> <coord><X>100.0</X><Y>100.0</Y></coord>
42、;</p><p><b> </Box></b></p><p> 2. Point:點元素只有一組坐標(biāo),舉例如下,</p><p> <Point gid="P1" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"&g
43、t;</p><p> <coord><X>56.1</X><Y>0.45</Y></coord></p><p><b> </Point></b></p><p> 3. LineString:由兩組以上的點坐標(biāo)所構(gòu)成的直線串,舉例如下:</p&
44、gt;<p> <LineString></p><p> <Coord><X>0.0</X><Y>0.0</Y></coord></p><p> <coord><X>20.0</X><Y>35.0</Y></coord
45、></p><p> <coord><X>100.0</X><Y>100.0</Y></coord></p><p> </LineString></p><p> 若第一點坐標(biāo)值與最后一點坐標(biāo)值一樣,則這是一個封閉的線串。</p><p> 4
46、. LinearRing:線環(huán)是封閉的直線串,其第一點坐標(biāo)值與最后一點坐標(biāo)值一樣,它是被用來建構(gòu)多邊形,其編碼范例詳見以下多邊形的介紹。</p><p> 5. Polygon:多邊形的邊界是由線環(huán)(LinearRing)所構(gòu)成,且區(qū)分成外邊界(outer boundary)及內(nèi)邊界 (inner boundary),內(nèi)邊界可以有多個但彼此不能交叉及包含,且邊界點的順序是順時針或逆時針并不重要。以下是一個多邊形
47、的 instance,它擁有兩個內(nèi)部邊界:</p><p> <Polygon gid="_98217" srsName="http://www.opengis.net/gml/srs/ epsg.xml#4326"></p><p> <outerBoundaryIs></p><p> <
48、;LinearRing></p><p> <coordinates>0.0,0.0 100.0,0.0 100.0,100.0 0.0,100.0 0.0,0.0 </coordinates></p><p> </LinearRing></p><p> </outerBoundaryIs></p
49、><p> <innerBoundaryIs></p><p> <LinearRing></p><p> <coordinates>10.0,10.0 10.0,40.0 40.0,40.0 40.0,10.0 10.0,10.0 </ coordinates></p><p> <
50、;/LinearRing></p><p> </innerBoundaryIs></p><p> <innerBoundaryIs></p><p> <LinearRing></p><p> <coordinates>60.0,60.0 60.0,90.0 90.0,90.
51、0 90.0,60.0 60.0,60.0</ coordinates></p><p> </LinearRing></p><p> </innerBoundaryIs></p><p> </Polygon></p><p> (四)幾何圖形集合的編碼</p><
52、;p> GML Geometry schema所預(yù)先定義的幾何圖形集合(geometry collection),可分為同質(zhì)幾何圖形集合(homogeneous geometry collection)及異質(zhì)幾何圖形集合(heterogeneous geometry collection)兩種。</p><p> 所謂的同質(zhì)幾何圖形集合(homogeneous geometry collection)是
53、指同類型幾何元素的集合,包括 MultiPoint、MultiLineString及MultiPolygon等三種。以下以MultiLineString為例,在本例中 MultiLineString幾何圖形集合擁有三個LineString的成員:</p><p> <MultLineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4
54、326"></p><p> <lineStringMember></p><p> <LineString></p><p> <coord><X>56.1</X><Y>0.45</Y></coord></p><p>
55、<coord><X>67.23</X><Y>0.98</Y></coord></p><p> </LineString></p><p> </lineStringMember></p><p> <lineStringMember></p>
56、;<p> <LineString></p><p> <coord><X>46.71</X><Y>9.25</Y></coord></p><p> <coord><X>56.88</X><Y>10.44</Y></co
57、ord></p><p> </LineString></p><p> </lineStringMember></p><p> <LineStringMember></p><p> <LineString></p><p> <coord>
58、;<X>324.1</X><Y>219.7</Y></coord></p><p> <coord><X>0.45</X><Y>4.56</Y></coord></p><p> </LineString></p><p&g
59、t; </lineStringMember></p><p> </MultiLineString></p><p> 所謂的異質(zhì)幾何圖形集合(homogeneous geometry collection)是指不同類型幾何元素的集合,GML Geometry schema中的MultiGeometry元素即是異質(zhì)幾何圖形集合,它的成員可以包括Points、
60、LineStrings、Polygons、MultiPoints、 MultiLineStrings、MultiPolygon等幾何圖形元素、及其它的幾何圖形集合(geometry collection)。</p><p> 以下是一個異質(zhì)幾何圖形集合的instance,它包含Point、LineString及Polygon等三種不同類型幾何元素的成員:</p><p> <Mu
61、ltiGeometry gid="c731" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"></p><p> <geometryMember></p><p> <Point gid="P6776"></p><
62、p> <coord><X>50.0</X><Y>50.0</Y></coord></p><p><b> </Point></b></p><p> </geometryMember></p><p> <geometryMem
63、ber></p><p> <LineString gid="L21216"></p><p> <coord><X>0.0</X><Y>0.0</Y></coord></p><p> <coord><X>0.0</X&
64、gt;<Y>50.0</Y></coord></p><p> <coord><X>100.0</X><Y>50.0</Y></coord></p><p> </LineString></p><p> </GeometryMembe
65、r></p><p> <geometryMember></p><p> <Polygon gid="_877789"></p><p> <outerBoundaryIs></p><p> <LinearRing></p><p>
66、 <coordinates>0.0,0.0 100.0,0.0 50.0,100.0 0.0,0.0</coordinates></p><p> </LinearRing></p><p> </outerBoundaryIs></p><p> </Polygon></p><
67、;p> </geometryMember></p><p> </MultiGeometry></p><p> ?。ㄎ澹┚哂袔缀螆D形的feature的編碼</p><p> GML 2.1.1版提供了一組定義好的幾何圖形屬性(geometry property),將某些類型的幾何圖形與feature產(chǎn)生關(guān)聯(lián)。</p>
68、<p> 我們繼續(xù)前面的員工范例,為其加上一個點的屬性,稱為 location (location是已定義于GML Feature schema中的pointProperty的別名),則可以得到下列的結(jié)果:</p><p> <Employee fid="D1123"></p><p> <gml:description>內(nèi)政
69、部信息中心的員工</gml:description></p><p> <name>黃旭初</name></p><p> <age>41</age></p><p> <nickName>小黃</nickName></p><p> <nick
70、Name>阿初</nickName></p><p> <gml:location></p><p> <gml:point></p><p> <gml:coord><gml:x>1.0</gml:x><gml:y>1.0</gml:y></gml:c
71、oord></p><p> </Gml:point></p><p> </gml:location></p><p> </Employee></p><p> 其相對應(yīng)的application schema如下:</p><p> <element nam
72、e="Employee" type="ex:EmployeeType" substitutionGroup="gml:_Feature"/></p><p> <complexType name="EmployeeType"></p><p> <complexContent>
73、</p><p> <exten.sion base="gml:AbstractFeatureType"></p><p> <sequence></p><p> <element name="name" type="string"/></p>&l
74、t;p> <element name="age" type="integer"/></p><p> <element name="nickName" type="string" minOccurs="0" maxOccurs="unbounded"/><
75、/p><p> <element ref= gml:location /></p><p> </sequence></p><p> </extension></p><p> </complexContent></p><p> </complexType
76、></p><p> 我們亦可以將上面的location屬性重新命名成一個新的屬性名稱employeeLocation,供application schema全體使用,則上面application schema改寫如下:</p><p> <Element name="Employee" type="ex:EmployeeType"
77、substitutionGroup="gml:_Feature"/></p><p> <element name="employeeLocation" type="gml:PointPropertyType" SubstitutionGroup="gml:pointProperty"/></p>&
78、lt;p> <complexType name="EmployeeType"></p><p> <complexContent></p><p> <extension base="gml:AbstractFeatureType"></p><p> <sequence
79、></p><p> <element name="name" type="string"/></p><p> <element name="age" type="integer"/></p><p> <element name="
80、nickName" type="string" minOccurs="0" maxOccurs="unbounded"/></p><p> <element ref= ex:employeeLocation /></p><p> </sequence></p><
81、p> </extension></p><p> </complexContent></p><p> </complexType></p><p> ?。ゝeature集合的編碼</p><p> feature集合(feature collection)使用featureMember屬
82、性來包含多個feature或其它的 feature collection。以一個城市模型的feature collection為例,它包含道路及河流等資料,則其可能的 GML instance如下:</p><p> <CityModel fid="Cm1456"></p><p> <dateCreated>Feb 2000</dat
83、eCreated></p><p> <gml:featureMember></p><p> <River fid="Rv567">....</River></p><p> </gml:featureMember> </p><p> <gml:fea
84、tureMember></p><p> <River fid="Rv568">....</River></p><p> </gml:featureMember></p><p> <gml:featureMember></p><p> <Road f
85、id="Rd812">....</Road></p><p> </gml:featureMember></p><p> </CityModel></p><p> 以下是相對應(yīng)的application schema,注意其中g(shù)ml:_Feature Collection及gml:Abstract
86、 Feature Collection Type的宣告:</p><p> <element name="CityModel" type="ex:CityModelType" substitutionGroup="gml:_FeatureCollection"/></p><p> <element name
87、="River" type="ex:RiverType"substitutionGroup="gml:_Feature"/></p><p> <element name="Road" type="ex:RoadType"substitutionGroup="gml:_Feature&quo
88、t;/></p><p> <complexType name="CityModelType"></p><p> <complexContent></p><p> <extension base="gml:AbstractFeatureCollectionType"><
89、/p><p> <sequence></p><p> <element name="dateCreated" type="month"/></p><p> </sequence></p><p> </extension></p>&
90、lt;p> </complexContent></p><p> </ComplexType></p><p> <ComplexType name="RiverType"></p><p> <complexContent></p><p> <ext
91、ension base="gml:AbstractFeatureType"></p><p> <sequence>....</sequence></p><p> </extension></p><p> </complexContent></p><p>
92、 </ComplexType></p><p> <ComplexType name="RoadType"></p><p> <complexContent></p><p> <extension base="gml:AbstractFeatureType"></
93、p><p> <sequence>.....</sequence></p><p> </extension></p><p> </complexContent></p><p> </complexType></p><p> 而feature co
94、llection中的成員亦可以是儲存在遠(yuǎn)程的feature,其間以Xlink鏈接。我們同樣以上面的城市模型為例,可以在不修改原來的application schema的情況下,加入儲存在遠(yuǎn)程的河流資料,如下:</p><p> <CityModel fid="Cm1456"></p><p> <dateCreated>Feb 2000<
95、;/dateCreated></p><p> <gml:featureMember xlink:type="simple" xlink:href="http://www.myfavoritesite.com/rivers.xml#Rv567"/></p><p> <gml:featureMember xlink:typ
96、e="simple" xlink:href="http://www.myfavoritesite.com/rivers.xml#Rv568"/></p><p> <gml:featureMember></p><p> <Road fid="Rd812">....</Road><
97、;/p><p> </gml:featureMember></p><p> </CityModel></p><p> 例中以xlink:href屬性指向遠(yuǎn)程的河流對象。</p><p> ?。ㄆ撸ゝeature的關(guān)聯(lián)數(shù)據(jù)的編碼</p><p> XML文件結(jié)構(gòu)的主要目的,是為了描述資料、
98、及資料內(nèi)部組成組件間的關(guān)系。GML以巢狀結(jié)構(gòu)的包含(containment)、及鏈接(linking)來描述資料間的關(guān)系。</p><p> 以三筆土地(LandParcel)之間的相鄰關(guān)系為例,以GML編碼的instance如下:</p><p> <LandParcel fid="Lp2034"></p><p> <
99、area>2345</area></p><p> <gml:extentOf>...</extentOf></p><p> <adjacentTo xlink:type="simple" xlink:href="#Lp2035"/></p><p> <ad
100、jacentTo xlink:type="simple" xlink:href="#Lp2036"/></p><p> </LandParcel></p><p><b> ....</b></p><p> <LandParcel fid="Lp2035&quo
101、t;></p><p> <area>9812</area></p><p> <gml:extentOf>...</extentOf></p><p> <AdjacentTo xlink:type="simple" xlink:href="#Lp2034"/
102、></p><p> <adjacentTo xlink:type="simple" xlink:href="#Lp2036"/></p><p> </LandParcel></p><p><b> ....</b></p><p> &l
103、t;LandParcel fid="Lp2036"></p><p> <area>8345</area></p><p> <gml:extentOf>...</extentOf></p><p> <adjacentTo xlink:type="simple"
104、; xlink:href="#Lp2034"/></p><p> <adjacentTo xlink:type="simple" xlink:href="#Lp2035"/></p><p> </LandParcel></p><p> 例中以adjacenTo屬性來
105、表示該筆土地與哪一筆土地相鄰。上例所對應(yīng)的application schema如下:</p><p> <element name="LandParcel" type="ex:LandParcelType" substitutionGroup="gml:_Feature"/></p><p> <elemen
106、t name="adjacentTo" type="ex:AdjacentToType" substitutionGroup="gml:featureMember" /></p><p> <complexType name="LandParcelType"></p><p> <c
107、omplexContent></p><p> <extension base="gml:AbstractFeatureType"></p><p> <sequence></p><p> <element name="area" type="integer"/&
108、gt;</p><p> <element ref="gml:extentOf"/></p><p> <element ref="ex:adjacentTo" minOccurs="0" maxOccurs="unbounded"/></p><p> &
109、lt;/sequence></p><p> </extension></p><p> </complexContent></p><p> </complexType></p><p> <complexType name="AdjacentToType">
110、</p><p> <complexContent></p><p> <restriction base="gml:FeatureAssociationType"></p><p> <sequence></p><p> <element ref="ex:La
111、ndParcel"/></p><p> </sequence></p><p> </restriction></p><p> </complexContent></p><p> </complexType></p><p> 上例亦可以用
112、另一種方式來表現(xiàn)相鄰?fù)恋刂g的關(guān)系,我們可以定義一個稱為"相鄰?fù)恋?AdjcentPair)" 的feature type,它有一個"common Boundary Length"屬性紀(jì)錄共同邊界的長度,并以"adjacenTo"屬性來紀(jì)錄相鄰的土地,以GML編碼的案例如下:</p><p> <LandParcel fid="Lp20
113、34"></p><p> <area>2345</area></p><p> <gml:extentOf>...</extentOf></p><p> </LandParcel></p><p><b> ....</b></
114、p><p> <LandParcel fid="Lp2035"></p><p> <area>9812</area></p><p> <gml:extentOf>...</extentOf></p><p> </LandParcel><
115、/p><p><b> ....</b></p><p> <AdjacentPair fid="Ad1465"></p><p> <commonBoundaryLength>231</commonBoundaryLength></p><p> <ad
116、jacentTo xlink:type="simple" xlink:href="#Lp2034"/></p><p> <adjacentTo xlink:type="simple" xlink:href="#Lp2035"/></p><p> </Adjacent><
117、;/p><p> 對應(yīng)的application schema如下:</p><p> <element name="LandParcel" type="ex:LandParcelType" substitutionGroup="gml:_Feature"/></p><p> <elem
118、ent name="adjacentTo" type="ex:AdjacentToType" substitutionGroup="gml:featureMember"/></p><p> <element name="AdjacentPair" type="ex:AdjacentPairType"
119、 substitutionGroup="gml:_Feature"/></p><p> <complexType name="LandParcelType"></p><p> <complexContent></p><p> <extension base="gml:A
120、bstractFeatureType"></p><p> <sequence></p><p> <element name="area" type="integer"/></p><p> <element ref="gml:extentOf"/>
121、;</p><p> <!注意 adjacentTo 已經(jīng)移除 --></p><p> </sequence></p><p> </extension></p><p> </complexContent></p><p> </ComplexType
122、></p><p> <complexType name="AdjacentToType"></p><p> <complexContent></p><p> <Restriction base="gml:FeatureAssociationType"></p>
123、<p> <sequence></p><p> <element ref="ex:LandParcel"/></p><p> </sequence></p><p> </restriction></p><p> </complexConte
124、nt></p><p> </complexType></p><p> <complexType name="AdjacentPairType"></p><p> <complexContent></p><p> <extension base="gm
125、l:AbstractFeatureType"></p><p> <sequence></p><p> <element name="commonBoundaryLength" type="integer"/></p><p> <element ref="ex:
126、adjacentTo" minOccurs="2" maxOccurs="2"/></p><p> </Sequence></p><p> </extension></p><p> </complexContent></p><p> &
127、lt;/complexType></p><p> 四、建構(gòu)應(yīng)用領(lǐng)域的application schema的規(guī)則</p><p> 為以GML編碼來建構(gòu)某應(yīng)用領(lǐng)域的數(shù)據(jù)結(jié)構(gòu)(application schema),以下的規(guī)則必須遵循(限于篇幅相關(guān)范例請參GML 2.1.1規(guī)格書5.2章節(jié)內(nèi)容):</p><p> (一)定義新的feature類型<
128、/p><p> application schema的設(shè)計者可以創(chuàng)造自己的feature或feature collection的類型,但必須是GML類型 gml:AbstractFeatureType 或gml: Abstract Feature Collection Type的子類型。</p><p> ?。ǘ┒x新的幾何圖形類型(geometry type)</p>&l
129、t;p> 我們可以依需要創(chuàng)造自己的幾何圖形類型,但必須是GML類型gml:AbstractGeometryType 或gml:GeometryCollectionType的子類型。</p><p> ?。ㄈ┒x新的幾何圖形的屬性(geometry property)</p><p> 我們可以在上節(jié)自己所定義的新幾何圖形類型中,創(chuàng)造自己的幾何圖形屬性,但必須是gml:Geome
130、tryPropertyType的子類型。</p><p> ?。ㄋ模┬鎡arget namespace</p><p> 我們必須為我們的application schema宣告一個target namespace,在schema中所宣告的元素及其類型定義,均位于這個namespace中。Namespace主要用來避免元素名稱的沖突,在分布式的網(wǎng)絡(luò)環(huán)境中,不同的XML文件中可能使用了相
131、同名稱的元素,宣告適當(dāng)?shù)膎amespace可以解決元素名稱沖突的問題。特別注意的是namespace中的URI并不需要真正指到schema的文件,它只是一種機制,用來區(qū)分不同文件的元素名稱。</p><p> ?。ㄎ澹┮M(jìn)不同namespace的schema</p><p> 以GML編碼的文件,可以從多個不同的namespace引用不同來源的schema,以下圖為例:</p>
132、;<p> 圖4 .使用多個namespace來源的schema</p><p> 圖中schema-A及schema-B位于同一個namespace,所以schema-B使用<<include> >來引進(jìn)schema-A的內(nèi)容;schema-A與GML feature schema位于不同的namespace,所以schema-A使用<<import>
133、>來引進(jìn)GML feature的內(nèi)容。</p><p> ?。┦褂胹ubstitution group</p><p> 在全域元素(global element)中所定義的"substitution group",可以取代GML元素,并為整個GML application schema所使用。</p><p> (七)宣告額外的屬
134、性</p><p> GML提供了一些預(yù)先定義好的幾何圖形屬性(geometric property),包括location、centerLineOf、extentOf等等,我們也可以使用"substitution group"來給它們不同的命名。</p><p> (八)定義新的feature關(guān)聯(lián)類型</p><p> 我們可以創(chuàng)造自己的
135、feature關(guān)聯(lián)類型(feature association type),而這必須由gml:FeatureAssociationType延伸而來。</p><p> 五、應(yīng)用領(lǐng)域application schema 的范例</p><p> ?。ㄒ唬┓独唬号_北市</p><p> 說明:有一個城市模型(CityModel)的資料集(feature colle
136、ction),它有三個屬性,分別是幾何圖形名稱為"臺北市 、資料生產(chǎn)日期(dateCreated) 為"Feb 2000"、坐標(biāo)范圍(boundedBy)。</p><p> 本城市模型資料集包含兩個feature成員,第一個成員是"淡水河",為河流類型(RiverType),它有一個中心線 (cenLineOf) 的幾何圖形屬性。第二個成員是"南京東
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在word中繪制地理圖形的技巧
- 5082.中學(xué)地理圖形要素的組合與分解研究
- 中學(xué)地理圖形知識層次化傳授研究.pdf
- 基于新課程標(biāo)準(zhǔn)的中學(xué)地理圖形教學(xué)設(shè)計.pdf
- 5040.基于地理思維能力培養(yǎng)的中學(xué)地理圖形教學(xué)設(shè)計研究
- 地理圖形空間要素聯(lián)結(jié)關(guān)系的分類及其教學(xué)設(shè)計案例的分析.pdf
- 專題6 地理圖表的判讀
- 用好地理圖冊是上好地理課的關(guān)鍵
- 用好地理圖冊是上好地理課的關(guān)鍵
- 地理圖像在初中地理教學(xué)中的作用分析
- 基于XML的機械圖形標(biāo)記語言的研究與開發(fā).pdf
- 地理圖像解析能力培養(yǎng)的路徑研究.pdf
- 地理圖像在中學(xué)地理教學(xué)中應(yīng)用的研究.pdf
- 中學(xué)地理圖像遷移能力的提高策略研究.pdf
- 在世界地理教學(xué)中構(gòu)建腦中地理圖像系統(tǒng)的研究.pdf
- 學(xué)生地理圖表判讀能力培養(yǎng)研究
- 6467.高中地理圖像分類及圖像教學(xué)模式研究
- 初中地理圖像教學(xué)策略研究.pdf
- 33258.基于word繪圖工具的地理圖像繪制及應(yīng)用研究
- 16320.高中地理教學(xué)中地理圖像運用現(xiàn)狀研究
評論
0/150
提交評論