Пространственное индексирование MS SQL Server 2008 – работает ли оно?

StackOverflow https://stackoverflow.com/questions/511441

Вопрос

Кто-нибудь пробовал его использовать и может сказать, хорошо ли он реализован?

-- Ассаф (который последние несколько недель все больше разочаровывался из-за недостаточной реализации функций OpenGIS в MySQL и теперь подумывает о переходе на MSSQL)

Это было полезно?

Решение

Да, они работают.

Я только что переключил один из своих классов с запроса на основе ESRI-ArcObject с использованием ISpatialFilter на SqlCommand, который возвращает те же данные.Это поиск по близости (возвращает все записи, находящиеся в пределах 1000 футов от точки x).

Поначалу запрос ESRI все еще выполнялся быстрее, но это было связано с плохо построенным предложениемwhere, которое было очень неэффективным (я все еще учусь использовать пространственные функции в SQLSVR2008).

После некоторой настройки мой метод SQL оказался быстрее, чем метод ESRI, но ненамного.Затем я увеличил расстояние поиска до 10 000 футов и увидел разницу.Метод SQL Server 2008 был намного быстрее.

(ESRI) Затраченное время поиска ближайших клиентов (сек):1,503 (SQL2008) Запрос близлежащих клиентов в прошлом (SEC):0,925

Хотя разница в скорости связана не с индексами, а с ESRI-ArcObjects.В моем методе ESRI я получаю расстояние, x и y от IProximityOperator и IPoint.В методе SQL2008 я позволяю базе данных выполнять всю работу:SHAPE.STX как X, SHAPE.STY как Y, SHAPE.STDistance (но разработчики ArcObject знают все об этих накладных расходах).

Я пока впечатлен.

Другие советы

Да, это работает, у меня есть пример кода здесь Поиск близости SQL Server 2008 с типом данных «География»

Да.Они реализованы правильно.У вас также есть PostgreSQL PostGIS В качестве опции, Oracle Пространственный.Informix и DB2 также имеют реализации пространственного типа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top