必应 SDS 地理围栏架构

Posted

技术标签:

【中文标题】必应 SDS 地理围栏架构【英文标题】:Bing SDS Geofence Schema 【发布时间】:2015-04-03 04:30:14 【问题描述】:

我已经使用 Bing SDS 创建并发布了一个数据源,但它是一个奇点,我想知道如何创建一个定义区域的数据源?

基本上我需要在某个点周围设置地理围栏。下面是我的架构目前的样子,我需要添加哪些参数来定义一个区域?

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <MainRoot>
  <xs:schema id="FourthCoffeeShops_ds" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="FourthCoffeeShops_ds" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="FourthCoffeeShops">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="EntityID" type="xs:string" />
                <xs:element name="AddressLine" type="xs:string" minOccurs="0" />
                <xs:element name="Locality" type="xs:string" minOccurs="0" />
                <xs:element name="AdminDistrict" type="xs:string" minOccurs="0" />
                <xs:element name="PostalCode" type="xs:string" minOccurs="0" />
                <xs:element name="CountryRegion" type="xs:string" minOccurs="0" />
                <xs:element name="Phone" type="xs:string" minOccurs="0" />
                <xs:element name="Manager" type="xs:string" minOccurs="0" />
                <xs:element name="Latitude" type="xs:double" minOccurs="0" />
                <xs:element name="Longitude" type="xs:double" minOccurs="0" />
                <xs:element name="Confidence" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
      <xs:unique name="Constraint1" msdata:PrimaryKey="true">
        <xs:selector xpath=".//FourthCoffeeShops" />
        <xs:field xpath="EntityID" />
      </xs:unique>
    </xs:element>
  </xs:schema>
<FourthCoffeeShops>
  <EntityID>1000</EntityID>
  <AddressLine>1 Microsoft Way</AddressLine>
  <Locality>Redmond</Locality>
  <AdminDistrict>WA</AdminDistrict>
  <PostalCode>98052</PostalCode>
  <Phone>303-555-0188</Phone>
  <Manager>Alan Steiner</Manager>
  <Latitude>47.640049</Latitude>
  <Longitude>-122.129797</Longitude>
  <Confidence>High</Confidence>
</FourthCoffeeShops>
<FourthCoffeeShops>
  <EntityID>1001</EntityID>
  <AddressLine>1 Microsoft Way</AddressLine>
  <Locality>Redmond</Locality>
  <AdminDistrict>WA</AdminDistrict>
  <PostalCode>98052</PostalCode>
  <CountryRegion>United States</CountryRegion>
  <Phone>425-555-0111</Phone>
  <Manager>Phil Spencer</Manager>
  <Latitude>47.639767</Latitude>
  <Longitude>-122.129959</Longitude>
  <Confidence>Medium</Confidence>
</FourthCoffeeShops>
</MainRoot>

为了明确区域,我的意思是某个位置或包含该位置的多边形周围的某个半径。 谢谢!

【问题讨论】:

【参考方案1】:

您可以创建类型为“Edm.Geography”或“xs:anyType”的列。此属性类型采用 Well Known Text,这是一种将空间形状表示为文本的标准方式。这允许您存储常见的空间形状,例如 Point、LineString、Polygon、Multipoint、MultiLineString、MultiPolygon、GeometryCollection。以下是有关此的文档:

https://msdn.microsoft.com/en-us/library/gg585138.aspx

https://msdn.microsoft.com/en-us/library/dn436149.aspx

要表示 GeoFence,您需要创建一个多边形来表示您想要的区域。如果要表示一个圆,则需要计算近似圆的点:http://pietschsoft.com/post/2008/02/09/Virtual-Earth-Draw-a-Circle-Radius-Around-a-LatLong-Point

这是一篇关于将存储在 SDS 中的地理围栏与被跟踪设备一起使用的博客文章:http://blogs.msdn.com/b/bingdevcenter/archive/2014/04/03/geo-fencing-with-bing-spatial-data-services-and-azure-mobile-services.aspx

【讨论】:

以上是关于必应 SDS 地理围栏架构的主要内容,如果未能解决你的问题,请参考以下文章

在 Google 的地理围栏教程中没有看到地理围栏转换

实施地理围栏 - 在应用程序未运行时接收地理围栏转换事件

如何创建一个嵌入多边形以进行地理围栏的圆形地理围栏区域?

地理围栏:如何识别对象(特征),使用 Oracle Spatial 重叠地理围栏边界?

使用半径内的设备添加地理围栏时从未收到地理围栏停留事件

背景中的地理围栏