久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL Server 2008空間數據應用中GeoRSS的用法

158次閱讀
沒有評論

共計 5332 個字符,預計需要花費 14 分鐘才能閱讀完成。

SQL Server 2008 空間數據應用中 GeoRSS 的用法,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

GeoRSS 是一種描述和查明互聯網內容所在物理位置的方法。通過使用 GeoRSS,搜索 Web 站點或者與地理位置有關的項目就成為可能。GeoRSS 利用地理標識語言 (GML),即利用可擴展標記語言 (Extensible Markup Language, XML) 存儲和傳輸地理數據的方法。原始的 GML 模型以由 World Wide Web 聯盟 (W3C) 所開發的資源描述框架 (RDF) 為基礎。GML 保持著 RDF 的許多特性,包括智能代理和一個用于描述和查詢數據的標準語法。GeoRSS 是在 RSS 訂閱源中包含地理空間數據時所用的一個標準,它定義了一種名為 GeoRSS GML 的特定格式,用來在訂閱源中包含 GML 格式的數據??蛻舳藨贸绦蚩梢杂嗛?GeoRSS 訂閱源,訂閱方式與訂閱常規 RSS 訂閱源相同??梢暂p松地將 GeoRSS 格式的數據導入 Microsoft Bing Maps、Google Maps 中。
 
一、GeoRSS 聚合格式
相信很多朋友多玩過 RSS 訂閱的,其聚合數據的格式以 XML 方式承載,主要包括頭信息和體信息,體信息可能是一項或多項的數據組成。以下為 RSS 的聚合格式:
?xml version=“1.0”en coding=“gb2312”?
rss version=“2.0”
  channel
  title 網站或欄目的名稱 /title
  link 網站或欄目的 URL 地址 /link
  description 網站或欄目的簡要介紹 /description
  item
  title 新聞標題 /title
  link 新聞的鏈接地址 /link
  description 新聞簡要介紹 /description
  pubDate 新聞發布時間 /pubDate
  author 新聞作者名稱 /author
  /item
  item
  hellip; hellip;
  /item
  /channel
/rss
 
而 GeoRSS 的 XML 數據格式和 RSS 幾乎相同,只是在 RSS 的基礎上使用 GML 擴展了對于地理空間數據的描述信息,如下 GeoRSS 數據。
feed
  xmlns=
  xmlns:georss=
  xmlns:gml=
 
  entry
  id urn:uuid:7e8ee974-9181-4eae-ad65-55d29175d942 /id
  link href=
  title Cedarburg Trip /title
  summary We went to visit downtown Cedarburg before the
  conference. Had some great sandwiches at Joe s. If you
  haven t been to Cedarburg, Wisconsin, then you haven t
  really experienced the MidWest… /summary
  content type= html src=
  /entry
  entry
  id urn:uuid:53664db3-4598-45d4-a727-022c6203322e /id
  link rel= related href=
  title Downtown Cedarburg, Wis. /title
  summary Went to visit downtown Cedarburg… /summary
  georss:where
  gml:Point
  gml:pos 43.296700 -87.98750 /gml:pos
  /gml:Point
  /georss:where
  /entry
  entry
  id urn:uuid:2528d1b4-b5a9-415c-be69-f83974e3e6af /id
  link rel= related href=
  title Convention Center /title
  georss:where
  gml:LineString
  gml:posList 43.296700 -87.987500 43.3 -88 -44 -89 /gml:posList
  /gml:LineString
  /georss:where
  /entry
/feed

二、GeoRSS 空間編碼
通常有三種 GeoRSS 編碼,既簡單編碼、GML 編碼和 W3C 編碼。詳細請查閱:。
 
簡單編碼通常用于定義點、線、多邊形等規則的空間數據,GML 則通常適用于定義不規則的空間數據,如地市區域。
 
三、定義 GeoRSS 數據
定義 GeoRSS 數據其實主要就是在玩 GeoRSS 空間編碼,知道如何定義點、線、多邊形以及不規則的空間圖形。如下 GeoRSS 定義了一個點(重慶)坐標。
?xml version= 1.0 encoding= utf-8 ?
feed xmlns=
  xmlns:georss=
  title 重慶 /title
  subtitle 重慶坐標 /subtitle
  link href=
  updated 2011-3-25 23:34:26 /updated
  author
  name Beniao /name
  email beniao@live.cn /email
  /author
  id urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 /id
  entry
  title ChongQing /title
  link href=
  id urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a /id
  updated 2011-3-25 23:35:00 /updated
  summary summary
  georss:point 29.5076372217973 106.489384971208 /georss:point
  /entry
/feed
 
同樣的定義一條空間線段,只是使用的 GeoRSS 編碼不同,如下定義了【成都 – 重慶】的空間線段示例。
georss:line 30.6666587469201 104.062021177233 29.5076372217973 106.489384971208 /georss:line
 
