Есть две таблицы MSSQL, которые содержат пространственные данные:
- AddressPoints - содержит геолокации адресов (POINT структуру)
- трубопровода - содержит геолокации трубопровода (LINESTRING структуру)
Расстояния между точкой и ближайшем LINESTING
Таблица AddressPoints должна содержать расстояние от ближайшего сегмента конвейера. В настоящее время я пытаюсь написать эффективный запрос. Я закончил с помощью следующего запроса:
select a.ogr_fid, min(a.geom.STDistance(p.geom))
from AddressPoints a, Pipeline p
group by a.ogr_fid
Однако AddressPoints и таблица трубопроводов содержат огромное количество данных, которое влияет на скорость выполнения. Обе таблицы содержат пространственные индексы, но я не уверен, использует ли этот запрос их.
'MIN' предполагает, что вы ищете расстояние до ближайшего соседа, не все расстояния. [В этой статье MSDN] (https://msdn.microsoft.com/en-us/library/ff929109.aspx) объясняется, как написать запрос ближайшего соседа, который использует пространственные индексы. Требования довольно строгие –