Я бы хотел получить ближайший объект к заданной точке в Spatialite, используя пространственный SQL-запрос. Я хотел бы ускорить его с помощью таблицы индекса. Граница пространственного индекса должна быть рассчитана из определенной точки и заданного допуска, в запросе должны использоваться все объекты, которые полностью / частично находятся в ограничивающей рамке дерева.
Я пробовал несколько способов, но у меня всегда была проблема с границей пространственного индекса .
Как это:
ВЫБРАТЬ *, Расстояние (GeomFromText ('POINT (19.02658 47.51574)'), mo_utak_polyline.Geometry) как расстояние ОТ mo_utak_polyline ГДЕ ВХОД (ВЫБРАТЬ pkid ОТ idx_mo_utak_polyline_Geometry <40 макс. 47.52824) И расстояние <= 0.0025) ЗАКАЗАТЬ по расстоянию </p>
Или это:
SELECT *, Пересекается (GeomFromText ('POINT (19.02658 47.51574)'), megyehatar_region.Geometry) как пересекается с megyehatar_region ГДЕ ВХОДЯЩИЙ (ВЫБИРАЙТЕ pkid ИЗ idx_megyehatar_region_Gemin.51565 x 408> 406> 406> 406> 406> 406> 0,05> 405> x65> x080> x0.865 x 408 x 680 x 680 x 568 x 568 x 568 x 568 x080 x 403 x080865 x065865 x658 x65865 x160x1602656656656000 макс. Геометрия: *1012* SELECT *, пересекается (GeomFromText ('POINT (19.02658 47.51574)'), megyehatar_region.Geometry) как пересекается с (выберите SELECT 52.51574) И пересекается = 1
Я всегда могу получить функции, которые полностью содержатся в моем ограничивающем прямоугольнике, определенном индексом. Это вызывает огромную проблему для меня, например, когда я пытаюсь запросить линейные объекты, когда их длина совершенно другая, это может быть 1 см или даже 1000 км, поэтому трудно установить размер ограничивающего прямоугольника пространственного индекса .
Какой, по вашему мнению, лучший способ сделать это?
Как изменить эту часть запроса
ВЫБРАТЬ pkid ОТ idx_mo_utak_polyline_Geometry ГДЕ xmin> 19.01408 И xmax <19.03908 И ymin> 47.50324 И ymax <47.52824) </p>
вернуть не только элементы, содержащиеся в ограничительной рамке, но и те, которые с ней пересекаются?
Заранее спасибо!