QGIS和Python之间的不同输出(geopandas)

时间:2017-02-03 04:54:05

标签: python pandas shapefile qgis geopandas

我是python和qgis的初学者。

我试图通过使用交集来交叉两个shapefile。 (多边形)

首先,我尝试与QGIS交叉,它的工作原理。 (EPSG:4326) QGIS picture

但问题是,当我试图在python处相交时,只返回一个值。 怎么了?

这是我的代码

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

有27000个值。

2 个答案:

答案 0 :(得分:0)

我不确定当geopandas传递两个GeoSeries不等大小(?)时,sb4326.geometry.map(lambda building: any(sg4326.intersects(building)) 的行为是什么。

你可能想要:

True

这将逐个测试每个建筑物的整个区域,如果any的交叉点为True,则返回 <md-select ng-model="selectedSector" aria-label="select" onchange="filterCompanyList();"> <md-option ng-repeat="sector in sectors" value="{{sector.value}}"> {{sector.name}} </md-option> </md-select>

请注意,这将运行得相当慢。可以使用一些技巧使其运行得更快(QGIS可能使用),但这是一个起点。

答案 1 :(得分:0)

您可能想像这样使用overlay

gpd.overlay(sg4326, sb4326, how='intersection')

这将返回由两个数据框的交点形成的所有几何。

或者sjoin可以满足您的要求:

gpd.sjoin(sb4326, sg4326, how='inner', op='intersection')

这会将sg4326中所有相交的几何图形添加到sb4326的index_right列。