结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项
2013-12-13 18:14
507 查看
首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“longitude latitude”。
另外就是从谷歌地图里得到的多边形(polygon)的顶点定义的顺序和Sql Server里Geography类型中的顶点定义顺序是相反的,即一个是顺时针定义,一个是逆时针定义(至于哪个是顺时针,哪个是逆时针,没有细究),所以把这些顶点存到数据库的时候,需要先反转一下,否则SQL Server会报异常。
最后判断一个点是否在多边形内的方法很简单,SQL Server里只需要以下代码:
而在Entity Frameowkr里,将数据库的Geography字段定义为 System.Data.Entity.Spatial.DbGeography类型(EF 6),然后利用这个类型的Intersects方法即可。
另外就是从谷歌地图里得到的多边形(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方法即可。
相关文章推荐
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
- sql server 2008导出数据注意事项
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
- SQL Server 2008空间数据类型
- SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
- SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
- SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
- SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
- sql server 2008 空间数据类型的插入
- SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
- sql server 2008导出数据注意事项
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
- SQL Servr 2008空间数据应用系列三:SQL Server 2008空间数据类型 推荐
- SQL Servr 2008空间数据应用系列三:SQL Server 2008空间数据类型
- 找不到类型或命名空间,是否缺少引用——在现有项目中重命名类库名,类名注意事项
- 例题2.2 计算数据类型所占内存空间大小
- SQL SERVER 2008 复制(发布、订阅)注意事项
- 也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强 (续)
- SQL Server 2008空间数据应用系列一:空间信息基础