PostGIS에서 기존 데이터의 SRID를 변경 하시겠습니까?


50

shapefile 데이터를 PostGIS로 가져 오는 동안 적절한 투영을 선택하지 않았습니다.

좌표를 변환하지 않고 데이터의 SRID를 어떻게 변경합니까?

답변:


83

이를 위해 한 줄 기능이 있습니다. 다음 SQL 쿼리를 사용하십시오.

select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;

그러나 당신이 나와 같다면, 당신은 낮은 수준의 미니어처 단계에 관심이있을 것입니다. 논리적으로 말하면, 위의 기능은 다음 4 단계 프로세스와 같습니다.

  1. geometry_columns 테이블에서 SRID를 필요한 값으로 업데이트하십시오.

  2. 다음 SQL 문을 사용하여 테이블에 대한 제약 조건을 삭제하십시오.

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. 다음 SQL 문을 사용하여 지오메트리의 SRID를 업데이트하십시오.

    UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);

  4. 다음 SQL 문을 사용하여 제약 조건을 다시 추가하십시오.

    ALTER TABLE mytable

    ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));


1
자세한 정보 및 링크는 postgis.org/docs/ST_SetSRID.html 을 참조하십시오
BradHards

13

PostGIS 2.x에서 지오메트리 열은 일반적으로와 같은 typmod를 사용 geometry(Point, 1234)합니다. 이를 위해 ALTER TABLE 을 사용 하여 한 단계에서 형상 열 유형을 직접 수정할 수 있습니다 .

예를 들어 geomin 의 SRID mytable를 WGS84 로 설정 하려면 ST_SetSRID를 사용 하십시오 .

ALTER TABLE mytable
  ALTER COLUMN geom
    TYPE geometry(Point, 4326)
    USING ST_SetSRID(geom, 4326);

이는 SRID 만 변경하지만 좌표 데이터는 변환하지 않습니다.


1
사소한 변경으로 지리 컬럼 에서도 작동 UpdateGeometrySRID하지만 지원하지 않습니다.
dsz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.