【IT168 技術(shù)文檔】在此練習中,您將創(chuàng)建返回以地理標記語言 (GML) 表示的空間數(shù)據(jù)的存儲過程。GML 是一個由開放地理空間聯(lián)盟 (OGC) 定義的標準,用于在應用程序和系統(tǒng)之間交換地理數(shù)據(jù)。SQL Server 中的空間數(shù)據(jù)類型支持 GML 作為空間數(shù)據(jù)類型實例的數(shù)據(jù)源,也支持 GML 作為表示空間數(shù)據(jù)值的格式。借助對 GML 的這種支持,可以輕松地在 SQL Server 中的空間數(shù)據(jù)和其他地理空間系統(tǒng)(如 Microsoft Virtual Earth)之間進行集成。
注意:您可以從 C:\SQLHOLS\Spatial and VE\Solution\StoredProcs.sql 復制此練習中使用的代碼
創(chuàng)建包含空間數(shù)據(jù)的數(shù)據(jù)庫
1. 從開始菜單中的 Microsoft SQL Server 2008 程序組中啟動 SQL Server Management Studio。收到提示時,使用 Windows 身份驗證連接到數(shù)據(jù)庫引擎的 (local) 實例。
2. 打開 C:\SQLHOLs\Spatial and VE\Starter 文件夾中的 Create DB.sql 查詢文件。
3. 檢查此腳本中的 Transact-SQL 代碼。請注意,此代碼執(zhí)行下列任務:
? 刪除名為 StoreData的數(shù)據(jù)庫并重新創(chuàng)建它。
? 創(chuàng)建一個名為 Stores 表,其中包含名為 StoreLocation 的 geography列。
? 在 StoreLocation 列上創(chuàng)建一個空間索引。
? 在 Stores 表中插入大量記錄。每個記錄都包含一個由緯度和經(jīng)度坐標定義的表示地理點的 StoreLocation 值。
4. 單擊執(zhí)行運行此腳本。如果尚不存在 StoreData 數(shù)據(jù)庫,請忽略任何有關無法刪除該數(shù)據(jù)庫的錯誤。
5. 保持 SQL Server Management Studio 打開,下一個過程還要使用此程序。
創(chuàng)建檢索所有商店的存儲過程
1. 單擊新建查詢創(chuàng)建新查詢。如果收到提示,請使用 Windows 身份驗證連接到 (local) 數(shù)據(jù)庫引擎實例。
2. 在查詢編輯器中鍵入以下 Transact-SQL 代碼。
1. 在您在上一過程中添加的 EXECUTE 語句下,添加以下 Transact-SQL 代碼。
注意:此代碼創(chuàng)建一個 geography 實例,該實例中包含一個基于傳遞到存儲過程的緯度和經(jīng)度參數(shù)的點。然后此代碼使用 geography 數(shù)據(jù)類型的 STBuffer 方法創(chuàng)建表示搜索點周圍方圓 100km 范圍內(nèi)的多邊形 geography 實例。最后,此代碼返回定義搜索區(qū)域的 geography 實例的 GML 表示形式以及搜索區(qū)域中的所有商店,通過使用 geography 數(shù)據(jù)類型的 STIntersects 方法可以找到這些商店。
2. 選擇剛剛添加的 CREATE PROCEDURE 語句,然后單擊執(zhí)行運行所選的代碼。
3. 在 CREATE PROCEDURE 語句下,添加下面的代碼以測試存儲過程。
4. 選擇剛剛添加的 EXECUTE 語句,然后單擊執(zhí)行運行所選的代碼。
5. 在結(jié)果窗格中,單擊第一個 XML 值,以在 XML 查看器中查看搜索區(qū)域的 GML 表示形式。
6. 關閉 XML 查看器并返回到查詢編輯器。
7. 將查詢腳本文件另存為 C:\SQLHOLs\Spatial and VE\Starter\StoredProcs.sql,然后關閉 SQL Server Management Studio。
注意:此代碼使用地理數(shù)據(jù)類型的 AsGml 方法返回 GML 格式的空間數(shù)據(jù)值。
3. 單擊執(zhí)行運行此腳本。
4. 在 CREATE PROCEDURE 語句下,添加下面的代碼以測試存儲過程。
5. 選擇剛剛添加的 EXECUTE 語句,然后單擊執(zhí)行運行所選的代碼。
6. 在結(jié)果窗格中,單擊任意 StoreGML 值在 XML 查看器中查看空間數(shù)據(jù)的 GML 表示形式。
7. 關閉 XML 查看器并返回到查詢編輯器。