Bazy_dannykh_Uchebnoe_posobie
.pdf
9. 









, 










-




80% 




|
|
|
|
. |
|
|
|
|
, |
- |
|
|
, |
|
. |
|
|
: |
|
. |
, |
, |
, |
. |
. |
|
, |
|
. 20. |
|
|
|
|



, 


.



. 


, 

, 










, 








.

,


,






. 


























:















, 












(
);


k 















;



.


, 














,
.










(x,y), 




















.



























: 













. 




















.




, 













(





), 




, 



.

,
.







, 












, 















. 



, 
























(





). 












.
101


MBR











, 





















.

. 21. MBR







. 







. 22. 





, 





22. 
























, 







R-



. 

































.



Open Geospatial Consortium - OGC
Open Geospatial Consortium |
|
|
250 |
, |
, |






, 















, 




















. OGC 




Web-
http://www.opengis.org/.







OpenGIS
OpenGIS |
|
. |
. |
: |
non- |
instantiable 








instantiable. 


















. |
|
|
|
- Geometry ( |
) |
, |
|
- Point ( |
) - |
- |
. |
- Curve ( |
) |
|
, |
o |
- LineString ( |
|
) |
|
- Line |
|
|
102
|
|
- LinearRing |
|
|
|
- Surface ( |
) |
|
2 |
o |
|
Polygon ( |
) |
|
|
|
- GeometryCollection ( |
) |
|
o |
- MultiPoint ( |
) |
|
|
o |
- MultiCurve ( |
) |
|
|
|
|
- MultiLineString ( |
) |
|
o |
|
- MultiSurface ( |
) |
|
|
|
- MultiPolygon ( |
) |
|
|
. 23. |
|
. |
23 |
: |
|
|
1. |
|
LineString; |
|
2. |
|
LineString |
; |
3. |
|
LineString; |
|
4. |
|
LineString |
. |














:

(type), 



















.













(SRID - Spatial Reference Identifier).

































R- 


(
. 
. 17), 
















, 










.




(X,Y) 














, 


















(







). 





























(X,Y). 



















. 



























(SRID). 


, 

























103


, 







, 






































(








) 



.




: 



, 








. 
































. 


, 










, 





, 








. 



, 





, 

, 







. 




















.







(MBR).










:
((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)), 
.



: 


, 



. 























. 


, 





















(
. 
.
18).



: 



, 



. 




















.



: 

, 


. 




















.



: 


, 
























(















NULL). 











, 

















0 (

).



. 















0, 1 
2: o 0 



















.
o1 























, 












.
o 2 















.
OGIS



















.










, 









GROUP BY
HAVING,



. 


, 


OGIS 



























.









, 





















(


,
« |
», « |
», « |
», « |
»). |
|
|
, |
|
. |



, 










3D 









.
104


60:
|
|
. |
« |
» |
|
CREATE |
TABLE |
( |
|
|
varchar(30), |
|
|
varchar(30), |
|
|
varchrar(30), |
|
|
Integer, |
|
|
Number, |
|
|
Polygon |
); |
|
|
« |
» |
|
CREATE |
TABLE |
( |
|
|
varchar(30), |
|
|
varchar(30), |
|
|
Number, |
|
|
LineString |
); |
|
|
« |
» |
|
CREATE |
TABLE |
( |
|
|
varchar(30), |
|
|
varchar(30), |
|
|
integer, |
|
|
Point |
); |
|
|



.






SQL 









. 












. 




OGIS 


9 
































.
1. 


Touch 













, 




, 






























. 























,
2. |
Cross |
. |
, |













, 


















.
3. |
Distance |
. |
. |







. 











WHERE 






SELECT 



. 





















.
105
, |
, |


. 


, 






















, 







Distance 






.












Area 



,
Length 




. 5. 


Buffer 





. 










,
.
. 





- |
. |
4. |
|
|

. 24. 

























.







, 










Buffer.
6. |
Area - |
. |
. |









. 


, 




























, 









. 


, 





























, 







Area
|
|
|
. |
7. |
Intersection |
. |
, . |









. 







Intersection 








































.



, 


(




) 











(





), 


















.
8. |
Overlap |
. |
. |












. 


























.



















SQL 













.
106
61: |
|
|
|
|
|
|
|
|
|
|
, |
|
. |
|
|
|
n Touch. |
SELECT |
C1. |
AS " |
|
" |
|
FROM |
|
C1, |
C2 |
|
|
WHERE |
(Touch(C1. |
, C2. |
|
) = 1) |
|
|
AND (C2. |
|
= |
); |
|
62: |
|
|
|
|
|
|
, |
|
|
, |
, |
|
. |
|
|
|
Cross. |
SELECT |
. |
C |
. |
|
|
FROM |
, C |
|
|
|
|
WHERE |
Cross( |
. |
, C |
. |
) = 1; |
63: |
|
|
|
|
|
|
, |
|
|
|
, |
|
, |
|
|
. |
|



Distance.
SELECT |
C1. |
, R1. |
|
|
|
FROM |
|
C1, |
R1 |
|
|
WHERE |
Distance |
(C1. |
, R1. |
) |
< |
ALL ( |
|
|
|
|
|
|
SELECT Distance(C2. |
, R1. |
) |
||
|
FROM |
|
C2 |
|
|
|
WHERE C1. |
<> C2. |
|
|
|
|
); |
|
|
|
|
WHERE 














Distance,



, 













C1 


,
R1.



,



, 











C2, 














1.


, 













.


64:


. 
















, 













300 |
. |
, |
. |
|
. |
|
. |
|
|
|
107 |
|
|
Overlap. |
|
SELECT |
. |
|
|
FROM |
, |
|
|
WHERE (Overlap( |
. |
, Buffer( . |
,300)) = 1) |
AND (R.Name = . |
); |
|
|


65:











, 

















,
|
|
.. |
|
|
SELECT C. |
, C. |
, Area(C. |
) AS " |
" |
FROM |
C; |
|
|
|
|
- |
, |
|
|
. |
, |
|
. |
, |














, 

















.
-
, |
, |
, |




















.
-


, 













Area - 


.


66:






















, 










.

























Cross, 























. 



(

) 







, 






.
SELECT |
R. |
, C. |
, |
|
|
Length(Intersection(R. |
, C. |
)) AS " |
" |
||
FROM |
R, |
|
C |
|
|
WHERE |
Cross(R. |
|
, C. |
) = 1; |
|


67:




. 









,


, 




.
Point(0,C

.



.y) 









, 








, 









, 










C

.


. 






, 






.



.y 











y. 


108
|
|
|
, |
|
, y |
|
. |
|
|
|
. |
|
|
SELECT C |
. |
, |
|
|
|
|
Distance(Point(0, |
|
. |
.y), |
. |
) AS " |
" |
FROM |
, |
|
|
|
|
|
WHERE |
. |
= |
. |
; |
|
|
68: |
|
|
|
|
|
|
|
|
, |
|
|
- |
. |
. |
|
|
|
Touch |
|
|
|
|
|
. |
|
|
. |
SELECT |
Co. |
, Count(Co1. |
) |
|
FROM |
Co, |
Co1 |
|
|
WHERE |
Touch(Co. |
|
, Co1. |
) |
GROUP BY Co. |
|
|
|
|
ORDER BY Count(Co1. |
|
) |
|
|


69:








, 











. 













,
. |
, |



, 






. 



















.
SELECT |
Co.Name |
|
|
|
|
|
FROM |
|
Co, |
Co1 |
|
||
WHERE |
Touch(Co. |
|
, Co1. |
)) |
|
|
GROUP BY Co. |
|
|
|
|
|
|
HAVING |
Count(Co1. |
|
) = 1 |
|
|
|
SELECT |
Co. |
|
|
|
|
|
FROM |
|
Co |
|
|
|
|
WHERE |
Co. |
|
IN |
|
|
|
|
( |
|
|
|
|
|
|
SELECT |
Co. |
|
|
|
|
|
FROM |
|
Co, |
Co1 |
|
|
|
WHERE |
Touch(Co. |
, Co1. |
) |
||
|
GROUP BY Co. |
|
|
|
||
|
HAVING |
Count(*) = 1 |
|
|
||
|
); |
|
|
|
|
|
|
|
|
|
. |
|
|
FROM |
|
|
, |
|
, |
. |
|
GROUP BY |
|
|
|
||
|
|
|
. |
, |
HAVING |
|
|
|
|
|
|
|
109 |

























, 














. 





HAVING 





, 

WHERE, 







: HAVING 



















,

count.


69:




















? 












.
CREATE VIEW |
|
AS |
|
|
|
( |
|
|
|
|
|
SELECT |
Co. |
|
, |
|
|
Count(Co1. |
|
) AS |
_ |
|
|
FROM |
|
|
Co, |
Co1 |
|
WHERE |
Touch(Co. |
|
, Co1. |
) |
|
GROUP BY Co. |
|
|
|
|
|
) |
|
|
|
|
|
SELECT Co. |
, |
|
_ |
|
|
FROM |
|
|
|
|
|
WHERE |
_ |
= |
|
|
|
( |
|
|
|
|
|
SELECT Max( |
_ |
) |
|
||
FROM Neighbor |
|
|
|
||
)
;























VIEW (







) 















. 














, 








. 






























. 








, 












































.
110
