View
805
Download
3
Tags:
Embed Size (px)
Citation preview
SQL Server Spatial Summary
• 2 Spatial Data Types (CLR UDT) • Comprehensive set of Spatial Methods • High Performance Spatial Indexes • Spatial Industry Standards Support • Spatial Library •Management Studio Integration • Cloud-enabled
OVERVIEW FEATURES
• 2D Vector Data Support • Open Geospatial Consortium Simple Features for SQL compatible • Supported By Major GIS Vendors ESRI, Intergraph, Autodesk, Pitney Bowes, Safe, etc.
• Standard feature in all SQL Server Editions • Support for very large spatial objects (2GB) • Supported in SS Reporting Services • Redistributable Spatial Library
DETAILS
• Geography data type for geodetic data • Geometry data type for planar data • Standard spatial methods STIntersects, STBuffer, STLength, STArea, etc.
• Standard spatial format support (WKT, WBK, GML)
• Multiple spatial indexes per column • Multiple spatial columns per table • Create new CLR-based spatial functions with the Sink/Builder APIs • SQL Azure Spatial support • Support for circular (curve) spatial objects • Support for full globe geography objects • Optimized performance for the sphere
Ed Katibah, SQL Server, July 1, 2008
• Geography (Geodetic)
• Geometry (Planar)
2 Spatial Datatypes
• Ellipsoidal coordinate support only (e.g. WGS 84)
• Core set of geospatial methods
• No OGC/ISO standards compliance (though many standards components are there)
• Geospatial index
• Designed as a simple, straight-forward geospatial implementation
Geography
• Planar coordinate support only (georeferenced and non-georeferenced)
• Complete set of spatial methods
• OGC/ISO standards compliance (OGC SFS v1.1, ISO 19125)
• Spatial index
• Comprehensive spatial/geospatial offering supporting 2D planimetric applications
Geometry
POINT MULTIPOINT
LINESTRING MULTILINESTRING
CIRCULARSTRING COMPOUNDCURVE
POLYGON MULTIPOLYGON
CURVEPOLYGON GEOMETRYCOLLECTION
FULLGLOBE
• Retrieving Properties of Geometry Objects • Constructing Geometry Objects • Returning WKT, WKB and GML • Querying Validity, Instance Type, and Geometry Collection
Information • Determining the Relationship between Two Geometries • Creating New Geometries
• 4 Spatial indexes, two for geometry and two for geography
Spatial Data Type Support
Spatial Methods
Spatial Indexes
Geometry Data Type Geography Data Type
STIntersects()=1 STIntersects()=1
STOverlaps()=1 STOverlaps()=1*
STEquals() = 1 STEquals() = 1
STTouches() = 1
STWithin() = 1 STWithin() = 1*
STContains() = 1 STContains() = 1*
STDistance() < value** STDistance() < value**
STDistance() <= value** STDistance() <= value**
Filter() = 1 Filter() = 1
*New to SQL Server Code-Named “Denali” CTP3
**STDistance() also participates in the new “Denali” Nearest Neighbor (NN) query plan
Auto Grid Spatial Index
CREATE SPATIAL INDEX idxGeog
ON table(geography column)
USING GEOGRAPHY_AUTO_GRID;
or CREATE SPATIAL INDEX idxGeog
ON table(geography column)
USING GEOGRAPHY_AUTO_GRID
WITH (CELLS_PER_OBJECT = 32);
CREATE SPATIAL INDEX idxGeom
ON table(geometry column)
USING GEOMETRY_AUTO_GRID;
or CREATE SPATIAL INDEX idxGeom
ON table(geometry column)
USING GEOMETRY_AUTO_GRID
WITH (CELLS_PER_OBJECT = 32);
Index Construction
Geography Type: Default Cells per Object: 12
Geometry Type: Default Cells per Object: 8
New Spatial Index Hint
SPATIAL_WINDOW_MAX_CELLS
SELECT *
FROM table t
WITH (SPATIAL_WINDOW_MAX_CELLS=32)
WHERE t.geom.STIntersects(@window)=1;
The default value is 512 for geometry and 768 for geography. In SQL Server 2008, this value was hardcoded at 1024.
Fine tuning at runtime for spatial indexes
• Optimal value (theoretical) is somewhere between two extremes
Time needed to process false positives
Default values: 512 - Geometry AUTO grid 768 - Geography AUTO grid 1024 - MANUAL grids
Spatial Index Compression
CREATE SPATIAL INDEX idxGeog
ON table(geography column)
USING GEOGRAPHY_GRID
WITH (
DATA_COMPRESSION = <page | row>
);
On the basis of internal tests, with compression: • 40%-50% smaller than uncompressed counterparts • 5%-10% performance overhead for small indexes • For large indexes, performance improvements are observed
LINESTRING (0 50, 90 50, 180 50, 270 50, 0 50)
CIRCULARSTRING (0 50, 90 50, 180 50, 270 50, 0 50)
Linestring segments in the geography type define the minimum distance path on the underlying ellipsoid.
Circularstring segments in the geography type define a circular path. A good example is a latitude parallel.
Circular Arcs Geography Type Considerations
CIRCULARSTRING (0 50, 90 50, 180 50, 270 50, 0 50)
CURVEPOLYGON (CIRCULARSTRING (0 50, 90 50, 180 50, 270 50, 0 50))
If a circular linestring is closed, a curve polygon can be created
Coordinate pair order is important for the geography type. This set of coordinates is ordered according to the “left foot rule” for exterior rings.
New Methods for Circular Arcs
BufferWithCurves()
DECLARE @g GEOGRAPHY = GEOGRAPHY::STGeomFromText('CIRCULARSTRING(0 50, 45 50, 90 50)',4326) DECLARE @b GEOGRAPHY = @g.BufferWithCurves(500000) SELECT @b.STNumPoints() --Number of vertices: 11 DECLARE @g GEOGRAPHY = GEOGRAPHY::STGeomFromText('CIRCULARSTRING(0 50, 45 50, 90 50)',4326) DECLARE @b GEOGRAPHY = @g.STBuffer(500000) SELECT @b.STNumPoints() --Number of vertices: 257
This method will construct the resulting polygon with circular arcs, often resulting in a dramatically smaller spatial object.
New Methods for Circular Arcs continued…
• STNumCurves() Returns the number of curves in an object
• STCurveN() Used for iteration through the list of the edges
• STCurveToLine() Convert curve components to a linestring
• CurveToLineWithTolerance() Same as above but with user specific tolerance
New and Updated Methods and Aggregates for all Types
ShortestLineTo(); returns a linestring which represents the shortest distance between 2 objects
HasZ, HasM [boolean] returns 0 or 1 if object has Z or M-value components
New and Updated Methods and Aggregates for all Types
UnionAggregate() EnvelopeAggregate() CollectionAggregate() ConvexHullAggregate()
SELECT geog FROM Counties WHERE name_1 = 'Washington„ --Results: 39 rows, 1 for each county in the State of Washington
The following aggregate examples will use this core data
All aggregates are static methods which work for either the Geography or the Geometry data types. For instance, consider the geography aggregate: Geography::UnionAggregate(geog) and its counterpart for geometry: Geometry::UnionAggregate(geom)
Definition: Combines multiple spatial objects into a single spatial object, removing interior boundaries, where applicable.
SELECT Geography::UnionAggregate(geog) FROM Counties WHERE name_1 = 'Washington';
Definition: Returns a bounding circular object as a CurvePolygon which encloses one or more spatial objects.
SELECT Geography::EnvelopeAggregate(geog).STCurveToLine() FROM Counties WHERE name_1 = 'Washington';
Notes: STCurveToLine() method employed to assist in circular object rendering with visualization programs which do not support curve objects.
Definition: Returns a 5 point polygon (rectangle) which encloses one or more spatial objects.
SELECT Geometry::EnvelopeAggregate(geom) FROM Counties WHERE name_1 = 'Washington';
Notes: County input objects are in a US-wide Albers projection which accounts for the apparent data rotation.
Definition: Returns a geometry collection with one geometry part for each spatial object(s) in the selection set.
SELECT Geography::CollectionAggregate(geog) FROM Counties WHERE name_1 = 'Washington';
Notes: Unlike the UnionAggregate, adjoining interior boundaries are not removed for polygons
Definition: Returns a convex hull polygon which encloses one or more spatial objects.
SELECT Geography::ConvexHullAggregate(geog) FROM Counties WHERE name_1 = 'Washington';
• STLength() Now works on both valid and invalid linestrings; STLength now works on invalid linestrings. Typically a linestring is invalid due to overlapping segment caused by anomalies such as inaccurate GPS measurements.
• MinDbCompatibilityLevel() Method used for backward compatibility; indicates if spatial objects can be recognized by SQL Server 2008 and SQL Server 2008 R2.
• IsValidDetailed() Provides commentary on what is wrong with invalid objects
24400: Valid
24401: Not valid, reason unknown.
24402: Not valid because point ({0}) is an isolated point, which is not valid in this type of object.
24403: Not valid because some pair of polygon edges overlap.
24404: Not valid because polygon ring ({0}) intersects itself or some other ring.
24405: Not valid because some polygon ring intersects itself or some other ring.
24406: Not valid because curve ({0}) degenerates to a point.
24407: Not valid because polygon ring ({0}) collapses to a line at point ({1}).
24408: Not valid because polygon ring ({0}) is not closed.
24409: Not valid because some portion of polygon ring ({0}) lies in the interior of a polygon.
24410: Not valid because ring ({0}) is the first ring in a polygon of which it is not the exterior ring.
24411: Not valid because ring ({0}) lies outside the exterior ring ({1}) of its polygon.
24412: Not valid because the interior of a polygon with rings ({0}) and ({1}) is not connected.
24413: Not valid because of two overlapping edges in curve ({0}).
24414: Not valid because an edge of curve ({0}) overlaps an edge of curve ({1}).
24415: Not valid some polygon has an invalid ring structure.
24416: Not valid because in curve ({0}) the edge that starts at point ({1}) is either a line or a degenerate arc with antipodal endpoints.
declare @p geography = 'Polygon((2 2, 4 4, 4 2, 2 4, 2 2))'
select @p.IsValidDetailed()
--Results: 24409: Not valid because some portion of polygon ring (1) -- lies in the interior of a polygon.
All constructions and relations are now done with 48 bits of precision in Denali, compared to 27 bits used in SQL Server 2008 and 2008 R2.
For example, consider the following coordinate which was processed using the STUnion() method in SQL Server 2008
-82.339025999885052 29.662144999951124 -82.339026 29.661245
In Denali, the greater numerical precision typically maintains the precision of the original coordinates. Here is the result of the same STUnion() method in Denali, as above
82.339026 29.661245 -82.339026 29.661245
Full Globe Geography Type Enhancement
CURVEPOLYGON (CIRCULARSTRING (0 50, 90 50, 180 50, 270 50, 0 50))
Coordinate pair order is important for the geography type. This set of coordinates is ordered according to the “left foot rule” for exterior rings.
What happens if the coordinates defining the exterior ring are reversed?
Full Globe Geography Type Enhancement
CURVEPOLYGON (CIRCULARSTRING (0 50, 270 50, 180 50, 90 50, 0 50))
If we reverse the order of the coordinate pairs, using the “right foot rule” for interior rings, this curve polygon now represents “the rest of the globe”.
CURVEPOLYGON (CIRCULARSTRING (0 50, 90 50, 180 50, 270 50, 0 50))
SELECT GEOGRAPHY::STGeomFromText('FULLGLOBE', 4326) -- WGS84 SELECT GEOGRAPHY::STGeomFromText('FULLGLOBE', 4326).STArea() -- WGS84 --Results: 510065621710996 SELECT GEOGRAPHY::STGeomFromText('FULLGLOBE', 4322).STArea() -- WGS72 --Results: 510065312469083 DECLARE @wgs84_area FLOAT = (SELECT GEOGRAPHY::STGeomFromText('FULLGLOBE', 4326).STArea()) -- WGS84 DECLARE @wgs72_area FLOAT = (SELECT GEOGRAPHY::STGeomFromText('FULLGLOBE', 4322).STArea()) -- WGS72 SELECT @wgs84_area - @wgs72_area AS [DIFFERENCE] --Results: 309241913.4375
On March 20, 2010, the trimaran, Groupama 3, became the fastest boat to circumnavigate the Earth non-stop, ever (including power boats)… in 48 days, 7 hours and 44 minutes…
…and of course, it‟s GPS-equipped…
DECLARE @t GEOGRAPHY = (SELECT Track FROM Groupama_Track7) SELECT TOP 16 CNTRY_NAME, SOVEREIGN, POP_CNTRY, @t.STDistance(Geography) AS [DISTANCE FROM TRACK] FROM Countries ORDER BY @t.STDistance(Geography)
CNTRY_NAME SOVEREIGN POP_CNTRY DISTANCE FROM TRACK France France 57757060 0 New Zealand New Zealand 3528197 7115.41609170632 Chile Chile 13772710 15409.5690252515 Spain Spain 39267780 37144.5519830663 Portugal Portugal 9625516 57621.7065806319 Argentina Argentina 33796870 106198.966899358 United Kingdom United Kingdom 56420180 158636.063519451 Cape Verde Cape Verde 413573 165226.105053976 Guernsey United Kingdom 62920 177654.285742873 Jersey United Kingdom 87848 189169.527892158 Brazil Brazil 151525400 205920.063533954 Falkland Is. United Kingdom 2136 237487.364201179 Fr. So. & Ant. Lands France -99999 397707.475465133 Ireland Ireland 5015975 416683.669375291 Australia Australia 17827520 418237.701906367 South Africa South Africa 40634126 430605.825881581
New Geography Methods
ReorientObject()
• This method will reverse the order of coordinates which define polygon rings.
• This method is a no-op on line strings, circular arcs and points.
• This method does not work with the geometry type.
SELECT TOP(5) *
FROM Restaurants r
WHERE r.type = ‘Italian’
AND r.position.STDistance(@me) IS NOT NULL
ORDER BY r.position.STDistance(@me)
It can also be expressed with limited maximum distance SELECT TOP(5) *
FROM Restaurants r
WHERE r.type = ‘Italian’
AND r.position.STDistance(@me) < @max_range
ORDER BY r.position.STDistance(@me)
Two new helper methods are available: • sp_help_spatial_geography_histogram • sp_help_spatial_geometry_histogram They can be used for investigating spatial index efficiency or analyzing spatial data in general. The histograms could be also shown on a SSMS map. The data can be used for external visualization:
•
•
CREATE TABLE location (
id int primary key,
x float(max),
y float(max),
range float(max),
geom as
geometry::Point(x, y, 0)
.STBuffer(range) PERSISTED );
Client Side Library Changes
New sink interfaces are available IGeometrySink110 and IGeographySink110. They should be used in the future. They must be used for objects incompatible with SQL Server 2008: • Objects bigger than a logical hemisphere • Objects with circular arcs • Invalid geography However, the old sinks will continue to work for SQL Server 2008 compatible objects. Geometry and Geography builders (SqlGeometryBuilder and SqlGeographyBuilder) now support circular arc constructions. New method “Deserialize” is added on the client library to both types.
SQL Server 2008 Spatial Data http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx
• http://sqlspatialtools.codeplex.com
• http://dataconnector.codeplex.com/
• http://blogs.msdn.com/b/isaac/
• http://blogs.msdn.com/edkatibah/
• http://www.sqlskills.com/BLOGS/BOBB/
•http://social.technet.microsoft.com/wiki/contents/articles/4136.aspx
•
http://social.technet.microsoft.com/wiki/contents/articles/new-spatial-features-in-the-sql-azure-q2-2011-service-release.aspx
• http://social.msdn.microsoft.com/Forums/en-US/sqlspatial/threads
• http://msdn.microsoft.com/en-us/library/ee320529.aspx
• http://msdn.microsoft.com/en-us/library/ee642046(v=SQL.105).aspx
•http://downloads.solidq.com/insidetsql/
• http://www.apress.com/book/view/1430218290
•
USE Sample_USA GO --Update database compatibility ALTER DATABASE Sample_USA SET COMPATIBILITY_LEVEL = 110; GO
•
USE World; GO --Update database compatibility ALTER DATABASE World SET COMPATIBILITY_LEVEL = 110; GO
•
DECLARE @g GEOGRAPHY; SET @g = GEOGRAPHY::STGeomFromText(' CIRCULARSTRING(0 -23.43778, 0 0, 0 23.43778) ',4326); SELECT @g; GO
•
DECLARE @g GEOGRAPHY; SET @g = GEOGRAPHY::STGeomFromText(' COMPOUNDCURVE( CIRCULARSTRING(0 -23.43778, 0 0, 0 23.43778), CIRCULARSTRING(0 23.43778, -45 23.43778, -90 23.43778), CIRCULARSTRING(-90 23.43778, -90 0, -90 -23.43778), CIRCULARSTRING(-90 -23.43778, -45 -23.43778, 0 -23.43778)) ',4326); SELECT @g; GO
•
DECLARE @g GEOGRAPHY; SET @g = GEOGRAPHY::STGeomFromText(' COMPOUNDCURVE( (0 -23.43778, 0 23.43778), CIRCULARSTRING(0 23.43778, -45 23.43778, -90 23.43778), (-90 23.43778, -90 -23.43778), CIRCULARSTRING(-90 -23.43778, -45 -23.43778, 0 -23.43778)) ',4326); SELECT @g; GO
•
DECLARE @a GEOGRAPHY = 'LineSTring(-118 34, -119 35)' DECLARE @b GEOGRAPHY = 'Polygon((-120 22, -119 22, -119 23, -120 23, -120 22))' SELECT @a.ShortestLineTo(@b) UNION ALL SELECT @a UNION ALL SELECT @b GO
•
DECLARE @g GEOGRAPHY; SET @g = GEOGRAPHY::STGeomFromText(' CURVEPOLYGON( COMPOUNDCURVE( (0 -23.43778, 0 23.43778), CIRCULARSTRING(0 23.43778, -45 23.43778, -90 23.43778), (-90 23.43778, -90 -23.43778), CIRCULARSTRING(-90 -23.43778, -45 -23.43778, 0 -23.43778) ) ) ',4326); SELECT @g; GO
•
•
DECLARE @g GEOGRAPHY SET @g = GEOGRAPHY::STGeomFromText(' GEOMETRYCOLLECTION( COMPOUNDCURVE( CIRCULARSTRING(0 23.43778, -45 23.43778, -90 23.43778), (-90 23.43778, -90 -23.43778) ), COMPOUNDCURVE( CIRCULARSTRING(-90 -23.43778, -45 -23.43778, 0 -23.43778), (0 -23.43778, 0 23.43778) ) ) ',4326); SELECT @g; GO
•
USE Sample_USA; GO --Union Aggregates - Geography SELECT Geography::UnionAggregate(geog) FROM Counties WHERE NAME_1 = 'Washington'; GO --Union Aggregates - Geometry SELECT Geometry::UnionAggregate(geom) FROM Counties WHERE NAME_1 = 'Washington'; GO
•
USE Sample_USA; GO --Envelope Aggregate - Geography SELECT Geography::EnvelopeAggregate(geog) FROM Counties WHERE NAME_1 = 'Washington' UNION ALL SELECT geog from Counties WHERE NAME_1 = 'Washington' GO --Envelope Aggregate - Geometry (why are the county spatial objects "rotated") SELECT Geometry::EnvelopeAggregate(geom) FROM Counties WHERE NAME_1 = 'Washington' UNION ALL SELECT geom from Counties WHERE NAME_1 = 'Washington' GO
•USE Sample_USA; GO --Collection Aggregate SELECT Geography::CollectionAggregate(geog) FROM Counties WHERE NAME_1 = 'Washington'; GO --Is it really a single object - if so, how many parts does it have? DECLARE @a GEOGRAPHY = (SELECT Geography::CollectionAggregate(geog) FROM Counties WHERE NAME_1 = 'Washington'); SELECT @a.STNumGeometries(); GO --Results: 39 --Coincidentally, this is exactly the same number of counties in the State of Washington ;-) SELECT COUNT(*) FROM Counties WHERE NAME_1 = 'Washington'; GO
•
USE Sample_USA; GO --Convex Hull - Geography SELECT Geography::ConvexHullAggregate(geog) FROM Counties WHERE NAME_1 = 'Washington' UNION ALL SELECT geog from Counties WHERE NAME_1 = 'Washington„ GO --Convex Hull - Geometry SELECT Geometry::ConvexHullAggregate(geom) FROM Counties WHERE NAME_1 = 'Washington' UNION ALL SELECT geom from Counties WHERE NAME_1 = 'Washington„ GO
•
DECLARE @p geography = 'Polygon((2 2, 4 4, 4 2, 2 4, 2 2))' SELECT @p.IsValidDetailed(); GO --Results: 24409: Not valid because some portion of polygon ring (1) -- lies in the interior of a polygon.
•
--Invalid LineStrings - new behavior DECLARE @line geometry = 'LineString(1 1, 2.1 1, 2.0 1, 4 1)' SELECT @line.STIsValid(); GO --Results: 0 (invalid) DECLARE @line geometry = 'LineString(1 1, 2.1 1, 2.0 1, 4 1)' SELECT @line.IsValidDetailed(); GO --Results: 24413: Not valid because of two overlapping edges in curve (1).
•
--You can still perform metric operations DECLARE @line geometry = 'LineString(1 1, 2.1 1, 2.0 1, 4 1)' SELECT @line.STLength(); GO --Results: 3.2 --You cannot perform other operations, however DECLARE @line geometry = 'LineString(1 1, 2.1 1, 2.0 1, 4 1)' SELECT @line.STBuffer(.5); GO --Results: 24144: This operation cannot be completed because the instance is not valid.
•
USE World; GO DECLARE @g GEOGRAPHY SET @g = GEOGRAPHY::STGeomFromText(' CURVEPOLYGON( CIRCULARSTRING(0 50, 90 50, 180 50, 270 50, 0 50) ) ',4326); SELECT @g UNION ALL SELECT geography from World.dbo.Countries GO
•
USE World; GO DECLARE @g GEOGRAPHY SET @g = GEOGRAPHY::STGeomFromText(' CURVEPOLYGON( CIRCULARSTRING(0 50, 90 50, 180 50, 270 50, 0 50) ) ',4326); SELECT @g.ReorientObject() UNION ALL SELECT geography from World.dbo.Countries GO
•
--Buffer DECLARE @g GEOGRAPHY = GEOGRAPHY::STGeomFromText('CIRCULARSTRING(0 50, 45 50, 90 50)',4326) DECLARE @b GEOGRAPHY = @g.STBuffer(500000) SELECT @b --.STNumPoints() UNION ALL SELECT geography from World.dbo.Countries GO --Number of vertices: 257 --BufferWithCurves DECLARE @g GEOGRAPHY = GEOGRAPHY::STGeomFromText('CIRCULARSTRING(0 50, 45 50, 90 50)',4326) DECLARE @b GEOGRAPHY = @g.BufferWithCurves(500000) SELECT @b --.STNumPoints() UNION ALL SELECT geography from World.dbo.Countries GO --Number of vertices: 11
GEOGRAPHY GEOMETRY Denali CTP Minimum DB
Compatibility
Level
OGC Methods
STArea() STArea() 100
STAsBinary() STAsBinary() 100
STAsText() STAsText() 100
STBoundary() 100
STBuffer() STBuffer() 100
see EnvelopeCenter() STCentroid() 100
STContains() STContains() CTP1 100
STConvexHull() STConvexHull() CTP1 100
STCrosses() 100
STCurveN() STCurveN() CTP1 110
STCurveToLine() STCurveToLine() CTP1 110
STDifference() STDifference() 100
STDimension() STDimension() 100
STDisjoint() STDisjoint() 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB
Compatibility
Level
OGC Methods, continued
see EnvelopeAggregate() STEnvelope() 100
STEquals() STEquals() 100
na STExteriorRing() 100
STGeometryN() STGeometryN() 100
STGeometryType() STGeometryType() 100
na STInteriorRingN() 100
STIntersections() STIntersections() 100
STIntersects() STIntersects() 100
STIsClosed() STIsClosed() 100
STIsEmpty() STIsEmpty() 100
na STIsRing() 100
STIsSimple() 100
STIsValid() STIsValid() CTP1 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB
Compatibility Level
OGC Methods, continued
STNumGeometries() STNumGeometries() 100
na STNumInteriorRing() 100
STNumPoints() STNumPoints() 100
STOverlaps() STOverlaps() CTP1 100
STPointN() STPointN() 100
STPointOnSurface() 100
STRelate() 100
STSrid STSrid 100
STStartPoint() STStartPoint() 100
STSymDifference() STSymDifference() 100
STTouches() 100
STUnion() STUnion() 100
STWithin() STWithin() CTP1 100
na STX 100
na STY 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB
Compatibility Level
Extended Methods
ASTextZM() ASTextZM() 100
BufferWithCurves() BufferWithCurves() CTP1 110
BufferWithTolerance() BufferWithTolerance() 100
CurveToLineWithTolerance() CurveToLineWithTolerance() CTP1 110
EnvelopeAngle() na 100
EnvelopeCenter() na 100
Filter() Filter() 100
HasM HasM CTP3 100
HasZ HasZ CTP3 100
InstanceOf() InstanceOf() 100
IsNull() IsNull() 100
IsValidDetailed() IsValidDetailed() CTP3 100
Lat na 100
Long na 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB Compatibility Level
Extended Methods, continued
MinDbCompatibilityLevel() MinDbCompatibilityLevel() CTP1 100
Reduce() Reduce() 100
ReorientObject() na CTP1 100
NumRings() na 100
RingN() na 100
ShortestLineTo() ShortestLineTo() CTP1 100
ToString() ToString() 100
Z Z 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB Compatibility Level
OGC Static Methods
STGeomCollFromText() STGeomCollFromText() 100
STGeomFromText() STGeomFromText() 100
STLineFromText() STLineFromText() 100
STPointFromText() STPointFromText() 100
STPolyFromText() STPolyFromText() 100
STMLineFromText() STMLineFromText() 100
STMPointFromText() STMPointFromText() 100
STMPolyFromText() STMPolyFromText() 100
STGeomCollFromWKB() STGeomCollFromWKB() 100
STGeomFromWKB() STGeomFromWKB() 100
STLineFromWKB() STLineFromWKB() 100
STPointFromWKB() STPointFromWKB() 100
STPolyFromWKB() STPolyFromWKB() 100
STMLineFromWKB() STMLineFromWKB() 100
STMPointFromWKB() STMPointFromWKB() 100
STMPolyFromWKB() STMPolyFromWKB() 100
GEOGRAPHY GEOMETRY Denali CTP Minimum DB Compatibility Level
Extended Static Methods
GeomFromGML() GeomFromGML() 100
Parse() Parse() 100
Point() Point() 100
Null() Null() 100
Aggregates (Extended Static Methods)
CollectionAggregate() CollectionAggregate() CTP1 100
ConvexHullAggregate() ConvexHullAggregate() CTP1 100
EnvelopeAggregate() EnvelopeAggregate() CTP1 100
UnionAggregate() UnionAggregate() CTP1 100