I have GeoDataFrame
that I am trying to plot in relation to 4 reference points. I'm creating the reference points as part of a separate GeoDataFrame
, combining them and then trying to plot the result. I am using the following code:
import pandas
import geopandas as gpd
from geopandas import GeoDataFrame
from shapely.geometry import Point
def dfTogpdf(df):
geometry = [Point(xy) for xy in zip(df.Lon, df.Lat)]
df = df.drop(['Lon', 'Lat'], axis=1)
crs = {'init': 'epsg:4326'}
return GeoDataFrame(df, crs=crs, geometry=geometry)
habitat = gpd.read_file('desktop/species_19377/species_19377.shp')
latitude = [90, -90, 0, 0]
longitude = [0, 0, -179, 180]
frame = dfTogpdf(pandas.DataFrame({'Lat': latitude, 'Lon': longitude}))
framed = gpd.sjoin(frame, habitat, how="inner", op='intersects')
framed.geometry.plot()
However this gives me the following error: TypeError: invalid type comparison
I am able to plot habitat
and frame
without any issue, but after they have been combined, I am left with an empty GeoDataFrame
and not able to plot the result. Is there an extra step I need to take to plot my combined GeoDataFrames
?
Traceback:
C:\Users\Alec\Anaconda3\lib\site-packages\pandas\core\ops.py:798: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
result = getattr(x, name)(y)
Traceback (most recent call last):
File "<ipython-input-255-31bfbe140734>", line 1, in <module>
runfile('C:/Users/Alec/test.py', wdir='C:/Users/Alec')
File "C:\Users\Alec\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\Alec\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Alec/test.py", line 29, in <module>
framed.geometry.plot()
File "C:\Users\Alec\Anaconda3\lib\site-packages\geopandas\geoseries.py", line 253, in plot
return plot_series(self, *args, **kwargs)
File "C:\Users\Alec\Anaconda3\lib\site-packages\geopandas\plotting.py", line 273, in plot_series
poly_idx = np.asarray((geom_types == 'Polygon')
File "C:\Users\Alec\Anaconda3\lib\site-packages\pandas\core\ops.py", line 861, in wrapper
res = na_op(values, other)
File "C:\Users\Alec\Anaconda3\lib\site-packages\pandas\core\ops.py", line 800, in na_op
raise TypeError("invalid type comparison")
TypeError: invalid type comparison
habitat.head()
:
ID_NO BINOMIAL PRESENCE ORIGIN COMPILER YEAR \
index_right
0 19377 Ratufa bicolor 1 1 IUCN 2008
1 19377 Ratufa bicolor 1 1 IUCN 2008
2 19377 Ratufa bicolor 1 1 IUCN 2008
3 19377 Ratufa bicolor 1 1 IUCN 2008
4 19377 Ratufa bicolor 1 1 IUCN 2008
CITATION SOURCE \
index_right
0 IUCN (International Union for Conservation of ... None
1 IUCN (International Union for Conservation of ... None
2 IUCN (International Union for Conservation of ... None
3 IUCN (International Union for Conservation of ... None
4 IUCN (International Union for Conservation of ... None
DIST_COMM ISLAND SUBSPECIES SUBPOP TAX_COMMEN \
index_right
0 None Con Son None None None
1 None None None None None
2 None Bali None None None
3 None None None None None
4 None Billiton None None None
LEGEND SEASONAL \
index_right
0 Extant (resident) 1
1 Extant (resident) 1
2 Extant (resident) 1
3 Extant (resident) 1
4 Extant (resident) 1
geometry
index_right
0 POLYGON ((106.6621000000001 8.752335593000055,...
1 POLYGON ((113.1460000000001 -8.175164407999944...
2 POLYGON ((115.2932000000001 -8.102764407999928...
3 POLYGON ((97.17740000000003 2.226135593000038,...
4 POLYGON ((107.8088000000001 -2.535364406999975...
framed.head()
:
Empty GeoDataFrame
Columns: [geometry, index_right, ID_NO, BINOMIAL, PRESENCE, ORIGIN, COMPILER, YEAR, CITATION, SOURCE, DIST_COMM, ISLAND, SUBSPECIES, SUBPOP, TAX_COMMEN, LEGEND, SEASONAL]
Index: []
species_19377.shp is not a valid or recognized data source
. Your data may be corrupted.sjoin
that I can't plot.shp
file. Shapefile consists of different files in same name. Could you add outputs ofhabitat.head()
andframed.head()
to your question.