e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
892 lines
34 KiB
C#
892 lines
34 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="DefaultSpatialServices.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//
|
|
// @owner willa
|
|
// @backupOwner [....]
|
|
//------------------------------------------------------------------------------
|
|
|
|
using System.Data.Common.Internal;
|
|
using System.Diagnostics;
|
|
using System.Data.Spatial.Internal;
|
|
|
|
namespace System.Data.Spatial
|
|
{
|
|
[Serializable]
|
|
internal sealed class DefaultSpatialServices : DbSpatialServices
|
|
{
|
|
#region Provider Value Type
|
|
|
|
[Serializable]
|
|
private sealed class ReadOnlySpatialValues
|
|
{
|
|
private readonly int srid;
|
|
private readonly byte[] wkb;
|
|
private readonly string wkt;
|
|
private readonly string gml;
|
|
|
|
internal ReadOnlySpatialValues(int spatialRefSysId, string textValue, byte[] binaryValue, string gmlValue)
|
|
{
|
|
this.srid = spatialRefSysId;
|
|
this.wkb = (binaryValue == null ? null : (byte[])binaryValue.Clone());
|
|
this.wkt = textValue;
|
|
this.gml = gmlValue;
|
|
}
|
|
|
|
internal int CoordinateSystemId { get { return this.srid; } }
|
|
internal byte[] CloneBinary() { return (this.wkb == null ? null : (byte[])this.wkb.Clone()); }
|
|
internal string Text { get { return this.wkt; } }
|
|
internal string GML { get { return this.gml; } }
|
|
}
|
|
|
|
#endregion
|
|
|
|
internal static readonly DefaultSpatialServices Instance = new DefaultSpatialServices();
|
|
|
|
private DefaultSpatialServices()
|
|
: base()
|
|
{
|
|
}
|
|
|
|
private static Exception SpatialServicesUnavailable()
|
|
{
|
|
//
|
|
return new NotImplementedException();
|
|
}
|
|
|
|
private static ReadOnlySpatialValues CheckProviderValue(object providerValue)
|
|
{
|
|
ReadOnlySpatialValues expectedValue = providerValue as ReadOnlySpatialValues;
|
|
if (expectedValue == null)
|
|
{
|
|
throw SpatialExceptions.ProviderValueNotCompatibleWithSpatialServices();
|
|
}
|
|
return expectedValue;
|
|
}
|
|
|
|
private static ReadOnlySpatialValues CheckCompatible(DbGeography geographyValue)
|
|
{
|
|
Debug.Assert(geographyValue != null, "Validate geographyValue is non-null before calling CheckCompatible");
|
|
if (geographyValue != null)
|
|
{
|
|
ReadOnlySpatialValues expectedValue = geographyValue.ProviderValue as ReadOnlySpatialValues;
|
|
if (expectedValue != null)
|
|
{
|
|
return expectedValue;
|
|
}
|
|
}
|
|
throw SpatialExceptions.GeographyValueNotCompatibleWithSpatialServices("geographyValue");
|
|
}
|
|
|
|
private static ReadOnlySpatialValues CheckCompatible(DbGeometry geometryValue)
|
|
{
|
|
Debug.Assert(geometryValue != null, "Validate geometryValue is non-null before calling CheckCompatible");
|
|
if (geometryValue != null)
|
|
{
|
|
ReadOnlySpatialValues expectedValue = geometryValue.ProviderValue as ReadOnlySpatialValues;
|
|
if (expectedValue != null)
|
|
{
|
|
return expectedValue;
|
|
}
|
|
}
|
|
throw SpatialExceptions.GeometryValueNotCompatibleWithSpatialServices("geometryValue");
|
|
}
|
|
|
|
#region Geography API
|
|
|
|
public override DbGeography GeographyFromProviderValue(object providerValue)
|
|
{
|
|
providerValue.CheckNull("providerValue");
|
|
ReadOnlySpatialValues expectedValue = CheckProviderValue(providerValue);
|
|
return CreateGeography(this, expectedValue);
|
|
}
|
|
|
|
public override object CreateProviderValue(DbGeographyWellKnownValue wellKnownValue)
|
|
{
|
|
wellKnownValue.CheckNull("wellKnownValue");
|
|
return new ReadOnlySpatialValues(wellKnownValue.CoordinateSystemId, wellKnownValue.WellKnownText, wellKnownValue.WellKnownBinary, gmlValue: null);
|
|
}
|
|
|
|
public override DbGeographyWellKnownValue CreateWellKnownValue(DbGeography geographyValue)
|
|
{
|
|
geographyValue.CheckNull("geographyValue");
|
|
ReadOnlySpatialValues backingValue = CheckCompatible(geographyValue);
|
|
return new DbGeographyWellKnownValue() { CoordinateSystemId = backingValue.CoordinateSystemId, WellKnownBinary = backingValue.CloneBinary(), WellKnownText = backingValue.Text };
|
|
}
|
|
|
|
#region Static Constructors - Well Known Binary (WKB)
|
|
|
|
public override DbGeography GeographyFromBinary(byte[] geographyBinary)
|
|
{
|
|
geographyBinary.CheckNull("geographyBinary");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeography.DefaultCoordinateSystemId, textValue: null, binaryValue: geographyBinary, gmlValue: null);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
public override DbGeography GeographyFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
geographyBinary.CheckNull("geographyBinary");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: null, binaryValue: geographyBinary, gmlValue: null);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
public override DbGeography GeographyLineFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyPointFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyPolygonFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyMultiLineFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyMultiPointFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "MultiPolygon", Justification = "Match MultiPoint, MultiLine")]
|
|
public override DbGeography GeographyMultiPolygonFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyCollectionFromBinary(byte[] geographyBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Static Constructors - Well Known Text (WKT)
|
|
|
|
public override DbGeography GeographyFromText(string geographyText)
|
|
{
|
|
geographyText.CheckNull("geographyText");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeography.DefaultCoordinateSystemId, textValue: geographyText, binaryValue: null, gmlValue: null);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
public override DbGeography GeographyFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
geographyText.CheckNull("geographyText");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: geographyText, binaryValue: null, gmlValue: null);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
public override DbGeography GeographyLineFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyPointFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyPolygonFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyMultiLineFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyMultiPointFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "MultiPolygon", Justification = "Match MultiPoint, MultiLine")]
|
|
public override DbGeography GeographyMultiPolygonFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GeographyCollectionFromText(string geographyText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Static Constructors - GML
|
|
|
|
public override DbGeography GeographyFromGml(string geographyMarkup)
|
|
{
|
|
geographyMarkup.CheckNull("geographyMarkup");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeography.DefaultCoordinateSystemId, textValue: null, binaryValue: null, gmlValue: geographyMarkup);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
public override DbGeography GeographyFromGml(string geographyMarkup, int spatialReferenceSystemId)
|
|
{
|
|
geographyMarkup.CheckNull("geographyMarkup");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: null, binaryValue: null, gmlValue: geographyMarkup);
|
|
return DbSpatialServices.CreateGeography(this, backingValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geography Instance Property Accessors
|
|
|
|
public override int GetCoordinateSystemId(DbGeography geographyValue)
|
|
{
|
|
geographyValue.CheckNull("geographyValue");
|
|
ReadOnlySpatialValues backingValue = CheckCompatible(geographyValue);
|
|
return backingValue.CoordinateSystemId;
|
|
}
|
|
|
|
public override int GetDimension(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override string GetSpatialTypeName(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool GetIsEmpty(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geography Well Known Format Conversion
|
|
|
|
public override string AsText(DbGeography geographyValue)
|
|
{
|
|
geographyValue.CheckNull("geographyValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geographyValue);
|
|
return expectedValue.Text;
|
|
}
|
|
|
|
public override byte[] AsBinary(DbGeography geographyValue)
|
|
{
|
|
geographyValue.CheckNull("geographyValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geographyValue);
|
|
return expectedValue.CloneBinary();
|
|
}
|
|
|
|
public override string AsGml(DbGeography geographyValue)
|
|
{
|
|
geographyValue.CheckNull("geographyValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geographyValue);
|
|
return expectedValue.GML;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geography Instance Methods - Spatial Relation
|
|
|
|
public override bool SpatialEquals(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Disjoint(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Intersects(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geography Instance Methods - Spatial Analysis
|
|
|
|
public override DbGeography Buffer(DbGeography geographyValue, double distance)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double Distance(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography Intersection(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography Union(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography Difference(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography SymmetricDifference(DbGeography geographyValue, DbGeography otherGeography)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region Geography Collection
|
|
|
|
public override int? GetElementCount(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography ElementAt(DbGeography geographyValue, int index)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Point
|
|
|
|
public override double? GetLatitude(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetLongitude(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetElevation(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetMeasure(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Curve
|
|
|
|
public override double? GetLength(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GetEndPoint(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography GetStartPoint(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool? GetIsClosed(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region LineString, Line, LinearRing
|
|
|
|
public override int? GetPointCount(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeography PointAt(DbGeography geographyValue, int index)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Surface
|
|
|
|
public override double? GetArea(DbGeography geographyValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region Geometry API
|
|
|
|
public override object CreateProviderValue(DbGeometryWellKnownValue wellKnownValue)
|
|
{
|
|
wellKnownValue.CheckNull("wellKnownValue");
|
|
return new ReadOnlySpatialValues(wellKnownValue.CoordinateSystemId, wellKnownValue.WellKnownText, wellKnownValue.WellKnownBinary, gmlValue: null);
|
|
}
|
|
|
|
public override DbGeometryWellKnownValue CreateWellKnownValue(DbGeometry geometryValue)
|
|
{
|
|
geometryValue.CheckNull("geometryValue");
|
|
ReadOnlySpatialValues backingValue = CheckCompatible(geometryValue);
|
|
return new DbGeometryWellKnownValue() { CoordinateSystemId = backingValue.CoordinateSystemId, WellKnownBinary = backingValue.CloneBinary(), WellKnownText = backingValue.Text };
|
|
}
|
|
|
|
public override DbGeometry GeometryFromProviderValue(object providerValue)
|
|
{
|
|
providerValue.CheckNull("providerValue");
|
|
ReadOnlySpatialValues expectedValue = CheckProviderValue(providerValue);
|
|
return CreateGeometry(this, expectedValue);
|
|
}
|
|
|
|
#region Static Constructors - Well Known Binary (WKB)
|
|
|
|
public override DbGeometry GeometryFromBinary(byte[] geometryBinary)
|
|
{
|
|
geometryBinary.CheckNull("geometryBinary");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeometry.DefaultCoordinateSystemId, textValue: null, binaryValue: geometryBinary, gmlValue: null);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
public override DbGeometry GeometryFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
geometryBinary.CheckNull("geometryBinary");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: null, binaryValue: geometryBinary, gmlValue: null);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
public override DbGeometry GeometryLineFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryPointFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryPolygonFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryMultiLineFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryMultiPointFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "MultiPolygon", Justification = "Match MultiPoint, MultiLine")]
|
|
public override DbGeometry GeometryMultiPolygonFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryCollectionFromBinary(byte[] geometryBinary, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Static Constructors - Well Known Text (WKT)
|
|
|
|
public override DbGeometry GeometryFromText(string geometryText)
|
|
{
|
|
geometryText.CheckNull("geometryText");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeometry.DefaultCoordinateSystemId, textValue: geometryText, binaryValue: null, gmlValue: null);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
public override DbGeometry GeometryFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
geometryText.CheckNull("geometryText");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: geometryText, binaryValue: null, gmlValue: null);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
public override DbGeometry GeometryLineFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryPointFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryPolygonFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryMultiLineFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryMultiPointFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "MultiPolygon", Justification = "Match MultiPoint, MultiLine")]
|
|
public override DbGeometry GeometryMultiPolygonFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GeometryCollectionFromText(string geometryText, int spatialReferenceSystemId)
|
|
{
|
|
// Without a backing implementation, this method cannot enforce the requirement that the result be of the specified geometry type
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Static Constructors - GML
|
|
|
|
public override DbGeometry GeometryFromGml(string geometryMarkup)
|
|
{
|
|
geometryMarkup.CheckNull("geometryMarkup");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(DbGeometry.DefaultCoordinateSystemId, textValue: null, binaryValue: null, gmlValue: geometryMarkup);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
public override DbGeometry GeometryFromGml(string geometryMarkup, int spatialReferenceSystemId)
|
|
{
|
|
geometryMarkup.CheckNull("geometryMarkup");
|
|
ReadOnlySpatialValues backingValue = new ReadOnlySpatialValues(spatialReferenceSystemId, textValue: null, binaryValue: null, gmlValue: geometryMarkup);
|
|
return DbSpatialServices.CreateGeometry(this, backingValue);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Instance Property Accessors
|
|
|
|
public override int GetCoordinateSystemId(DbGeometry geometryValue)
|
|
{
|
|
geometryValue.CheckNull("geometryValue");
|
|
ReadOnlySpatialValues backingValue = CheckCompatible(geometryValue);
|
|
return backingValue.CoordinateSystemId;
|
|
}
|
|
|
|
public override DbGeometry GetBoundary(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override int GetDimension(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetEnvelope(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override string GetSpatialTypeName(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool GetIsEmpty(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool GetIsSimple(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool GetIsValid(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Well Known Format Conversion
|
|
|
|
public override string AsText(DbGeometry geometryValue)
|
|
{
|
|
geometryValue.CheckNull("geometryValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geometryValue);
|
|
return expectedValue.Text;
|
|
}
|
|
|
|
public override byte[] AsBinary(DbGeometry geometryValue)
|
|
{
|
|
geometryValue.CheckNull("geometryValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geometryValue);
|
|
return expectedValue.CloneBinary();
|
|
}
|
|
|
|
public override string AsGml(DbGeometry geometryValue)
|
|
{
|
|
geometryValue.CheckNull("geometryValue");
|
|
ReadOnlySpatialValues expectedValue = CheckCompatible(geometryValue);
|
|
return expectedValue.GML;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Instance Methods - Spatial Relation
|
|
|
|
public override bool SpatialEquals(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Disjoint(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Intersects(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Touches(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Crosses(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Within(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Contains(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Overlaps(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool Relate(DbGeometry geometryValue, DbGeometry otherGeometry, string matrix)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Instance Methods - Spatial Analysis
|
|
|
|
public override DbGeometry Buffer(DbGeometry geometryValue, double distance)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double Distance(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetConvexHull(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry Intersection(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry Union(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry Difference(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry SymmetricDifference(DbGeometry geometryValue, DbGeometry otherGeometry)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Instance Methods - Geometry Collection
|
|
|
|
public override int? GetElementCount(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry ElementAt(DbGeometry geometryValue, int index)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Geometry Instance Methods - Geometry Collection
|
|
|
|
public override double? GetXCoordinate(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetYCoordinate(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetElevation(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override double? GetMeasure(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Curve
|
|
|
|
public override double? GetLength(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetEndPoint(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetStartPoint(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool? GetIsClosed(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override bool? GetIsRing(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region LineString, Line, LinearRing
|
|
|
|
public override int? GetPointCount(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry PointAt(DbGeometry geometryValue, int index)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Surface
|
|
|
|
public override double? GetArea(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetCentroid(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry GetPointOnSurface(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Polygon
|
|
|
|
public override DbGeometry GetExteriorRing(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override int? GetInteriorRingCount(DbGeometry geometryValue)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
|
|
public override DbGeometry InteriorRingAt(DbGeometry geometryValue, int index)
|
|
{
|
|
throw SpatialServicesUnavailable();
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
}
|
|
}
|