Last active
July 18, 2024 00:31
-
-
Save nygeog/2731427a74ed66ca0e420eaa7bcd0d2b to your computer and use it in GitHub Desktop.
Read a CSV with Pandas and set as GeoDataFrame with geopandas and save as Shapefile with fiona
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
from geopandas import GeoDataFrame | |
from shapely.geometry import Point | |
import fiona | |
df = pd.read_csv('data.csv') | |
geometry = [Point(xy) for xy in zip(df.x, df.y)] | |
crs = {'init': 'epsg:2263'} #http://www.spatialreference.org/ref/epsg/2263/ | |
geo_df = GeoDataFrame(df, crs=crs, geometry=geometry) | |
geo_df.to_file(driver='ESRI Shapefile', filename='data.shp') | |
# https://gis.stackexchange.com/questions/204201/geopandas-to-file-saves-geodataframe-without-coordinate-system | |
# http://geopandas.org/io.html#writing-spatial-data | |
# https://gis.stackexchange.com/questions/174159/convert-a-pandas-dataframe-to-a-geodataframe |
To readers: {'init': 'epsg:2263'} is just one of the many options. For GPS points, you should replace line 9 by
crs = "+init=epsg:4326"
or
crs = {'init': 'epsg:4326'}
Hi,
How could this be achieved if the variable is a multipoint instead of a point?
Many thanks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, many thanks for this. Please help with the reverse, i.e. convert shape file to csv. Thanks, Aziz