2010-06-23 5 views
4

사용자의 위도와 경도가 있다고 가정하고 주변을 찾고 싶다면 ... 레스토랑을 가정 해 봅시다. 어떻게 관계형 데이터베이스를 쿼리합니까? "25 마일 반경 내의 식당"과 같은 것?"인근"검색 결과를 찾는 방법은 무엇입니까?

사용자의 위치가 +/- 25 마일 (추측으로 도트로 변환 됨)보다 길고 위도가 크거나 작은 사각형의 레스토랑을 쿼리 한 다음 어떤 언어로든 '모퉁이'를 필터링하면 너 사용? 아니면 SQL에서 직접 할 수 있습니까?

+4

이런 종류의 물건은 공간 데이터를 통해 처리됩니다. 지구가 평평하지 않기 때문에 위도와 경도가 이상적이지 않습니다. PostgreSQL은 자유롭고 높이 평가 된/사용 된 공간 구성 요소를 가지고 있습니다. –

답변

4

예를 들어 오라클에서 사용할 수있는 공간 기능에 봐 - 여기에 위키 피 디아 항목 http://en.wikipedia.org/wiki/Spatial_query 및 NOAA에서 예제와 함께 링크입니다 https://www.ngdc.noaa.gov/wiki/index.php?title=Sample_Oracle_Spatial_Queries

+1

+1 MySQL, SQL Server 및 PostgreSQL에도 공간 구성 요소가 있습니다. 즉, SQL에서 "직접 처리"한다는 의미입니다. 예를 들어 2 점 사이의 거리를 계산하는 특별한 쿼리 함수를 사용하면됩니다. 다음은 25 마일 이내의 레스토랑에 대한 공기 SQL입니다.'s.r_stin_name = r.shape (사용자 이름이 "Fred"인 사용자로부터 모양 선택), "distance = 25 unit = miles") = "TRUE" ; ' – MarkJ

2
+1

아니,하지 마! 공간적 특징이있는 데이터베이스를 사용하여 작업을 수행하십시오. MySQL, SQL Server, Oracle 또는 PostgreSQL을 사용합니다. http://stackoverflow.com/questions/3098395/how-to-find-nearby-results/3098402#3098402 – MarkJ

2

귀하의 "원의 SQL 구현 "적도에서 상당한 거리 (예 : 뉴욕 또는 런던 또는 모스크바)와 같은 직선 그리드로 위도/경도를 처리하는 경우에는 이미 변형 될 것입니다. "사각형"에서 모서리를 자르더라도 그다지 향상되지 않습니다.

1

나는 특히 당신이 관계형 데이터베이스에 대해 언급했음을 알고 있지만, 적어도 공간적 쿼리의 네이티브 구현이있는 시스템을 살펴 본다.

개인적으로, 나는 MongoDB를 꽤 우아 발견했습니다 http://www.mongodb.org/display/DOCS/Geospatial+Indexing

+0

많은 관계형 데이터베이스에는 공간 쿼리의 기본 구현이 있습니다. MySQL, Oracle, SQL Server, PostGIS – MarkJ

관련 문제