Правильный синтаксис для пересечения с географией - PullRequest
0 голосов
/ 30 апреля 2018

Итак, я делаю домашнее задание, и я не могу понять этот шаг.

  1. Щелкните правой кнопкой мыши по таблицам, которые вы только что создали, щелкните Дизайн , затем добавьте в него новый столбец, который называется GEOG , тип данных география . Сохраните изменения в ваших таблицах.
  2. Заполните столбец GEOG столбцом WKT , преобразованным в Line / Polygon данные.
  3. Для таблицы округов создать новый запрос UPDATE, преобразовать WKT в Polygon и сохранить его в столбец GEOG .

Таблица 1 - brazosStreet , а таблица 2 - округов .

Table1 WKT равен LINESTRING, а Table2 равен POLYGON.

Я застрял на шаге Table2 Polygon.

Проверить данные и выполнить пересечение:

Geog.MakeValid();
Geog.STIntersects(Geog1) = 1;

Валидация:

Update [dbo].[Counties]
set Geog = Geog.MakeValid()

Выполните выбор:

SELECT *
FROM [dbo].[counties]
WHERE Geog.STIntersects(geography::STLineFromText(‘LINESTRING(-98.144094 31.915186, -93.914357 30.977930)’, 4326);

Независимо от того, что я ввожу для «Выполнить выбор» , я получаю сообщение об ошибке. Я попытался STPolyFromText, и я попытался удалить и запустить более 3 раз.

Единственное, о чем я могу думать, это то, что я пропустил этот раздел, потому что не могу заставить его работать:

Проверить данные и выполнить пересечение

Geog.MakeValid();
Geog.STIntersects(Geog1) = 1;

То, как я это читал, было похоже на обзор того, что должно произойти. Так как Geog.MakeValid(); является частью этапа проверки, а Geog.STIntersects(Geog1) = 1; выглядит как часть этапа выбора.

Почему мой синтаксис не работает должным образом? Я не уверен, что это за язык SQL. Пожалуйста, дайте мне знать, если мне нужно больше объяснить эту ситуацию. Заранее спасибо за помощь!

UPDATE [dbo].[brazosStreets] 
SET
[Geog] = geography::STLineFromText([WKT],4326);
UPDATE [dbo].[counties]
SET Geog = Geog.MakeValid;
select *
from [dbo].[counties] c
where c.STIntersect(geography::STLineFromText(‘LINESTRING(-98.144097 
31.915186, -93.914357 30.977930)’,4326))=1;

Я получаю ошибку 102, когда пытаюсь запустить это .. Ошибка с размещением «одинарной кавычки» с использованием небулева оператора

...