Verifique se o dbgeometry / dbgeography point da dbgeometry está dentro de um polígono
Eu tenho um problema, espero que vocês possam me ajudar a resolver.
Eu tenho um ponto DbGeometry (ou DbGeography, eu posso usar ambos) e eu gostaria de verificar se isso está dentro de um Polygon DbGeometry (alternativamente um DbGeography).
Eu estou fazendo isso no momento:
var dbZones = new List<WasteManager.Database.Zone>();
foreach(var zone in zones)
{
var res = from z in DatabaseContext.Zones
let boundary =
!z.BoundaryGeometry.IsValid
? SqlSpatialFunctions.MakeValid(z.BoundaryGeometry)
: z.BoundaryGeometry
where z.ID == zone.ID && point.Within(boundary)
select z;
if(res.FirstOrDefault() != null) dbZones.Add(res.FirstOrDefault());
}
Então eu percorro as zonas (entidade EF do meu banco de dados) e verifico se esse ponto que tenho está dentro desse limite.
O problema é que ele não retorna nenhum resultado, mas sei que esse ponto está dentro desse limite porque criei manualmente o limite e o ponto para estar dentro desse limite.
Alguém pode me dizer se o que estou fazendo é errado, se há outra maneira de fazer isso ou qualquer outra coisa?
Muito aprecio.
Manuel