我有一组lat / long对,用于指定属性的坐标。这样的一个例子就是:
( - 97.7157864909875 30.406523562241,-97.7165355983733 30.4068866164923,-97.716787930159 30.4064954568619,-97.7168253595963 30.4065335493939,-97.7168568837126 30.4065754656014,-97.7168819885038 30.4066205220471,-97.716901410079 30.4066619534041,-97.7169158736828 30.4066896672646,-97.7169327718411 30.4067163205123,-97.716952004751 30.4067417571518,-97.7169734604111 30.4067658281043,-97.7176225812739 30.4057595267431,-97.7168902352123 30.4054046115321,-97.7164489526149 30.4060840883432,-97.7163106372336 30.4061380633337,-97.7158545237879 30.4059170368804,-97.7158294889129 30.4060371739058,-97.7158101406138 30.4061580975546,-97.7157965112558 30.4062796056817,-97.7157886236446 30.4064014951642,-97.7157864909875 30.406523562241)
假设我在表中可能有30K左右。
然后我有一个纬度/经度对,我需要知道哪个多边形(可能多于一个)这一点落在了内部。
我对空间类型的经验非常有限,我正在努力确保我可以正确定义索引,以获得此查询所需的速度。
非常感谢您提供的帮助我朝着正确方向前进的任何帮助。
我相信我可以这样做:
DECLARE @CurrentPosition geography
declare @Line geography
DECLARE @result geography
SET @CurrentPosition = geography::STGeomFromText('POINT(lat lon)', 4326)
set @Line = geography::STGeomFromText('LINESTRING(point collection)', 4326)
SELECT @result = @Line.STIntersection(@CurrentPosition)
select @result.ToString()
这将有助于实际是否在线内 - 但我正在努力的问题是当我在表中搜索相交的项时,如何定义选择语句来执行上述事务。
由于