क्या किसी ने इसे लागू किया है, या पता है कि क्या इसे लागू करना मुश्किल होगा / इसका कोई संकेत है?
public static SpatialRelationCriterion IsWithinDistance(string propertyName, object anotherGeometry, double distance)
{
// TODO: Implement
throw new NotImplementedException();
}
NHibernate.Spatial.Criterion.SpatialRestrictions से
मैं "जहां NHSP.Distance (PROPERTY,: बिंदु)" का उपयोग कर सकता हूं। लेकिन इस क्वेरी को मेरी मौजूदा मानदंड क्वेरी के साथ जोड़ना चाहते हैं।
फिलहाल मैं एक मोटा बहुभुज बना रहा हूं, और उपयोग कर रहा हूं
criteria.Add(SpatialRestrictions.Intersects("PROPERTY", myPolygon));
EDIT को SpatialRelationCriterion पर कंस्ट्रक्शन ओवरलोडिंग द्वारा काम करने वाला एक प्रोटोटाइप मिल गया, जो नए SpatialRelation.Distance को जोड़ रहा है।
public static SpatialRelationCriterion IsWithinDistance(string propertyName, object anotherGeometry, double distance)
{
return new SpatialRelationCriterion(propertyName, SpatialRelation.Distance, anotherGeometry, distance);
}
SpatialRelationCriterion में एक नया फ़ील्ड जोड़ा गया
private readonly double? distance;
public SpatialRelationCriterion(string propertyName, SpatialRelation relation, object anotherGeometry, double distance)
: this(propertyName, relation, anotherGeometry)
{
this.distance = distance;
}
संपादित ToSqlString
object secondGeometry = Parameter.Placeholder;
if (!(this.anotherGeometry is IGeometry))
{
secondGeometry = columns2[i];
}
if (distance.HasValue)
{
builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, secondGeometry, distance.Value, true));
}
else
{
builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, secondGeometry, true));
}
ओवरलोडेड ISpatialDialect.GetSpatialRelationString
MsSql2008SpatialDialect में ओवरलोड लागू किया गया
public SqlString GetSpatialRelationString(object geometry, SpatialRelation relation, object anotherGeometry, double distance, bool criterion)
{
var x = new SqlStringBuilder(8)
.AddObject(geometry)
.Add(".ST")
.Add(relation.ToString())
.Add("(")
.AddObject(anotherGeometry)
.Add(")");
if (criterion)
{
x.Add(" < ");
x.AddObject(distance.ToString());
}
return x.ToSqlString();
}
निश्चित नहीं है कि AddParameter क्यों इस्तेमाल नहीं किया जा रहा है?