SQL Server 2008 Spatial: find a point in polygon(SQL Server 2008 空间:在多边形中找到一个点)
问题描述
我使用的是 SQL Server 2008 空间数据类型.我有一个表,其中包含所有状态(作为多边形)作为数据类型 GEOMETRY.现在我想检查一个点的坐标(纬度、经度)作为数据类型 GEOGRAPHY 是否在该州内.
I am using SQL Server 2008 spatial data types. I have a table with all States (as polygons) as data type GEOMETRY. Now I want to check if a point's coordinates (latitudes, longitudes) as data type GEOGRAPHY, is inside that State or not.
我找不到任何使用新空间数据类型的示例.目前,我有一个多年前实施的解决方法,但它有一些缺点.
I could not find any example using the new spatial data types. Currently, I have a workaround which was implemented many years ago, but it has some drawbacks.
我有 SQL Server 2008 和 2012.如果新版本有一些增强,我也可以开始使用它.
I've both SQL Server 2008 and 2012. If the new version has some enhancements, I can start working in it too.
谢谢.
更新 1:
为了更清晰,我添加了一个代码示例.
I am adding a code sample for a bit more clarity.
declare @s geometry --GeomCol is of this type too.
declare @z geography --GeogCol is of this type too.
select @s = GeomCol
from AllStates
where STATE_ABBR = 'NY'
select @z = GeogCol
from AllZipCodes
where ZipCode = 10101
推荐答案
我认为地理方法 STIntersects() 可以满足您的需求:
I think the geography method STIntersects() will do what you want:
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)
这篇关于SQL Server 2008 空间:在多边形中找到一个点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SQL Server 2008 空间:在多边形中找到一个点
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- SQL 临时表问题 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01