Upload
loreen-palmer
View
229
Download
3
Embed Size (px)
Citation preview
Spatial DatabaseTips & Tricks
Paul [email protected]
It’s not dead, it’s just resting…It’s not dead, it’s just resting…
Motivation
• Spatial databases are powerful• Godlike, really• You do not need “GIS software”• Your database is “GIS software”• You do not need “spatial
middleware”• See above
Standard Database
• Has data types– varchar– integer– real– date
Spatial Database
• Has spatial data types– point– linestring– polygon– multipoint– multilinestring– multipolygon
Standard Database
• Has one-dimensional indexes– b-tree– hash
Spatial Database
• Has spatial indexes– r-tree– quad-tree– grid
Find intersecting shapes…
Start with all boxes,
find intersecting boxes,
then find intersecting shapes.
Standard Database
• Has functions• Work against standard types
– lower()– round()– substring()– trim()– dayofweek ()
Spatial Database
• Has spatial functions• Work against spatial types
– ST_Area(geometry)– ST_Distance(geometry,geometry)– ST_Intersects(geometry,geometry)– ST_DWithin(geometry,geometry,radiu
s)– ST_Union(geometry,geometry)
Locator
Spatial
• No buffer operation
• No union operation
• No intersection operation
• No centroid point
• No area or length calculation
L O C A T O R
• Linear referencing system (LRS) support• Spatial analysis and mining functions
and procedures (SDO_SAM package)• Geocoding support (SDO_GCDR
package)• GeoRaster support• Topology data model• Network data model
S P A T I A L
• SFSQL compliant• New release, not as many features• No coordinate reference system
transforms• Windows only• Grid index
SELECT * FROM the_tableWHERE the_geom.STIntersects( geometry::STGeomFromText('POINT(0 0)',0) );
SELECT * FROM the_tableWHERE ST_Intersects( the_geom, ST_GeomFromText('POINT(0 0)',0) );
• PostgreSQL / PostGIS• SFSQL compliant• Open source (GPL)• Proprietary / open source clients• “geographic” coordinates require
care