Запрос данных геометрии SQL с использованием долготы и широты - PullRequest
0 голосов
/ 20 сентября 2018

Я скачал шейп-файл с веб-сайта Ordinance Survey и импортировал его в SQL с помощью ShpToSql.exe, здесь настройки

ShapeFile being loaded using ShpToSql

Это хорошо импортирует.

Теперь я хочу спросить, в каком регионе находится конкретная долгота и широта.

Использование следующего

Почтовый индекс: WD25 7LR (Harry Potter Studios: D)
Широта: 51.6910751568794
Долгота: -0.418128358906299

Я думал, что смогу написатьчто-то вроде

DECLARE @g  geography
set @g = geography::Point(51.6910751568794, -0.418128358906299, 4326)

select [name] from region where @g.STWithin(geom) is not null

Но это возвращает сообщение об ошибке Operand type clash: geometry is incompatible with geography

Поэтому я попытался изменить тип данных на geometry, поэтому код выглядит так

declare @g  geometry
set @g = geometry::Point(51.6910751568794, -0.418128358906299, 4326)

select [name] from region where @g.STWithin(geom) = 1

Но результаты не возвращаются.

Может кто-нибудь помочь мне с этим, пожалуйста.Просто хочу узнать, находится ли долгота и широта в пределах определенного ПОЛИГОНА.

ОБНОВЛЕНИЕ:
Я попытался импортировать файл .shp, используя тип данных Geography, но это даетсообщение об ошибке при попытке импортировать его

enter image description here

И даже если я все еще пытаюсь импортировать его, я получаю сообщение, подобное этому, для каждой фигуры вфайл shp

enter image description here

1 Ответ

0 голосов
/ 23 сентября 2018

SQL Server не позволяет сравнивать типы данных геометрии и географии .

Если вас не интересует точность, вы можете выполнить исходный запрос с точкой в ​​качестве типа геометрии,Это будет работать достаточно хорошо в большинстве небольших случаев, когда вы не сравниваете нечетные фигуры и полусферы.

DECLARE @g  geometry
set @g = geometry::Point(51.6910751568794, -0.418128358906299, 4326)

select [name] from region where @g.STWithin(geom) is not null

В противном случае вам нужно будет импортировать данные в виде географического типа, и на основе вашего примечания могут бытьнекоторые искаженные данные в шейп-файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...