2012-02-24 3 views
3

현재 Django 기반 앱을 처음으로 구축하고 있는데 이는 입니다. 목표 중 하나는 사용자가 정보 (텍스트, 사진, 동영상)를 게시하고 앱이 에이 정보를 게시 한 위치 (예 : 브라우저에서 위치 정보 가져 오기)를 자동으로 감지하도록 허용하는 것입니다. 그 데이터는 이상적으로 특정 반경 내에서 만들어진 게시물을 보는 것처럼 나중에 필터링 할 수 있습니다.GeoDjango이 프로젝트가 너무 많습니까?

저는 GeoDjango에 대해 조금 읽었습니다. 아마도이 프로젝트의 요구 사항보다 더 복잡한 경우 이라면 흥미로운 것으로 들릴 것입니다. 쿼리 측면이 유망 해 보입니다.
그러나 동료는 을 사용하여 수행 할 수있는 모든 작업을 제안했습니다. GeoDjango는 올바른 좌표를 얻기 위해 JavaScript 또는 JQuery가있는 Google Maps API를 사용하는 것이 똑같이 효율적입니다.

본질적으로 GeoDjango가 Google Maps API를 사용하여 얻은 이점을 보자면 상당히 간단한 프로젝트입니다. 내가 이미 기본 Django 프로젝트를 시작한 경우; GeoDjango를 통합하고 있습니다 문제가 있습니까? 나는 Django의 기본을 익히려고 아직도 시도하고 있으며 GeoDjango를 모험하고있는 초심자 개발자에게는 이 너무 많을 수 있습니다. 아니.

감사합니다.

답변

3

특정 위치 반경 내에서 위치 정보 게시물을 정확하게 찾으려면 지리적 위치 간의 거리를 계산해야합니다. 계산은 사소하지 않습니다. (작은 문법 보정 사용) Django docs을 인용하면 불행히도 지구가 평평하지 때문에 공간 데이터

거리 계산이 까다.

다행스럽게도 GeoDjango를 사용하면이 복잡성이 숨겨집니다. 거리 쿼리는 다음과 같이 간단하다 : 하나는 자바 스크립트/jQuery를 사용하여이 로직을 프로그래밍 할 수 있지만

qs = SouthTexasCity.objects.filter(point__distance_lte=(pnt, 7000)) 

, 당신이 이미 장고를 사용하고 있기 때문에 이유가 표시되지 않습니다. 다음과 같은 경우가 아니면 :

  1. 공간 데이터베이스를 사용할 수 없습니다. GeoDjango distance queries은 PostGIS, Oracle 또는 SpatiaLite를 데이터베이스로 사용하는 경우에만 사용할 수 있습니다. (즉, MySQL은 거리 쿼리를 지원하지 않습니다.)

  2. GeoDjango가 의존하는 geospatial libraries을 설치할 수 없습니다.

+0

@TylerErickson입니다. GeoDjango가 가장 좋은 방법 일 것 같습니다. 질문 : GeoDjango를 기존 프로젝트의 중간에 설치할 수 있습니까? –

+0

예. GeoDjango는 Django의 일부이므로 이미 부분적으로 이미 있습니다. 기존 데이터를 덤프 한 후 공간 데이터베이스를 사용하도록 전환하고 [지형 공간 라이브러리 종속성] (https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#)을 설치해야 할 수도 있습니다. geospatial-libs). 또한 기존 데이터 모델을 수정하여 [공간 필드 유형] (https://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/)을 활용할 수 있습니다. –

+1

MySQL (및 다른 비 공간 데이터베이스)는 좋은 이전 Haversin 수식을 사용하여 거리 쿼리를 수행 할 수 있습니다. [여기에 대한 좋은 설명과 예] (http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL). – Gady

관련 문제