Я пытаюсь объединить два кадра геоданных (хочу увидеть, в каком многоугольнике находится каждая точка).
Следующий код сначала выдает предупреждение («CRS does not match!
»), а затем ошибку («RTreeError: Coordinates must not have minimums more than maximums
»).
Что именно там не так? Системы координат CRS? Если да, то почему они загружаются по-разному?
import geopandas as gpd
from shapely.geometry import Point, mapping,shape
from geopandas import GeoDataFrame, read_file
#from geopandas.tools import overlay
from geopandas.tools import sjoin
print('Reading points...')
points=pd.read_csv(points_csv)
points['geometry'] = points.apply(lambda z: Point(z.Latitude, z.Longitude), axis=1)
PointsGeodataframe = gpd.GeoDataFrame(points)
print PointsGeodataframe.head()
print('Reading polygons...')
PolygonsGeodataframe = gpd.GeoDataFrame.from_file(china_shapefile+".shp")
print PolygonsGeodataframe.head()
print('Merging GeoDataframes...')
merged=sjoin(PointsGeodataframe, PolygonsGeodataframe, how='left', op='intersects')
#merged = PointsGeodataframe.merge(PolygonsGeodataframe, left_on='iso_alpha2', right_on='ISO2', how='left')
print(merged.head(5))
Ссылка на данные для воспроизведения: Shapefile, GPS-точки
.crs
GeoDataFrame.PolygonsGeodataframe
будет иметь CRS, указанный в шейп-файле, аPointsGeodataframe
не будет иметь CRS. Если у обоих одинаковый CRS, вы можете сделатьPointsGeodataframe.crs = PolygonsGeodataframe.crs
- person joris   schedule 23.12.2015