2012-06-28 2 views
0

Можно создать дубликат:
SQL Server 2008 Spatial: find a point in polygonSQL Server - от долготы и широты к геометрии типа данных

Я работаю над приложением, которое использует базу данных SQL Server 2008. В этой базе данных у меня есть таблица с именем Session, которая имеет два поля Longitude и широту, которые указывают местоположение пользователя. В другой таблице под названием «Зона» у меня есть атрибут области, который имеет геометрию типа. Как проверить, соответствуют ли долготы и широты координат пользователя определенной геометрии?

Спасибо

+1

См. Ответ на [этот вопрос SO] [1]. [1]: http://stackoverflow.com/questions/11054149/sql-server-2008-spatial-find-a-point-in-polygon –

+1

Ответ География и это отождествление геометрия - Примечания к ответ немного исправляет ответ, но на самом деле не объясняет, почему SQL использует разные типы данных, которые несоизмеримы. –

ответ

2

У вас есть геометрия, которая сохраняет форму в евклидовой геометрии, и вы хотите связать точку на земном шаре, в лице широты и долготы, с ним, чтобы увидеть, если он находится внутри , Это не сработает, поскольку SQL хранит данные. Вероятно, вам нужно использовать типы данных географии, чтобы проверить это: широта и долгота являются точками на сфере (на самом деле геодезические данные, так как земля не совсем сфера.)

Для получения дополнительной информации о том, почему они отличаются, см. this explanation from microsoft , Кроме того, этот ответ на StackOverflow: GEOMETRY and GEOGRAPHY difference SQL Server 2008

Чтобы преобразовать данные из геометрии к географии, попробуйте: География :: STGeomFromText (CAST (GeomCol, как VARCHAR (макс)), 4326)

Затем вы можете использовать STIntersects метод, документированный microsoft here.

+0

Большое спасибо Дэвиду за быстрый ответ и дополнительную информацию. –

Смежные вопросы