• 结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项


    首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“longitude latitude”。

    另外就是从谷歌地图里得到的多边形(polygon)的顶点定义的顺序和Sql Server里Geography类型中的顶点定义顺序是相反的,即一个是顺时针定义,一个是逆时针定义(至于哪个是顺时针,哪个是逆时针,没有细究),所以把这些顶点存到数据库的时候,需要先反转一下,否则SQL Server会报异常。

    最后判断一个点是否在多边形内的方法很简单,SQL Server里只需要以下代码:

    DECLARE @g geography;
    DECLARE @h geography;
    SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
    SET @h = geography::Point(47.653, -122.358, 4326)
    
    SELECT @g.STIntersects(@h)

    而在Entity Frameowkr里,将数据库的Geography字段定义为 System.Data.Entity.Spatial.DbGeography类型(EF 6),然后利用这个类型的Intersects方法即可。

  • 相关阅读:
    jsonp跨域请求
    jQuery之异步Ajax请求使用
    table表格cellspacing与cellpadding属性
    常用正则匹配
    插入数据显示 Duplicate entry '4913' for key 'user_id'
    事件驱动模型 IO多路复用 阻塞IO与非阻塞IO select epool
    python 协程
    python 进程 线程
    python 并发socketserver模块
    python 网络 socket
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/3473667.html
Copyright © 2020-2023  润新知