- •Простые запросы
- •Базовые функции
- •Топологические операции и операции над множествами
- •Пространственный анализ
- •Примеры пространственных запросов
- •1.Отыскать в таблице Country названия всех стран, которые являются соседями Бельгии.
- •2. Для вех рек, перечисленных в таблице River, определить страны, по которым они протекают.
- •Мера формы полигонов (функция Эйлера)
- •Определение площади
- •Мера сложности сети
- •Пространственные сети
- •Управление обходом графа с помощью конструкций ‘start with’ и ‘connect by’
- •3. Назвать все непосредственные притоки реки Кама.
- •4. Сколько рек пострадает от разлива опасных веществ в реке Теща?
Примеры пространственных запросов
1.Отыскать в таблице Country названия всех стран, которые являются соседями Бельгии.
Select C1.Name As “соседи Бельгии”
From Country C1, Country C2
WHERE Touch (C1 shape, C2 shape)=1 AND C2.Name=“Бельгия”
Touch – истина, если границы двух поверхностей пересекаются
2. Для вех рек, перечисленных в таблице River, определить страны, по которым они протекают.
Select R.Name, C.Name
From River R, Country C
WHERE Cross(R.Shape, C.Shape) = 1
Cross – истина, если поверхности пересекаются кривой
3. Запрос. Какой город, содержащийся в таблице City, ближе других расположен ко всем рекам, перечисленным в таблице River?
SELECT C1.Name, R1.Name
FROM City C1, River R1
WHERE Distance (C1.Shape, R1.Shape) <
ALL (SELECT Distance(C2.Shape, R1.Shape)
FROM City C2
WHERE C1.Name <> C2.Name
)
4. Река Голубой Дунай может снабжать водой города, удаленные от нее не далее чем на 100 км. Составить список городов, которые могут получать воду из реки Дунай.
Select Ci.name
From City Ci, River R
WHERE Overlap(Ci.Shape, Buffer(R.Shape, 100))=1 AND R.Name =“Дунай”
Overlap - истина, если внутренняя область двух геометрий имеют непустое пересечение
5. Составить список названий численности населения и площади стран, содержащихся в таблице Country
Select C.Name, C.Pop, Area (C.Shape) As “Площадь”
From Country C
6. Составить список длин рек в пределах каждой страны, по которой они протекают
Select R.Name, C.Name, length(Intersection(R.Shape, C.Shape)) As “Length”
From River R, Country C
WHERE Cross(R.Shape, C.Shape) = 1
Intersect - истина, если геометрии имеют общие элементы
7. Запрос. Для всех стран составить список ВВП и расстояний от столичных городов до экватора.
SELECT Co.GDP, Distance(Point(0,Ci.Shape.y),Ci.Shape)
AS "Расстояние"
FROM Country Co, City Ci
WHERE Co.Name = Ci.Country AND
Ci.Capital = ‘Д’
8. Составить список всех стран, упорядоченных по количеству государств соседей
Select Co.Name, Count(Co1.Name)
From Country Co, Country Co1
WHERE Touch (Co.Shape, Co1.Shape)
GROUP BY Co. Name
ORDER BY Count (Co1.Name)
9. Перечислить страны, имеющие только одного соседа. Страна является соседней по отношению к другой стране, если их территории имеют общую сухопутную границу. В соответствии с этим определением островные государства, скажем Исландия, соседей не имеют.
SELECT Co.Name
FROM Country Co, Country Co1
WHERE Touch(Co.Shape, Co1.Shape))
GROUP BY Co.Name
HAVING Count(Co1.Name) = 1
SELECT Co.Name
FROM Country Co
WHERE Co.Name IN
(SELECT Co.Name
FROM Country Co, Country Co1
WHERE Touch(Co.Shape, Co1.Shape)
GROUP BY Co.Name
HAVING Count(*) = 1)
10. Какая страна имеет наибольшее число соседей?
CREATE View Sosedi AS
Select Co.Name, Count(Co1.Name) AS num_sosedi
From Country Co, Country Co1
WHERE Touch(Co.Shape, Co1.Shape)
GROUP BY Co.Name
Select Co.Name, num_sosedi
From Sosedi
WHERE num_sosedi=( Select MAX(num_sosedi)
From sosedi