PostGIS의 거대한 점 구름 레이저 데이터-저장 및 처리


14

PostGIS에 거대한 레이저 스캔 포인트 클라우드 데이터 세트를 저장하는 방법과 시간을 염두에두고 처리하는 방법이 궁금합니다. PointPostGIS 에는 지오메트리 객체 가 있습니다. 그러나 내가 아는 한, 각 포인트를 새로운 tupel에 저장하여 특정 포인트를 수백만 개 이상 저장하면 특정 포인트를 매우 느리게 검색 할 수 있습니다.

HSR Universtiy of Applied Sciences Rapperswill에서이 주제에 대해 논의한 논문을 찾았습니다. : 그것은 같은 데이터를 저장하는 세 가지 방법 제안 Whole data in one tupel, Each point in one tupel또는 Splitting Data into Blocks(가) 각 블록의 확장 잡고, 정보 테이블에 의해 참조됩니다. 세 번째 방법은 저장된 포인트를 찾는 데 가장 유용한 것처럼 보이므로 이미 경험이있는 사람이 있는지 궁금합니다.

논문은 여기에서 찾을 수 있습니다 : http://wiki.hsr.ch/Datenbanken/files/pgsql_point_cloud.pdf

마지막으로 PostgeSQL의 포인트 클라우드 방식을 다루는 것처럼 github의 프로젝트를 뒤흔들 었습니다. 불행히도 인터넷에 대한 정보는별로 없습니다. 그래서 같은 질문이 있습니다 : 누군가 이미 그것에 대해 경험을 했습니까? 그런 목적으로 사용할 수 있습니까?

프로젝트는 여기에서 찾을 수 있습니다 : https://github.com/pramsey/pointcloud

또한 다른 제안, 아이디어 또는 경험이 있다면 기뻐할 것입니다. 그러나 나는 비상업적 솔루션이 선호된다는 것을 인정해야한다.


1
당신이 의미하는 바가 무엇인지, 포인트 클라우드에서 어떤 종류의 정보가 필요한지 대략적으로 알 수 있습니까? 즉, XYZ와 강도 만 예를 들어 차단 된 MultipointZM에 저장 될 수 있거나 Point가 각 개별 포인트 측정에 대해 고유 한 값을 가져야하는 다른 속성 데이터에 저장 될 수 있습니까?
Torsti

1
나는 분류에 의해 10 x 10 미터 멀티 포인트에 lidar를 저장합니다. 우리는 지상 Z 값만 사용합니다
simplexio

1
@AndreSilva 목표는 데이터에서 도로 표면 프로파일을 생성하는 것입니다. 지금은 점을 DEM- 그리드로 변환하고 PostGIS를 사용하여 점을 래스터 블록 및 SAGA로 저장하여 최종적으로 프로파일을 작성했습니다. 테스트 목적으로 실행되지만 db 가져 오기 전에 데이터를 래스터 링하여 정확도가 떨어짐을 의미합니다. 또한 주어진 프로파일 라인으로 잘라낸 그리드 셀의 내보내기는 PostGIS에서 매우 느리게 진행됩니다 (ST_Union 덕분에). 비슷한 작업을위한 도구를 추천 할 수 있다면 좋을 것입니다.
knutella

1
@ til_b : 글쎄, 이것은 내가 말한 정확히 ... 좋은 발견 :)
knutella

1
나는 나 자신에게 같은 질문을했고, 작동하는 프로토 타입을 얻기 위해 몇 조각을 모았다. 지금까지 각각 약 20 개의 속성을 가진 수백만에서 수억까지의 확장 성 문제없이 훌륭하게 작동 합니다. 이 많은 포인트를 사용하면 영역 내에서 포인트를 찾는 데 몇 백 밀리 초가 걸립니다 . 타임 스탬프 (정확한 획득 시간)로 필터링하는 데 거의 같은 시간이 걸립니다. 전반적으로 성능은 "LiDAR 데이터 관리 파이프 라인; 공간 데이터베이스 인구에서 웹 응용 프로그램 시각화까지" 와 동일하거나 더 우수합니다 . 데이터는 DB로 압축됩니다 (약 1 : 2

답변:


5

귀하의 질문에 많이 있습니다. 짧은 대답은 그렇습니다. PostGIS에 거대한 포인트 클라우드 데이터를 저장하고 처리하는 데 완전히 사용할 수 있습니다. 우리는이를위한 완전한 시스템을 구축했습니다.

이 비디오의 숫자는 약간 오래되었지만 백엔드에서 처리하기 위해 파이썬을 통해 액세스 할 수있는 postgis에 TB / TB의 모바일 / 지상 및 항공 데이터가 있으며 데이터의 3D보기 및 다운로드를 허용하는 웹 프론트 엔드가 있습니다. https://vimeo.com/39053196

PostGIS에 데이터를 저장하는 방법과 액세스 방법에 따라 달라집니다. 항공 데이터에 대한 좋은 솔루션은 데이터를 어떤 방식으로 그리드 화하고 효율성을 위해 멀티 포인트를 사용하는 것입니다. 그러나 포인트 밀도가 미터당 500-30000 + 포인트 사이 일 수있는 모바일 또는 지상 데이터를 사용하는 경우에는이 방법이 작동하지 않습니다. 그런 다음 하드웨어와 예상되는 동시 사용자 수를 살펴 봅니다. 이에 대한 자세한 내용은 일부 논문 http://www.mendeley.com/profiles/conor-mc-elhinney/ 에서 확인할 수 있습니다 .


안녕하세요. 자세한 정보를 제공해 주셔서 감사합니다. 논문에서 제공되는 아이디어 / 테스트는 정말 유용합니다! 처음부터 끝까지 보았을 때, 그들은 이미 전체 해결 방법을 제공합니다. 추가 주셔서 감사합니다! 또한 비디오와 브라우저 기반 PC 뷰어는 매우 흥미롭고 매우 잘 작동하는 것 같습니다! 불행히도 나는 다른 것들에 대해 내 손을 단기적으로 얻었다. 그래도 곧 pc-data를 계속하고 싶습니다.
knutella April

Glimpse 프로젝트에는 다음과 같은 멋진 데모가 있습니다. ncg.nuim.ie/glimpse/auth/login.php
Kozuch

7

(답은 위의 나와 다른 사람들의 의견을 기반으로하며 실제로 테스트하지는 않았습니다)

포인트를 MultiPointZM으로 저장하십시오. 최상의 그리드 크기는 아마도 액세스 패턴에 따라 다르며 이에 대한 테스트가 필요합니다. 공간 인덱스가있는 일반 그리드는 쿼리를 매우 빠르게해야합니다. 3D 액세스가 중요한 경우 MultiPointZM은 2D 평면 그리드 대신 3D 블록 기반 (1) 일 수 있습니다 (PostGIS> = 2.0 인 경우). 빠른 3D 쿼리에 &&&를 사용할 수 있습니다.

그리드 패턴을 별도의 테이블에 저장할 수도 있습니다. 예를 들어 데이터를 업데이트하고 편집 후 MultiPointZM 블록이 경계 내에 있는지 확인하는 경우 유용합니다.

타임 스탬프 또는 다른 데이터 저장은 한 번에 한 블록에 대해서만 가능하지만, 범주 및 / 또는 속성이 너무 많지 않은 경우 각 블록을 속성별로 분류하여 일부 이진 / 범주 데이터를 저장할 수 있습니다.

데이터를 별도의 PointZM으로 저장 해야하는 경우 그리드 테이블 + B- 트리 인덱스의 외래 키는 공간을 사용하더라도 테이블을 직접 쿼리하는 것보다 특정 포인트 만로드하는 것이 훨씬 빠릅니다 (아마도) 인덱스.

(1) Z- 값의 범위가 작은 경우 (결국 도로 임) 이는 의미가 없습니다.


나는 당신의 '요약'이 이전에 논의 된 제안의 결론으로 ​​꽤 잘 맞았다 고 생각합니다. 말씀 드린대로 이러한 데이터를로드하는 '올바른'방법은 요구 사항과 제안 된 솔루션 내에서 파악해야합니다. 많은 아이디어 덕분에 불가능하지 않은 것으로 판명되었습니다. 이 문제에 대한 추가 작업에 많은 영감을주었습니다. 고마워요!
knutella
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.