Есть ли какие-либо встроенные функции для работы с геохеши в SQL Server? Либо перейти к / от представлений полигонов, либо получить центральную точку? Я просмотрел функции здесьgeography, но ничего не увидел ...
Если нет встроенных функций, знает ли кто-нибудь о каких-либо определениях для пользовательских функций, которые могут существовать где-то там, которые делают это? Я знаю, что алгоритм общедоступен, но я бы предпочел не катить собственную реализацию SQL, если это уже сделано.


Я создал простую пользовательскую функцию sclarar, которая выполняет некоторые из этих задач:
https://github.com/Broham/SQL-Server-Geohash
В настоящее время он просто принимает геохеш и возвращает его центральную широту / долготу, но его можно легко изменить, чтобы вернуть ограничивающую рамку, получить геохеш для широты / долготы или любое другое количество вариантов использования. Надеюсь, это кому-то поможет
После поиска реализации TSQL для SQL Server типов и функций преобразования Geohash я, наконец, просто пошел и сам написал целую библиотеку с открытым исходным кодом:
Я разработал его для максимальной точности, производительности и надежных гарантий согласованности преобразования. Это позволяет среднему аналитику хранилища данных ИТ или составителю отчетов эффективно использовать, обрабатывать и использовать простые модели пространственной близости ГИС и запросы. И все это достигается без необходимости того, чтобы упомянутый аналитик или составитель отчетов участвовал в крутой кривой обучения поиску и внедрению полного решения в стиле ГИС.
Он предоставляет два типа реализации Geohash; Целое число (BIGINT) и Строка (VARCHAR). Он также предоставляет два типа координат; Долгота + Широта и DMS. А затем он обеспечивает преобразование этих различных типов и обратно. Он также предоставляет преобразования в / из типа Point пространственной географии SQL Server.
Пожалуйста, см. README.md для получения подробной информации.
В sql server нет таких встроенных функций. Это первое, что я читал о геохешах, но я делал то же самое с координатами Lat / Lng. Вы можете сделать то же самое с Lat / Lng, просто добавив и заменив значения для создания диапазона.