Coğrafi verilerimi geometriye dönüştürmek için başvurmak istemiyorum, bu yüzden STIntersect'te doğru olarak döndürülür. İşte Çokgen içinde SQL Coğrafi nokta noktası STIntersect üzerinde true dönmüyor (ancak Geometri kullanarak doğru döndürür)
SQL kodudur:DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(1, 1, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
aşağıdaki döndürür false (0), kullandığım ancak eğer:
DECLARE @point GEOMETRY = GEOMETRY::Point(1, 1, 4326)
DECLARE @polygon GEOMETRY = GEOMETRY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
Doğru döndürür Eksik bir şey mi var? Tek bildiğim coğrafya 3D düzlemdir ve geometri düz bir haritadır, ancak nokta çokgenin içinde ise hesaplama için dünyayı kullanıyorum.
Not: Bu Bu işleri Microsoft SQL Server 2012
Teşekkürler, benim için çalıştı. – MilkTea027
Bu, _left-hand_ kuralını açıklayan güzel bir blog girişidir: http://danielwertheim.se/2012/12/03/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position- no/ Örneğin: çokgenin tüm satırlarının _left_ için bir nokta varsa, çokgen _intersect_ yapar. – bounav
Soldaki kuralı açıklayan yukarıdaki blog gönderisinin URL adresi: http://danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position-no/ – Daniel