四、創建 GeoRSS 聚合存儲過程
創建 GeoRSS 聚合存儲過程的作用就是將空間數據格式化為 GeoRSS 的數據格式,存儲過程中實現查詢空間數據,轉換空間數據為 GML 后并構造為 GeoRSS 的數據輸出?!禨QL Server 2008 空間數據應用系列九:使用空間工具 (Spatial Tools) 導入 ESRI 格式地圖數據》一文中實現了將 shp 數據導入到 SQL Server 2008 中,本篇以此數據為例創建存儲過程發布 GeoRSS。

 
USE [BingMapsDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CQGeoRSSFeeder]
AS
BEGIN

SET NOCOUNT ON;

— 定義 XML 類型變量用于存儲 GeoRSS 內容
DECLARE @GeoRSS xml;

WITH XMLNAMESPACES (
  http://www.opengis.net/gml AS gml,
  http://www.georss.org/georss AS georss
)
SELECT @GeoRSS =
  (SELECT
  [NAME] AS title,
  [NAME] AS description,
  http://www.beginningspatial.com/ + CAST([ID] AS varchar(8)) AS link,
  geom.AsGml() AS [georss:where]
  FROM
  CQ_Region
  FOR XML PATH(item), ROOT(channel)
)

/**
 * 使用 XQuery 格式化 XML 結果
 **/
SELECT @GeoRSS.query(
rss version= 2.0
  xmlns:georss=
  xmlns:gml=
channel
  title SQL Server 2008 GeoRSS /title
  description GeoRSS 數據描述 /description
  link http://www.beginningspatial.com /link
  {
  for $e in channel/item
  return
  item
  title {$e/title/text() } /title
  description {$e/description/text() } /description
  link {$e/link/text() } /link
  pubDate   {$e/pubDate/text() } /pubDate
  georss:where
  {
  for $child in $e/georss:where/*
  return
  if (fn:local-name($child) = Point ) then  gml:Point {$child/*} /gml:Point
  else  if (fn:local-name($child) = LineString ) then  gml:LineString {$child/*} /gml:LineString
  else  if (fn:local-name($child) = Polygon ) then  gml:Polygon {$child/*} /gml:Polygon
  else  if (fn:local-name($child) = MultiPoint ) then  gml:MultiPoint {$child/*} /gml:MultiPoint
  else  if (fn:local-name($child) = MultiCurve ) then  gml:MultiCurve {$child/*} /gml:MultiCurve
  else  if (fn:local-name($child) = MultiSurface ) then  gml:MultiSurface {$child/*} /gml:MultiSurface
  else  if (fn:local-name($child) = MultiGeometry ) then  gml:MultiGeometry {$child/*} /gml:MultiGeometry
  else  ()
  }
  /georss:where
  /item
  }
/channel
/rss
) AS GeoRSSFeed;
end
 
注:執行該存儲過程后的就可以將表中所有的空間數據建立 GeoRSS 輸出,輸出內容比較大,這里就不貼 XML 結果了,隨本文末的示例代碼一起提供給大家。
 
五、.NET 發布 GeoRSS 訂閱
.NET 服務端可以通過 ASPX、ASHX 等方式來發布 GeoRSS 訂閱服務,這一步其實非常簡單,就是直接調用上面的存儲過程,見中的空間數據以 GeoRSS 的數據格式輸出到客戶端呈現即可。以下為詳細的代碼實現:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;

namespace GeoRSSService
{
  /// summary
  /// 發布 SQL Server 2008 中的空間數據為 GeoRSS。
  /// /summary
  public class GeoRSSHandler : IHttpHandler
  {
  public void ProcessRequest(HttpContext context)
  {
  context.Response.ContentType = text/xml
  context.Response.Charset = iso-8859-1
  context.Response.CacheControl = no-cache
  context.Response.Expires = 0;

  SqlConnection myConn = new SqlConnection(
  @ server=.;database=BingMapsDB;uid=sa;pwd=beniao;
  myConn.Open();

  string myQuery = exec dbo.CQGeoRSSFeeder
  SqlCommand myCMD = new SqlCommand(myQuery, myConn);
  SqlDataReader myReader = myCMD.ExecuteReader();

  while (myReader.Read())
  {
  // 輸出 GeoRSS 到客戶端
  context.Response.Write(myReader[ GeoRSSFeed].ToString());
  }

  myReader.Close();
  myConn.Close();
  }

  public bool IsReusable
  {
  get
  {
  return false;
  }
  }
  }
}

看完上述內容,你們掌握 SQL Server 2008 空間數據應用中 GeoRSS 的用法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計5332字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 九龙城区| 礼泉县| 越西县| 林甸县| 南阳市| 图木舒克市| 安阳市| 古蔺县| 合江县| 东山县| 龙泉市| 故城县| 亚东县| 漯河市| 浮山县| 瑞丽市| 阿鲁科尔沁旗| 米脂县| 浙江省| 额敏县| 成武县| 长武县| 广平县| 温州市| 唐河县| 威海市| 阳西县| 布尔津县| 彭山县| 普陀区| 舞阳县| 浦江县| 驻马店市| 石屏县| 丁青县| 新野县| 鞍山市| 额敏县| 临沧市| 沂南县| 探索|