PostGIS를 사용하여 기존 테이블의 경도 / 위도 좌표에서 POINT를 생성 하시겠습니까?


10

기존 테이블의 경도 및 위도 열을 사용하여 포인트만들고 싶습니다 .
다음은 ST_MakePoint 설명서에 대한 링크 입니다.

내 테이블은 다음과 같습니다.

CREATE TABLE sysinst.bio (  
    oid INTEGER PRIMARY KEY,  
    longitude FLOAT,  
    latitude FLOAT,  
        geom GEOMETRY(POINT, 26913)
);

형상 열 추가 :

SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2);

내 쿼리는 다음과 같습니다.

UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913);

QGIS에서 볼 때 POINTS가 잘못 표시 되어도 반환 된 오류가 없습니다.

에 대해 (-97.5959, 21.1922), 나는 받는다(-109.4896, 0.0002)

어떤 제안?

더 쉬운 방법이 있다면이 작업을보다 효율적으로 수행 할 수 있습니다.


쿼리에 문제가 없습니다. 아마도 당신은 부분적으로 문제를 진단하려고 시도 할 수 있습니다-아마도 QGIS 부분을 제거하고 postgis에 명령 줄을 사용 하시겠습니까?
BradHards

어쩌면 이해하지 못하지만 UTM 기반이며 미터를 사용하는 CRS에 경도 위도 좌표 (-97, 21)를도 단위로 입력하는 것 같습니다. 이것을 SRID 26918로 선언하는 경우 long / lat 값은 해당 CRS에 있어야합니다. Long / Lat 값이도 단위이면 형상을 ST_SetSRID (MakePoint (...), 4326)로 작성하고 레이어를 26913으로 변환해야합니다.
Micha

@Micha, 귀하의 의견을 답변으로 추가해야합니다. 올바른 SRID가 OP 문제를 해결할 것으로 기대합니다. ST_Transform 을 추가하는 방법을 포함하고 예제를 포함하는 것도 도움이 될 수 있습니다 .
katahdin

답변:


16

어쩌면 이해하지 못하지만 UTM 기반이며 미터를 사용하는 CRS에 경도 위도 좌표 (-97, 21)를도 단위로 입력하는 것 같습니다. 이것을 SRID 26918로 선언하는 경우 long / lat 값은 해당 CRS에 있어야합니다. Long / Lat 값이도 단위이면 형상을 ST_SetSRID (MakePoint (...), 4326)로 작성하고 도면층을 26913으로 변환해야합니다. 따라서 도면층이 필요한 경우 모두 함께 배치 26913 년에 경도 / 위도 열의 각도가 CRS 4326 인 경우

UPDATE sysinst.bio SET geom = ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326),26913);

도와 주셔서 감사합니다. 나는 전에 그것에 대해 생각했을 것입니다 ...
Zach
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.