sql >> Database >  >> RDS >> Sqlserver

straal zoeken op breedtegraad / lengtegraad

Aangezien u SQL 2008 gebruikt, kunt u overwegen de systeemeigen georuimtelijke mogelijkheden te gebruiken. Je kunt leuke dingen doen zoals:

  • Maak een persistente berekende kolom van het geografische type die uw punt vertegenwoordigt.
  • Maak een ruimtelijke index op de berekende kolom. Dit maakt dingen als yourPoint.STDistance(@otherPoint) <= @distance efficiënt

Vind ik leuk:

alter table [yourTable] add [p] as geography::Point(Latitude, Longitude, 4326) persisted;
create spatial index [yourSpatialIndex] on [yourTable] ([p])

declare @Latitude float = <somevalue>, @Longitude float = <somevalue>;
declare @point geography = geography::Point(@Latitude, @Longitude, 4326);
declare @distance int = <distance in meters>;

select * from [yourTable] where @point.STDistance([p]) <= @distance;


  1. Vastgelopen in fout 2 met mysql met XAMPP

  2. Hoe u aggregatiegegevens op n-niveau het beste kunt berekenen op basis van gegevens op (n-1)-niveau (Oracle)

  3. Hoe kan ik zien wat er in een Postgresql-tabelruimte staat?

  4. Hoe voer je een in orakel opgeslagen procedure uit?