TLDR: Given a set of LAT/LON => index and return "nearby" results.
I'm working my way through a MEAN Node.js/MongoDB/Express/Angular book. It's definitely not something I'm comfortable with - I'm more comfortable with Sql Server. I'm also looking at Sql Server 2017 in docker containers.
The exercise I'm working on has a Yelp Type application: Given a location, show nearby businesses and give the user the ability to Rate those businesses.
Where I'm at is planning on moving the backend database/api from MongoDB/Express/Node into Sql Server, Asp.net MVC.
Given the sample layout
Is this where I should be looking? I don't see exactly what I'm looking for...
- Create table with lat/long coords
- index the coords
- query nearby
I'm still looking, but I'm not finding what I'm looking for...
edit: Close question here, but no cigar
edit: getting closer (mainly from this blog post... Now trying to figure out how to index and quickly find "close" points
USE master GO IF EXISTS(select * from sys.databases where name='MEAN') DROP DATABASE MEAN GO CREATE DATABASE MEAN GO USE MEAN; GO CREATE TABLE [dbo].[Landmark] ( [ID] INT IDENTITY(1, 1), [LandmarkName] VARCHAR(100), [Location] VARCHAR(50), [Latitude] FLOAT, [Longitude] FLOAT ) GO INSERT INTO [dbo].[Landmark] ( [LandmarkName], [Location], [Latitude], [Longitude] ) VALUES ( 'Statue of Liberty', 'New York, USA', 40.689168,-74.044563 ), ( 'Eiffel Tower', 'Paris, France', 48.858454, 2.294694), ( 'Leaning Tower of Pisa', 'Pisa, Italy', 43.72294, 10.396604 ), ( 'Great Pyramids of Giza', 'Cairo, Egypt', 29.978989, 31.134632 ), ( 'Sydney Opera House', 'Syndey, Australia', -33.856651, 151.214967 ), ( 'Taj Mahal', 'Agra, India', 27.175047, 78.042042 ), ( 'Colosseum', 'Rome, Italy', 41.890178, 12.492378 ) GO ALTER TABLE [dbo].[Landmark] ADD [GeoLocation] GEOGRAPHY GO UPDATE [dbo].[Landmark] SET [GeoLocation] = geography::Point([Latitude], [Longitude], 4326); GO DECLARE @source geography = geography::Point(40.689168,y -74.044563, 4326); SELECT *, @source.STDistance([GeoLocation]) FROM [dbo].[Landmark]