2017-02-03 11 views
0

저는 파이썬과 qgis의 초보자입니다.QGIS와 Python (geopandas) 간의 출력이 다릅니다.

교차로를 사용하여 두 개의 쉐이프 파일을 교차 시키려고했습니다. (다각형)

먼저 QGIS와의 교차점을 시도하고 작동합니다. (EPSG : 4326) QGIS picture

하지만 문제는 파이썬에서 교차하려고 시도했을 때 단 하나의 값만 반환된다는 것입니다. 무엇이 잘못 되었나요 ??

여기에 27000 개 값이 있습니다 내 코드

sb_4326 = buildings polygon 
sg_4326 = city_polygon 
import geopandas as gpd 
### 
### 
sg4326 = gpd.read_file('sg_4326/sg4326.shp') 
sb4326 = gpd.read_file('sb_4326/sb4326.shp') 
mm = sb4326.intersects(sg4326) 

Out[35]: 
0  False 
1  False 
2  False 
3  False 
4  False 
5  False 
6  False 
7  False 
8  False 
9  False 
10  False 
11  False 
12  False 
13  False 
14  False 
15  False 
16  False 
17  False 
18  False 
19  True 
20  False 
21  False 
22  False 
23  False 
24  False 
25  False 
26  False 
27  False 
28  False 
29  False 

입니다.

답변

0

geopandas의 동작이 부동 한 크기 (?)의 두 GeoSeries 일 때 무엇인지 확실하지 않습니다.

당신은 아마 원하는 :

sb4326.geometry.map(lambda building: any(sg4326.intersects(building)) 

이 한 번에 책자 하나의 전체 집합에 대해 각 건물을 테스트하고, 교차로의 anyTrue을 경우 True를 반환합니다.

매우 느리게 실행됩니다. QGIS가 더 빨리 실행되도록하기 위해 사용할 수있는 몇 가지 트릭이 있지만 이것은 출발점입니다.

+0

도움 주셔서 감사합니다. 하지만 그 코드를 사용할 때 오류가 발생했습니다. AttributeError : 'GeoDataFrame'객체에 'map'속성이 없습니다. –

+0

'.geometry' 호출을 추가하도록 편집되었습니다. –