繁体   English   中英

SQL几何查找形状外的点

[英]SQL geometry find points outside shape

在Microsoft SQL Server中,我有一个表MyData,该表的一列几何类型为latlng。 我试图弄清楚如何编写一个查询,以获取所有不在美国的点,对于从阿拉斯加延伸到佛罗里达并包括加拿大的矩形框之外的所有内容,我什至都可以。 一旦我知道该怎么做,便知道可以随时绘制一个更复杂的多边形,这就是我需要的国家。 谢谢!

这对我有用:

declare @us geography = geography::STGeomFromText(«WKT for US», 4326)
set @us = @us.MakeValid()

declare @cities table (name varchar(100), geo geography)
insert into @cities (name, geo) values 
    ('London', geography::Point(51.5074, -0.1278,  4326)),
    ('Boston', geography::Point(42.3601, -71.0589, 4326));

select name, geo.STIntersects(@us)
from @cities as c

我通过一些复杂的手段获得了美国边界的WKT。 也就是说,我去了人口普查局并下载了shapefile,然后使用n在线工具将其转换为WKT。 如果您有更好的WKT来源,请使用它。

解决方案的关键是在STIntersects()调用中。 该方法返回关于两个地理空间实例是否相交的布尔值。 在这种情况下,因为一个是点,另一个是多多边形,它将告诉您该点是否在边界内。 您也可以使用STDisjoint()来告诉相反的内容(即,如果该点不在边界内,则该方法返回true)。 好打猎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM