Spatial queries in SQL Server 2008 SQL Bits III – 13 th September 2008

Preview:

Citation preview

COLIN MACKAY

WHERE’S MY DATA?

Spatial queries in SQL Server 2008

SQL Bits III – 13th September 2008

HTTP://WWW.COLINMACKAY.NET

WHAT’S COVERED IN THIS TALK

New data types geometry and geography

Spatial references Spatial operations Spatial indexes Case study

HTTP://WWW.COLINMACKAY.NET

WHY SHOULD I CARE ABOUT SPATIAL DATA?

80-90% of all data has a spatial element Where are your customers? Where are your assets? Where are potential customers? Where are the flood risks? Where are your complaints coming

from? Where are the accident black-spots? Where are crimes happening?

HTTP://WWW.COLINMACKAY.NET

COULD FUDGE THE QUERIES

Postcodes in Glasgow

Zoned Historical reasons G5 adjacent to G42 G40 in an island Postcodes designed

for delivering letters

HTTP://WWW.COLINMACKAY.NET

WHAT DOES SQL SERVER 2008 PROVIDE? The data analysis engine No useful rendering engine

Virtual Earth Map Point Other GIS systems

OGC Standards compliance Plus some “extension” methods of their

own

HTTP://WWW.COLINMACKAY.NET

GEOMETRY

X/Y coordinate on a planar grid

British National Grid Works well to

~750,000km2 Different projections

HTTP://WWW.COLINMACKAY.NET

GEOGRAPHY

Geodetic coordinates

Covers larger areas International

datasets Approximation

Earth actually flattened sphere (oblate spheroid)

Different models Airy 1830 (used by

OS) WGS84 (used by

GPS)

HTTP://WWW.COLINMACKAY.NET

SRID

Spatial Reference Identifier All spatial data has an SRID SRIDs must match for spatial

operations Null returned if SRIDs don’t match

Geometry can have an SRID of 0 Not Geography.

HTTP://WWW.COLINMACKAY.NET

TYPES OF SPATIAL DATA

Point LineString Polygon GeomCollection MultiPolygon MultiLineString MultiPoint

From BOL

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

CREATE POINT DATA

HTTP://WWW.COLINMACKAY.NET

FINDING DISTANCES

SELECT a.Name AS StartVenue, b.Name AS EndVenue, a.Location.STDistance(b.Location) / 1000.0 As

DistanceFROM Venue AS aINNER JOIN Venue AS b ON a.Id < b.IdORDER BY a.Id, b.Id

GCU 60

Dundee U

62 102

MS TVP 520 537 572

MS Edin’

6 66 58 521

HBOS GCU Dundee U

MS TVP

HTTP://WWW.COLINMACKAY.NET

LINESTRING

A linestring is a series of coordinates 1 dimension Defines a linear object

Road Railway line River

HTTP://WWW.COLINMACKAY.NET

CREATING LINESTRINGS

Can use STGeomFromText STGeomFromWKB STLineFromText STLineFromWKB Parse

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

CREATE LINESTRING DATA

HTTP://WWW.COLINMACKAY.NET

GEOMETRY LENGTHS & DISTANCES

Geography uses SI Units Geometry uses the units of the planar

system

The square of the hypotenuse is equal to the sum of the square of the other two sides

Not to scale

3 units

4 units

? units

Distance from A to B:√(32+42) = 5

A

B

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

INTERSECTING LINES

HTTP://WWW.COLINMACKAY.NET

POLYGON

A series of coordinates in a closed ring First and last coordinate are the same

2 dimensions Defines an area

HTTP://WWW.COLINMACKAY.NET

GEOGRAPHY POLYGON ORIENTATION

Interior is everything inside an anti-clockwise ring Everything on the

left-hand side of the perimeter line.

HTTP://WWW.COLINMACKAY.NET

GEOGRAPHY POLYGON ORIENTATION

The specified input does not represent a valid geography instance because it exceeds a single hemisphere. Each geography instance must fit inside a single hemisphere. A common reason for this error is that a polygon has the wrong ring orientation.

HTTP://WWW.COLINMACKAY.NET

CREATING POLYGONS

Can use STGeomFromText STGeomFromWKB STPolygonFromText STPolygonFromWKB Parse

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

CREATING POLYGONS

HTTP://WWW.COLINMACKAY.NET

FICTIONAL CASE STUDY

Estate Agent Filter by price, # bedrooms, type – EASY! Filter by location?

Until now very vague

HTTP://WWW.COLINMACKAY.NET

COMMON SPATIAL QUESTIONS

Near a

railwa

y

statio

n

Near my

work

Near a motorway junctionNear a good

school Inside the city

Outside the city

HTTP://WWW.COLINMACKAY.NET

THE DATA

Railway data Stations Routes

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

SIMPLE SPATIAL QUERIES

HTTP://WWW.COLINMACKAY.NET

DOESN’T ALWAYS WORK

Edinburgh - Glenrothes (via Kirkcaldy)

Name DistKM-------------------------- ----------------Edinburgh Waverley Station 0Haymarket 1.89298770395887South Gyle 6.95446540329848Burntisland 12.086984317701Dalmeny 12.49585147351Kinghorn 13.1439998546632Aberdour 13.3392361220632North Queensferry 14.3833962761344Dalgety Bay 15.0082794626365Inverkeithing 15.7316327831032Kirkcaldy 17.9484646860063Glenrothes With Thornton 23.7022936117453

COLIN MACKAY

colin@scottishdevelopers.com

http://www.colinmackay.net

LOOKING FOR A HOME

HTTP://WWW.COLINMACKAY.NET

DISPLAY THE PROPERTIES

HTTP://WWW.COLINMACKAY.NET

SPATIAL INDEXING

Decomposes space into 4 levels of grid

Level 1 is the top Cells are uniform in

a level A level can be a

4x4, 8x8 or 16x16 grid 8x8 by default

HTTP://WWW.COLINMACKAY.NET

RESTRICTIONS

Table must have a primary key Primary key cannot subsequently be

changed. Not on views Maximum of 249 Spatial indexes per

column

HTTP://WWW.COLINMACKAY.NET

WHY HAVE MULTIPLE INDEXES ON ONE COLUMN

Where geometry/ geography sizes vary

e.g. Rail routes Small: Suburban

lines Large: Intercity lines

HTTP://WWW.COLINMACKAY.NET

SPATIAL INDEXING

Supports STIntersects STEquals STDistance

One Geography must be a point

Both sides of the spatial operation must have the same SRID

HTTP://WWW.COLINMACKAY.NET

SPATIAL INDEXING ON A GEOMETRY

Must specify boundary of spatial area Additional methods supported

STContains STOverlaps STTouches STWithin

HTTP://WWW.COLINMACKAY.NET

AND THERE’S MORE!

CodePlex project More spatial methods Aggregations Scripts

http://www.codeplex.com/sqlspatialtools

HTTP://WWW.COLINMACKAY.NET

WHAT I’VE NOT MENTIONED

GML Import and export

M and Z Can store Cannot operate.

Other spatial Operations Geometry has more!

Visualisation .NET application

integration Data Importing

HTTP://WWW.COLINMACKAY.NET

GET MORE INFORMATION

Slide Deck on my website http://www.colinmackay.net

Blog posts on Spatial Data http://blog.colinmackay.net

HTTP://WWW.COLINMACKAY.NET

QUESTIONS

?

Recommended