如何从DbGeography MULTIPOINT获取边界框?

时间:2013-06-07 13:05:26

标签: sql-server entity-framework spatial

很抱歉,如果问题与SQL Server本身没有100%相关。但是我觉得它与主题足够接近,可以在这里发布。

我在ASP.NET Web API项目中使用Entity Framework。在创建我的POCO时,我从浏览器客户端(Google Maps API)接收LatLngBounds。

我从这些传入的坐标创建一个DbGeography(MULTIPOINT)实例,代表我的两个点来重新创建一个矩形。

现在我需要这个MULTIPOINT构造的边界框(多边形)。经过一些研究后,我认为SqlGeometry程序集中的STEnvelope函数可能对此有所帮助,因为我找不到使用DbGeography类型执行此操作的方法。在我尝试保存对象之前,代码中的一切看起来都很好。

请参阅this gist以获取来自EF的错误消息的示例代码。有关从EF生成的SQL,请参阅this gist

以这种方式尝试是否有意义,或者我错过了一些重要的东西,并且有一种更简单的方法?

2 个答案:

答案 0 :(得分:0)

var AWS = require('aws-sdk');
var sns = new AWS.SNS({apiVersion: '2010-03-31'});

exports.handler = (event, context, callback) => {

    console.log(JSON.stringify(event))

var payload = {
"default": "The message string.",
"GCM":"{"+
   "\"notification\":{"+
       "\"body\":\"PUT NOTIFICATION BODY HERE\","+
       "\"title\":\"PUT NOTIFICATION TITLE HERE\""+
   "}"+
"}"
};

  payload = JSON.stringify(payload);

    var params = {
      TargetArn: 'PUT THE ENDPOINT ARN HERE',
      Subject: 'foo2',
      MessageStructure: 'json',
      Message: payload
    }
    sns.publish(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });

};

答案 1 :(得分:-1)

让它发挥作用。但仍然不确定这是否是没有并发症的方法。但至少存储对象的方法是改变

poi.Shape = DbGeography.FromGml(envelop.AsGml().Value);

poi.Shape = DbGeography.FromText(envelop.ToString());

让问题保持开放,也许其他人可以提供更好的解决方案。