Skip to content

Instantly share code, notes, and snippets.

@plablo09
Last active March 5, 2019 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save plablo09/9ea492866e7f6146c5adc5ae83f68dc0 to your computer and use it in GitHub Desktop.
Save plablo09/9ea492866e7f6146c5adc5ae83f68dc0 to your computer and use it in GitHub Desktop.
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
import fiona
#supongamos que tienes los tuits en un csv (las coordenadas en las columns "x" y "y"). Los lees con pandas
df = pd.read_csv('data.csv')
#conviertes las coordenadas en objetos Point
geometry = [Point(xy) for xy in zip(df.x, df.y)]
#Le pones proyección (lat, long en este caso)
crs = {'init': 'epsg:4326'}
#lo conviertes en geodataframe
geo_df = gpd.GeoDataFrame(df, crs=crs, geometry=geometry)
#Supongamos que los estados vienen en un shapefile
estados = gpd.read_file("/path/to/shapefile.shp")
#ya namás falta hacer el merge (spatial join)
puntos_estados = gpd.sjoin(geo_df, estados, how="inner", op='intersects')
#eso te deja un geodataframe con todos los atributos de las dos tablas unidos a través de la intersección,
# o sea, cada punto va a tener los atributos del estado en donde cae
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment