2014-02-24 4 views
1

현재 사진과 관련된 데이터를 위치와 함께 Django를 사용하여 저장하는 postgres 데이터베이스가 있습니다. 위치는 GooglePlacesAPI- 을 통해 얻을 수있다Postgres에서 기존 JSON 필드를 PostGIS에서 사용하도록 변환

그래서 현재, 모든 사진은 이제 GooglePlacesAPI

에서 얻은 장소에 대한 JSON 정보를 포함하는 location 열이 https://developers.google.com/places/documentation/search (예를 들어, 응답에 대한 검색 응답 검색) I Postgres의 공간 기능을 사용하여 위치를 기반으로 쿼리하고 싶지만, 어떻게해야하는지, 어떤 스키마 변경이 필요한지 잘 모르겠습니다. Postgres 문서는 위치, 이름, 위도 및 기타 정보가 필요한 새 테이블이 있음을 나타냅니다. 그러면 모든 위치가 다른 테이블에 저장되고 외래 키가 참조됩니다. JSON을 테이블에 저장하려면 기본적으로 병합해야합니다.

그렇다면 다른 위치 데이터 (예 : Foursquare, FB 등)를 가져 와서 이전에 테이블 형식으로 변환 할 수 있도록 위치를 저장하는 것이 좋습니다. 저장.

답변

0

기하학은 특별하지 않습니다. 단지 다른 데이터 유형입니다. 따라서 기존 테이블에 기하학 컬럼을 추가하십시오. 설치 및 사용할 수 있다고 가정 PostGIS와 2.x를 :

ALTER TABLE mytable ADD COLUMN geom geometry(Point,4326); 

그런 다음 (실제로 데이터가이 비정질 열 내에서 구성되는 방법에 의존하는)을 location JSON 열에서 데이터를 추출하여 형상 데이터를 채 웁니다

UPDATE mytable SET 
    geom = ST_SetSRID(ST_MakePoint((location->>'lng')::numeric, 
           (location->>'lat')::numeric), 4326) 

그리고 시작해야합니다. 나중에 GiST 인덱스를 작성하고 다른 테이블이나 관심 장소와 함께 공간 쿼리를 수행하는 것이 좋습니다. 필요에 따라 geometry 데이터 형식 대신 geography 데이터 형식을 고려할 수도 있습니다.