지리 데이터 파일에서 불필요한 열을 제거 하시겠습니까?


10

불필요한 열이있는 GML 데이터가 있습니다. 파일 크기를 줄이기 위해 이러한 열을 제거하고 싶습니다. (명확하게 : 파일에 많은 점이 있으며 각 점에 메타 데이터가 첨부되어 있으며 모든 메타 데이터가 필요하지는 않습니다.)

많은 파일이 있기 때문에 명령 줄 에서이 작업을 수행하고 싶습니다.

을 사용하여 GML 파일을 다른 형식으로 변환 할 수 ogr2ogr있으므로 내 질문은 다음과 같습니다. 지리적 데이터 파일에서 열을 명령 줄에서 제거하는 가장 쉬운 방법은 무엇입니까?

저는 파이썬 프로그래머이므로 본능적으로 파일을 GeoJSON으로 변환 한 다음 Python의 JSON 구문 분석 방법을 사용하여 JSON 파일을 읽고 다시 작성합니다.

그러나 GDAL 도구 또는 이와 유사한 도구를 사용하는 더 직접적인 방법이있을 수 있습니다.

답변:


10

임시 파일 형식 인 셰이프 파일은 필요하지 않으며 GML 데이터를 변경할 수도 있습니다 (속성 이름 단축, 문자열을 최대 255 자로 자르기, DATETIME을 DATE로 변경 등).

원하지 않는 속성을 삭제하는 것이 아니라 원하는 속성을 선택하여 ogr2ogr을 사용합니다. SQLite SQL 방언은 기본 OGR 방언보다 표준이므로이 쿼리에 필요하지 않더라도 사용합니다.

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml

9

OGR SQL을 사용 하고 필드 삭제를 지원하는 OGR 형식을 선택 하여 필드를 삭제할 수 있습니다 . 불행히도 GML은이를 지원하지 않으므로 SHP와 같은 다른 형식을 통과해야합니다.

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp

GeoJSON 드라이버로 더 간단하고 유사한 작업을 수행 할 수있었습니다. ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" ALTER에서 파일 이름을 테이블로 사용하십시오.
vpipkt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.