1 year ago

#387788

test-img

mdl518

Convert CSV with WKT Polygon Geometry to Shapefile - Python

I am trying to convert a CSV file with WKT Polygon geometry to shapefile in Python, but cannot determine how to correctly integrate the geometry into a shapefile. Below is a segment of the CSV file:

    ID  Day Number  Hours      WKT
    1   10  2      [12,12,13]  POLYGON ((153.101112401 -27.797998206, 153.097860177 -27.807122487, 153.097715464 -27.8163131, 153.100598081 -27.821068293,...)

I am attempting to use the geopandas and shapely libraries and have found documentd to support conversion from CSV to Shapefile from Points geometry and using latitude/longtitude, but I cannot figure out how to do so without lat/lon and from Polygon geometry. When I attempted to plot the data, I get an "AttributeError: No geometry data set yet (expected in column 'geometry')". I can still generate a plot graphic, but there is no data associated with it. Once I can plot the data, I should be able to generate the desired shapefile output that preserves the attributes of the original CSV. Below is the the code I am using:

import pandas as pd
import geopandas as gpd
from shapely import wkt

test_file = pd.read_csv("C:\\Users\\mdl518\\Desktop\\sample_data.csv")  ## read the CSV
test_file['geometry'] = test_file.WKT.apply(wkt.loads)  ## load the WKT geometry
gdf = gpd.GeoDataFrame(test_file, geometry='geometry')  ## load CRS into Geodataframe

test_file_gdf.plot(markersize = 1.5, figsize = (10,10))  ## plot the data

## Obtaining the ESRI WKT
ESRI_WKT = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'

## Saving to shapefile
test_file_gdf.to_file(filename = "C:\\Users\\mdl518\\Desktop\\test_sample.shp", driver = "ESRI Shapefile", crs_wkt = ESRI_WKT)

I feel like this should otherwise be fairly straightforward, but I cannot figure out the missing steps in the geodataframe geometry integration, any assistance is most appreciated!

python

dataframe

csv

geopandas

shapefile

0 Answers

Your Answer

Accepted video resources