Microsoft SQL Server/地理空間資料/GML
地理標記語言(GML)是由開放地理空間聯盟(OGC)定義的 XML 語法,用於表達地理要素。GML 既充當地理系統的建模語言,也充當網際網路上地理事務的開放交換格式。請注意,GML 中的要素概念是一個非常通用的概念,不僅包括傳統的“向量”或離散物件,還包括覆蓋範圍(另請參見 GMLJP2)和感測器資料。整合所有形式的地理資訊的能力是 GML 實用性的關鍵。
OGC 是一個國際自願性共識標準組織,其成員維護著地理標記語言標準。OGC 與 ISO TC 211 標準組織協調,以保持 OGC 和 ISO 標準工作之間的一致性。GML 正在被採納為 ISO 標準(ISO 19136),預計將於 2007 年釋出為國際標準。
GML 是 GeoWeb 基礎設施的 XML 資料標準,使聯網裝置能夠訪問地理資訊,例如商家位置和交通狀況。
GML 也可以包含在美國國家資訊交換模型 1.0 版中。
最初的 GML 模型基於全球資訊網聯盟的資源描述框架 (RDF)。隨後,OGC 將 XML 模式引入 GML 的結構,以幫助連線各種現有的地理資料庫,這些資料庫的關係結構更容易由 XML 模式定義。由此產生的基於 XML 模式的 GML 保留了 RDF 的許多特性,包括將子元素作為父物件屬性(RDFS)的想法以及使用遠端屬性引用。
GML 包含一套豐富的基元,用於構建特定於應用程式的模式或應用程式語言。這些基元包括
- 要素
- 幾何
- 座標參考系統
- 時間
- 動態要素
- 覆蓋範圍(包括地理影像)
- 計量單位
- 地圖表示樣式規則
GML 概要是對 GML 的邏輯限制,可以透過文件、XML 模式或兩者來表達。這些概要旨在簡化 GML 的採用,促進標準的快速採用。以下由 GML 規範定義的概要已釋出或提議供公眾使用
- 用於具有點幾何資料但不需要完整 GML 語法的應用程式的點概要
- 支援向量要素請求和事務的GML 簡單要素概要,例如使用 WFS
- 用於 GMJP2(JPEG 2000 中的 GML)的 GML 概要
- 用於 RSS 的 GML 概要
請注意,概要與應用程式模式不同。概要是 GML 名稱空間的一部分,並定義了 GML 的受限子集。應用程式模式是使用 GML 定義的 XML 詞彙表,並且位於應用程式定義的目標名稱空間中。應用程式模式可以構建在特定的 GML 概要上,或者使用完整的 GML 模式集。
概要通常是為了支援 GML 派生語言(請參閱應用程式模式)而建立的,這些語言是為了支援特定應用領域(例如商業航空、航海測繪或資源開發)而建立的。
GML 規範(自 GML v3. 起)包含一對 XSLT 指令碼(通常稱為“子集工具”),可用於構建 GML 概要。
GML 簡單要素概要比上述點概要更完整,支援各種向量要素物件,包括以下內容
- 簡化的幾何模型,允許 0d、1d 和 2d 線性幾何物件(均基於線性插值)以及相應的聚合幾何(gml:MultiPoint、gml:MultiCurve 等)。
- 簡化的要素模型,只能有一層深度(在一般的 GML 模型中,不允許任意巢狀要素和要素屬性)。
- 所有非幾何屬性必須是 XML 模式簡單型別,即不能包含巢狀元素。
- 遠端屬性值引用(xlink:href),就像在主 GML 規範中一樣。
由於該概要旨在提供一個簡單的切入點,因此它不支援以下內容
- 覆蓋範圍
- 拓撲
- 觀測
- 值物件(用於即時感測器資料)
- 也不支援動態要素。
儘管如此,它仍然支援各種各樣的現實世界問題。
此外,GML 規範提供了一個子集工具,用於生成包含使用者指定元件列表的 GML 概要。該工具包含一對 XSLT 指令碼。這些指令碼生成一個概要,開發人員可以手動擴充套件或透過模式限制對其進行增強。請注意,作為完整 GML 規範的限制,概要可以生成的應用程式模式本身必須是有效的 GML 應用程式模式。
子集工具還可以出於許多其他原因生成概要。列出要包含在生成的概要模式中的元素和屬性,並執行該工具,結果將生成一個單個概要模式檔案,其中僅包含使用者指定的專案以及指定專案所依賴的所有元素、屬性和型別宣告。以這種方式建立的一些概要模式支援其他規範,包括 IHO S-57 和 JPEG 2000 中的 GML。
為了使用 GML 公開應用程式的地理資料,社群或組織會建立一個特定於感興趣的應用程式領域的 XML 模式(應用程式模式)。此模式描述了社群感興趣的資料物件型別以及社群應用程式必須公開的型別。例如,旅遊應用程式可以在其應用程式模式中定義物件型別,包括紀念碑、名勝古蹟、博物館、道路出口和觀景點。這些物件型別依次引用 GML 標準中定義的基元物件型別。
正在彙編一份已知的公開可用的 GML 應用程式模式列表。
其他一些地理標記語言使用模式結構,但 GML 基於現有的 XML 模式模型,而不是建立新的模式語言。
請注意,Google 推廣的 KML(Keyhole 標記語言)與 GML 相互補充。GML 是一種用於編碼地理內容的語言,透過描述各種應用程式物件及其屬性(例如橋樑、道路、浮標、車輛等),而 KML 是一種用於視覺化地理資訊的語言。KML 可用於承載 GML 內容,並且可以將 GML“樣式化”為 KML 以用於演示。
GML 將地理物件的GML 幾何圖形或幾何特徵編碼為 GML 文件中的元素。這些物件的幾何圖形可以描述例如道路、河流和橋樑。
GML 1.0 和 GML 2.0 中的關鍵 GML 幾何物件型別如下:
- 點
- 線串
- 多邊形
請注意,此幾何模型與 KML 中的幾何模型相同。
GML 將要素與幾何物件區分開來。要素是一個表示物理實體的應用程式物件,例如建築物、河流或人員。要素可能有也可能沒有幾何方面。幾何物件定義位置或區域而不是物理實體,因此與要素不同。GML 中要素和幾何物件之間的區別與其他地理資訊系統 (GIS) 中使用的模型形成對比,這些模型沒有做出這種區分。也就是說,儘管某些其他 GIS 將要素和幾何物件可互換地定義為地圖上的專案,但 GML 將它們作為單獨的實體型別進行維護。
在 GML 中,要素可以具有各種幾何屬性,這些屬性描述要素的幾何方面或特徵(例如要素的點或範圍屬性)。GML 還提供了透過在共享幾何屬性上使用遠端屬性引用來使要素相互共享幾何屬性的功能。遠端屬性是 GML 從 RDF 借鑑的一般功能。GML 幾何屬性上的xlink:href屬性表示該屬性的值是連結中引用的資源。
例如,特定 GML 應用程式模式中的建築物要素可能具有由基本 GML 幾何物件型別點給出的位置。但是,建築物與定義其位置的點是獨立的實體。此外,要素可以有多個幾何屬性(或根本沒有),例如範圍和位置。
GML 中的座標表示幾何物件的座標。座標可以透過以下任何 GML 元素指定:
- <gml:coordinates>
- <gml:pos>
- <gml:posList>
GML 有多種表示座標的方式。例如,可以使用<gml:coordinates>元素,如下所示:
<gml:Point gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:coordinates>45.67, 88.56</gml:coordinates> </gml:Point>
請注意,當以上述方式表達時,各個座標(例如88.56)無法透過 XML 文件物件模型單獨訪問,因為<gml:coordinates>元素的內容只是一個字串。
為了使 GML 座標能夠透過 XML DOM 訪問,GML 3.0 引入了<gml:pos>和<gml:posList>元素。(請注意,儘管 GML 版本 1 和 2 具有<gml:coord>元素,但它被視為缺陷,未使用。)使用<gml:pos>元素代替<gml:coordinates>元素,同一個點可以表示如下:
<gml:Point gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:pos dimension="2">45.67 88.56</gml:pos> </gml:Point>
<gml:LineString>幾何物件的座標可以用<gml:coordinates>元素表示:
<gml:LineString gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:coordinates>45.67, 88.56 55.56,89.44</gml:coordinates> </gml:LineString >
<gml:posList>元素用於表示座標元組列表,如線性幾何圖形所需的那樣:
<gml:LineString gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:posList dimension="2">45.67 88.56 55.56 89.44</gml:posList> </gml:LineString >
對於僅支援 GML 1 或 GML 2(即僅支援<gml:coordinates>元素)的 GML 資料伺服器 (WFS) 和轉換工具,<gml:coordinates>沒有替代方案。但是,對於 GML 3 及更高版本的文件,<gml:pos>和<gml:posList>優於<gml:coordinates>。
有關srsName屬性的更多資訊,請參見下面的座標參考系統。
座標參考系統 (CRS) 確定 GML 文件中每個幾何元素的幾何圖形。
與 KML 或 GeoRSS 不同,GML 在未提供座標系時不會預設使用任何座標系。相反,必須使用座標參考系統 (CRS) 或空間參考系統 (SRS) 明確指定所需的座標系。其座標相對於此類 CRS 解釋的元素包括:
- <gml:coordinates>
- <gml:pos>
- <gml:posList>
附加到幾何物件的srsName屬性指定物件的 CRS,如以下示例所示:
<gml:Point gml:id="p1" srsName="#srs36">
<gml:coordinates>100,200</gml:coordinates>
</gml:Point>
srsName屬性的值是統一資源識別符號 (URI)。它指的是用於解釋幾何圖形中座標的座標參考系統的定義。CRS 定義可能位於文件(即平面檔案)或線上 Web 服務中。
srsName URI 也可以是統一資源名稱 (URN),用於引用常見的 CRS 定義。OGC 開發了一種 URN 結構和一組特定的 URN,用於編碼一些常見的座標參考系統。URN 解析器將這些 URN 解析為 GML CRS 定義。
多邊形、點和線串物件在 GML 1.0 和 2.0 中編碼如下:
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>0,0 100,0 100,100 0,100 0,0</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
<gml:Point>
<gml:coordinates>100,200</gml:coordinates>
</gml:Point>
<gml:LineString>
<gml:coordinates>100,200 150,300</gml:coordinates>
</gml:LineString>
請注意,線串物件以及線性環物件假定指定點之間進行線性插值。
以下 GML 示例說明了要素和幾何物件之間的區別。建築物要素具有多個幾何物件,其中一個(識別符號為p21的點)與測量紀念碑要素共享。
<abc:Building gml:id="SearsTower">
<gml:name>Sears Tower</gml:name>
<abc:height>52</abc:height>
<abc:position>
<gml:Point>
<gml:coordinates>100,200</gml:coordinates>
</gml:Point>
</abc:position>
<app:extent>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:coordinates>100,200</gml:coordinates>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</app:extent>
</abc:Building>
<abc:Building gml:id="SearsTower">
<abc:position xlink:type="Simple" xlink:href="#p21"/>
</abc:Building>
<abc:SurveyMonument gml:id="g234">
<abc:position>
<gml:Point gml:id="p21">
<gml:coordinates>100,200</gml:coordinates>
</gml:Point>
</abc:position>
</abc:SurveyMonument>
請注意,引用的是共享的點,而不是測量紀念碑,因為任何要素物件都可以有多個幾何物件屬性。
GML 點剖面包含單個 GML 幾何圖形,即<gml:Point>物件型別。任何 XML 模式都可以透過匯入它並引用主題<gml:Point>例項來使用點剖面。
<PhotoCollection xmlns="http://www.myphotos.org" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.myphotos.org MyGoodPhotos.xsd"> <items> <Item> <name>Lynn Valley</name> <description>A shot of the falls from the suspension bridge</description> <where>North Vancouver</where> <position> <gml:Point srsDimension="2" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:pos>49.40 -123.26</gml:pos> </gml:Point> </position> </Item> </items> </PhotoCollection>
請注意,在使用點剖面時,唯一的幾何物件是“<gml:Point>”物件。其餘地理位置由照片集合模式定義。