I am working with a shapefile which can be found here. I am doing some data visualisation and want to see if certain longitude and latitudes are within a certain polygon in the shapefile.
This is the code I am using to check if a latitude and longitude is in a polygon. This works as I do it for other data
//imports import geopandas as gpd import shapely from shapely.geometry import Point from shapely.geometry import shape from shapely.geometry import Polygon from descartes import PolygonPatch //load in shapemap soa_shape_map_path = './input/SOA2011_Esri_Shapefile_0/SOA2011.shp soa_shape_map = gpd.read_file(soa_shape_map_path) soa_geo_df=soa_shape_map['geometry'] soa_labels=soa_shape_map['SOA_LABEL'] reset_index(soa_geo_df) reset_index(soa_labels) soa_polys=soa_geo_df.values.T.tolist()
Then run through a set of longitude and latitudes in a dataframe to get what area it is part of
def check_df(df, polys, areas): # df contains crime data # polys contains all the paths dataframes containing the polygons # create a Polygon object from each of the dataframes for index, row in df.iterrows(): lat = row["Latitude"] lng = row["Longitude"] point = Point((lng, lat)) for row_idx, poly in enumerate(polys): if point.within(poly): df.at[index, "Areas"] = areas[row_idx] print("ADDED") return df
This never works because my longitude and latitude for df is always between 53/55 as it is Northern Ireland. When I check what the x and y co-ordinates are for soa_shape_map_path I get this
As you can tell, 54 is not even close to this number.
For my other shapefile map set I get this picture
There definitely is a way to get the values as when I open the program, add the shp file in a layer and add an open street map it gives this
I have watched a couple YouTube videos and posts already but can not get what I need