2013-03-07 3 views
8

PostGIS 지오메트리 (포인트, 4326) 열 (위치, SRID 4326 사용)이있는 postgresql에 테이블이 있고 SQL Alchemy를 사용하여 파이썬 응용 프로그램에서 테이블을 업데이트합니다 (열의 나머지 부분) 아무 문제없이.데이터베이스 쿼리없이 lat-long을 PostGIS 지오메트리로 변환

이제 위치 열을 업데이트해야하며 주어진 위치의 적절한 텍스트 표현을 사용하여 GEOAlchemy를 사용할 필요없이 SQL Alchemy를 사용하여 열을 업데이트 할 수 있음을 알고 있습니다. 예를 들어 열을 업데이트 할 수 있습니다. 값 '0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040'

북에 해당 33.9346343 길이 : 질문은 -118.0488106

: Python으로 계산하는 방법이이 '0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040'입력으로서이 (33.9346343를 -118.0488106)을 갖는 데이터베이스를 쿼리하지 않고? 또는 적절한 텍스트 입력을 사용하여 열을 업데이트하는 방법은 무엇입니까?

select st_setsrid(st_makepoint(-118.0488106, 33.9346343),4326) 

을하고 열을 업데이트 할 수있는 값을 얻을 수 있지만, 나는 그것을 피하려고 :

은 내가이 쿼리를 실행하기 위해 SQLAlchemy의를 사용할 수 있습니다 알고 있습니다.

미리 감사드립니다.

+1

왜 'your_able = your_field = st_setsrid (st_makepoint (-118.0488106, 33.9346343), 4326)'를 수정 하시겠습니까? –

+0

나는 그 종류의 업데이트를 실행하지 못하게하는 ORM 계층을 사용하고 있기 때문에 대신 개체를 데이터베이스에 저장하여 전달할 수 있으며이 시점에서 (파이썬에서) 값을 가져야합니다. 란. –

+0

PostGIS는 오픈 소스입니다. 소스 코드를 다운로드하고 해당 함수를 검색하여 파이썬에 다시 작성할 수 있습니다. –

답변

11

이 문제에 대한 해결책은 생각보다 쉽습니다. 위도 긴 텍스트 입력을 사용하여 필드를 업데이트하려면 내가 텍스트 할당의 SRID 정의 된 수행하는 데 필요한 모든 :

위치 = 'SRID = 4326; POINT (-118.0488106 33.9346343)'

이 뜻을 (점, 4326) 열 제대로 형상을 업데이트하고 테이블의 열의 값을 선별 할 때 하나를 것으로 예상된다 :

"0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040"

감사들!

+1

knex-postgis라는 플러그인에서 생성 된 다른 방법은 location = 'ST_geomFromText (\'Point (-118.0488106 33.9346343) \ ', )'를 수행하는 것입니다. 그러나 수동으로 수행하는 경우에는 이스케이프 문자열 – 1mike12

관련 문제