Imposm은 OpenStreetMap 데이터를 가져오는 도구입니다. PBF 파일을 읽고 데이터를 PostgreSQL/PostGIS로 가져옵니다. 또한 OSM의 최신 변경 사항으로 데이터베이스를 자동으로 업데이트할 수도 있습니다.
렌더링(예: 타일 생성 또는 WMS 서비스)에 최적화된 데이터베이스를 생성하도록 설계되었습니다.
Imposm >=3은 Go로 작성되었으며 이전 Python 구현을 완전히 다시 작성했습니다. 구성/매핑 및 캐시 파일은 Imposm 2와 호환되지 않지만 유사한 아키텍처를 공유합니다.
Imposm의 개발은 Omniscale의 후원을 받습니다.
Imposm은 작성자가 프로덕션에서 사용하고 있습니다. PostGIS와 같은 종속성과의 향후 비호환성을 해결하는 데 중점을 두고 적극적으로 유지 관리됩니다. 그러나 최종 사용자 지원 능력은 없으며 기존 범위를 벗어나는 새로운 기능은 개발되지 않습니다.
고성능: 처음부터 병렬입니다. 구문 분석 및 처리를 사용 가능한 모든 CPU 코어에 분산합니다.
사용자 정의 데이터베이스 스키마: 다양한 데이터 유형에 대한 테이블을 생성합니다. 이를 통해 WMS 또는 타일 서비스에서 렌더링 시 스타일링이 더 쉬워지고 성능이 향상됩니다.
값 통합: 예를 들어 부울 값 1
, on
, true
및 yes
는 모두 TRUE
됩니다.
태그 및 값으로 필터링: 렌더링/사용하려는 데이터만 가져옵니다.
효율적인 노드 캐시: 방법과 관계를 구축하려면 모든 노드를 저장해야 합니다. Imposm은 파일 기반 키-값 데이터베이스를 사용하여 이 데이터를 캐시합니다.
일반화된 테이블: 공간 해상도가 낮은 테이블을 자동으로 생성하므로 대규모 도로 네트워크를 낮은 해상도로 렌더링하는 데 적합합니다.
다각형으로 제한: 도시/주/국가 가져오기의 경우 가져온 형상을 GeoJSON의 다각형으로 제한합니다.
쉬운 배포: 공통 라이브러리(GEOS 및 LevelDB)에 대한 런타임 종속성만 있는 단일 바이너리입니다.
자동 OSM 업데이트: 최신 OSM 변경 사항을 자동으로 다운로드하고 가져오는 백그라운드 서비스( imposm run
)가 포함됩니다.
경로 관계: 경로를 포함한 모든 관계 유형을 가져옵니다.
테이블 네임스페이스(PostgreSQL 스키마) 지원
COPY FROM
사용하여 PostgreSQL에 대량 삽입을 사용합니다.일반화된 테이블 및 공간 인덱스 등이 포함된 78GB 플래닛 PBF(2024-01-29)의 Hetzner AX102 서버(AMD Ryzen 9 7950X3D, 256GB RAM 및 NVMe 스토리지)에서 diff 모드로 가져오는 데 약 7:30시간이 걸립니다. 이는 분별 업데이트가 준비된 가져오기용입니다. 비차이 모드는 훨씬 더 빠릅니다.
서버의 메모리 크기는 가져오려는 PBF 추출 크기의 약 2배인 것이 좋습니다. 예를 들어 현재(2024년) 78GB 행성 파일의 경우 192GB 이상의 RAM이 있어야 하고, 4GB 지역 추출의 경우 8GB가 있어야 합니다. 회전 디스크를 사용하여 가져오는 경우 훨씬 더 오래 걸리므로 권장되지 않습니다.
바이너리 릴리스는 GitHub에서 사용할 수 있습니다.
이러한 빌드는 x86 64비트 Linux용이며 추가 종속성이 필요하지 않습니다 . imposm
다운로드하고 압축을 풀고 시작하세요. 바이너리는 Debian 10 및 2022년 이후 버전의 기타 배포판과 호환됩니다. 이전 배포판을 지원해야 하는 경우 소스에서 빌드할 수 있습니다.
몇 가지 종속성이 있습니다.
Go가 필요합니다. 1.17 이상이 권장됩니다.
다른 종속성은 libleveldb 및 libgeos입니다. Imposm은 이러한 라이브러리의 최신 버전으로 테스트되었지만 이전 버전에서도 성공할 수 있습니다. 유효하지 않은 형상을 처리할 때 훨씬 더 강력해졌으므로 GEOS >=3.2를 권장합니다.
Imposm을 설치하는 가장 빠른 방법은 다음을 호출하는 것입니다.
go install github.com/omniscale/imposm3/cmd/imposm@latest
Imposm을 ~/go/bin/imposm
에 다운로드, 컴파일 및 설치합니다. GOBIN
환경을 설정하여 위치를 변경할 수 있습니다.
권장되는 설치 방법은 다음과 같습니다.
git clone https://github.com/omniscale/imposm3.git
cd imposm3
make build
make build
Imposm을 로컬 경로에 빌드하고 바이너리에 버전 정보를 추가합니다.
go build ./cmd/imposm
사용하여 go to build imposm을 직접 사용하거나 설치할 수도 있습니다. 그러나 버전 정보는 설정되지 않습니다.
Go는 정적 바이너리로 컴파일되므로 Imposm은 Go에 대한 런타임 종속성이 없습니다. 배포를 위해 imposm
바이너리를 서버에 복사하기만 하면 됩니다. 하지만 위에 나열된 C/C++ 라이브러리는 여전히 필요합니다.
Linux용 바이너리 패키지를 빌드하는 방법에 대한 지침은 packaging.sh
참조하세요.
더 나은 성능을 위해서는 LevelDB >1.21을 사용해야 합니다. go build -tags="ldbpre121"
또는 LEVELDB_PRE_121=1 make build
사용하여 1.21 지원으로 빌드할 수 있습니다.
imposm
여러 하위 명령이 있습니다. 기본 가져오기에는 imposm import
사용하세요.
단순 가져오기의 경우:
imposm import -connection postgis://user:password@host/database
-mapping mapping.json -read /path/to/osm.pbf -write
대상 데이터베이스 매핑이 포함된 JSON 파일이 필요합니다. 매핑으로 무엇이 가능한지 알아보려면 example-mapping.json
참조하세요.
Imposm은 import
테이블 스키마 내에 모든 새 테이블을 생성합니다. 따라서 import.osm_roads
등이 있습니다. 테이블을 public
스키마로 변경할 수 있습니다.
imposm import -connection postgis://user:passwd@host/database
-mapping mapping.json -deployproduction
JSON 구성 파일에 몇 가지 옵션을 작성할 수 있습니다.
{
"cachedir": "/var/local/imposm",
"mapping": "mapping.json",
"connection": "postgis://user:password@localhost:port/database"
}
해당 구성을 사용하려면:
imposm import -config config.json [args...]
더 많은 옵션을 보려면 다음을 참조하세요.
imposm import -help
참고: TLS/SSL 지원은 Go의 TLS 구현에 재협상 지원이 없기 때문에 기본적으로 비활성화되어 있습니다. PGSSLMODE
환경 변수 또는 sslmode
연결 옵션을 require
또는 verify-full
로 설정하여 암호화를 다시 활성화할 수 있습니다(예: -connect postgis://host/dbname?sslmode=require
. 더 큰 가져오기에서 연결 오류를 방지하려면 서버에서 재협상 지원을 비활성화해야 합니다. PostgreSQL 서버 구성에서 ssl_renegotiation_limit
0으로 설정하면 됩니다.
최신 문서는 여기에서 찾을 수 있습니다: http://imposm.org/docs/imposm3/latest/
모든 질문에 대한 Google 그룹스의 메일링 리스트가 있습니다. [email protected]
으로 이메일을 보내 구독할 수 있습니다.
상업적 지원을 받으려면 Omniscale에 문의하세요.
소스 코드는 https://github.com/omniscale/imposm3/에서 확인할 수 있습니다.
https://github.com/omniscale/imposm3/issues에서 문제를 보고할 수 있습니다.
Imposm은 Apache License 2.0에 따라 오픈 소스로 출시됩니다. 라이센스를 참조하세요.
소스 코드로 포함된 모든 종속성은 BSD-ish 라이센스에 따라 릴리스됩니다. LICENSE.dep를 참조하세요.
바이너리 릴리스에 포함된 모든 종속성은 GEOS 패키지를 제외하고 BSD-ish 라이센스에 따라 릴리스됩니다. GEOS 패키지는 LGPL3으로 출시되며 동적으로 연결됩니다. LICENSE.bin을 참조하세요.
모든 단위 테스트를 실행하려면 다음 안내를 따르세요.
make test-unit
OSM 데이터를 가져오고 업데이트하고 데이터베이스 내용을 확인하는 시스템 테스트가 있습니다. 테스트 PBF 파일을 생성하려면 osmosis
필요합니다. 필요한 경우 모든 테스트 파일을 생성한 다음 테스트 자체를 실행하는 Makefile이 있습니다.
make test
단위 테스트를 건너뛰려면 make test-system
호출하세요.
경고: 로컬 PostgreSQL 데이터베이스( imposm_test_import
, imposm_test_production
및 imposm_test_backup
스키마)를 사용합니다. 표준 PGDATABASE
, PGHOST
등의 환경 변수를 사용하여 데이터베이스를 변경합니다.