在 Python 中处理地理空间数据
Dani Arribas-Bel
Geographic Data Science Lab (University of Liverpool)

哪些城市位于巴西境内?
brazil = countries.loc[22, 'geometry']
cities[cities.within(brazil)]
name geometry
169 Brasília POINT (-47.91799814700306 -15.78139437287899)
238 Rio de Janeiro POINT (-43.22696665284366 -22.92307731561596)
239 São Paulo POINT (-46.62696583905523 -23.55673372837896)
但如果我们想知道每个城市位于哪个国家呢?


空间连接(SPATIAL JOIN) = 基于空间关系将一个图层的属性转移到另一个图层
joined = geopandas.sjoin(cities,
countries[['name', 'geometry']],
op="within")
joined.head()
name_left geometry name_right
0 Vatican City POINT (12.45338654497177 41.90328217996012) Italy
1 San Marino POINT (12.44177015780014 43.936095834768) Italy
226 Rome POINT (12.481312562874 41.89790148509894) Italy
2 Vaduz POINT (9.516669472907267 47.13372377429357) Austria
212 Vienna POINT (16.36469309674374 48.20196113681686) Austria
在 Python 中处理地理空间数据