Essentials - Python Geospatial Analysis

A GeoDataFrame is just a Pandas DataFrame with a special column (usually geometry ) that stores shapely objects. You rarely create geometries by hand, but you must understand them.

Next week, I'll cover spatial autocorrelation (aka: "Is that cluster real or random?"). Until then, map something interesting. What geospatial project are you working on? Let me know in the comments below.

Geospatial data is everywhere. From tracking delivery trucks to analyzing climate change, location is the secret ingredient that makes data science actionable. Python GeoSpatial Analysis Essentials

# Check CRS print(world.crs) # EPSG:4326 (Lat/Lon) world_meters = world.to_crs('EPSG:3857') # Web Mercator Or better for area: world.to_crs('EPSG:3395') Calculate area in square kilometers world['area_km2'] = world_meters.geometry.area / 10**6 print(world[['name', 'area_km2']].head())

conda install geopandas folium shapely matplotlib # or pip (may require system GDAL) pip install geopandas folium shapely matplotlib Let's load a natural Earth dataset (Geopandas can download sample data). A GeoDataFrame is just a Pandas DataFrame with

import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) What is this? print(type(world)) # <class 'geopandas.geodataframe.GeoDataFrame'> print(world.head()) print(world.geometry.name) # 'geometry'

print(result['name']) # Should output "Brazil" Until then, map something interesting

# Our point of interest (somewhere in Brazil) point_of_interest = Point(-55.0, -10.0) We'll put the point into a tiny GeoDataFrame point_gdf = gpd.GeoDataFrame(geometry=[point_of_interest], crs=world.crs) "within" joins where the point is inside the polygon result = gpd.sjoin(point_gdf, world, how='left', predicate='within')