QGIS API에 공간 인덱스를 저장 하시겠습니까?


9

Qgis API를 사용하여 일부 shapefile에 대한 공간 인덱스를 만들려고합니다. Nathan Woodrow의 블로그 ( https://nathanw.net/2013/01/04/using-a-qgis-spatial-index-to-speed-up-your-code/ )에 설명 된 단계를 수행했으며 훌륭하게 작동합니다. :

layer = QgsVectorLayer(path, name, 'ogr')
idx = QgsSpatialIndex()
all_features = layer.getFeatures()
map(idx.insertFeature, all_features)

내 문제는 결과 파일 (.qix? .sbn? .sbx?)이 없다는 것입니다.

향후 공간 파일 사용자가이 공간 인덱스를 활용할 수 있도록이 공간 인덱스를 어떻게 저장합니까?

답변:


11

레이어의 모든 지형지 물에 대한 공간 인덱스를 만들려면 다음을 사용하십시오.

layer.dataProvider().createSpatialIndex()

.qix공간 인덱스 파일 이 생성 됩니다.


편집하다:

Matthias Kuhn 이 아래 설명에서 언급 한 것처럼 QgsSpatialIndex 클래스는 링크 한 블로그에서 볼 수있는 것처럼 일시적으로 만 사용됩니다. 반면 createSpatialIndex () 함수의 소스 및 결과에 대한 공간 인덱스 생성 qix셰이프 파일 용 파일.


2
영구 (파일 기반) 및 임시 런타임 인덱스 (QgsSpatialIndex)의 차이점을 강조하는 것이 좋을 것 같습니다.
Matthias Kuhn

1
고마워요! QgsSpatialIndex에 대한 정보 만 찾을 수 있습니다. createSpatialIndex는 내가 찾던 것입니다.
Lauref

@Lauref-굉장합니다. :)
Joseph

4가이 의견에 포괄적 인 글을 쓰려고 노력한 후에, 나는 항복하고 적절한 무언가를 위해 더 많은 것을 필요로한다는 것을 인정해야한다. 내가 말하고 싶은 것은 QgsSpatialIndex가 영구적이지 않은 정보는 추가 설명없이 이미 많은 정보를 제공한다는 것입니다.
Matthias Kuhn

@MatthiasKuhn-고마워요, 당신이 언급 한대로 간단한 설명을 포함하도록 게시물을 편집했습니다.)
Joseph
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.