Проблема
Я пытаюсь нанести набор точек на базовую карту. Ниже мой код. Однако он не отображает его правильно там, где он должен был отображаться на карте. Я добавил ниже ссылку Dropbox на файл csv, который я использую.
Ссылка Dropbox на файл csv
import pandas as pd
import geopandas
import matplotlib.pyplot as plt
%matplotlib inline
#read data from CSV
building = pd.read_csv('masteronlyfive.csv')
# convert coords to float type
building = building.astype({"lat": float, "long": float})
# convert to geodata series
building = geopandas.GeoDataFrame(towers, geometry=geopandas.points_from_xy(building.lat,building.long))
# set CRS
building.crs = {'init' :'epsg:4326'}
building.head()
# read basemap file and set CRS
world = geopandas.read_file("South_Africa_Polygon.shp")
world.crs = {'init' :'epsg:4326'}
# Plot basemap
ax = world.plot(color='white', edgecolor='black')
# plot points
building.plot(ax=ax, color='red')
plt.show()
What I have tried
I have taken the co-ordinates and re-coded them in a json format, instead of csv, so Im reading the data from a json array rather than doing a csv import, as such below and they work completely fine, its totally shocking for me.
import pandas as pd
import geopandas
import matplotlib.pyplot as plt
%matplotlib inline
#reading from json array
df = pd.DataFrame(
{'Country': ['building', 'building', 'building', 'building', 'building'],
'Latitude': [-28.506806, -27.463611, -29.192053, -28.871950, -27.242444],
'Longitude': [28.613972, 28.040001, 26.235583,27.873739, 28.838861]})
#creating geopandas points from the coordinates
gdf = geopandas.GeoDataFrame(
df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))
#reading the basemap file
world = geopandas.read_file("South_Africa_Polygon.shp")
# plotting the basemap
ax = world.plot(color='white', edgecolor='black')
# plotting the geodata points
gdf.plot(ax=ax, color='red')
plt.show()
Вот как это выглядит - и это правильно, когда он читает из импорта данных JSON
Что я мог делать не так, что одни и те же коорды отлично работают с JSON, но не с CSV.