Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I convert an excel spreadsheet (.xls) to a shapefile programmatically?

I have an excel spreadsheet I want to convert to an ESRI shapefile programmatically. It contains X and Y coordinates in two columns, as well as a variety of attribute data in other columns. The spreadsheet is in excel 97 format (i.e. not .xlsx).

I would like to be able to convert this to a point geometry shapefile, with each row's x,y pair representing a point. Ideally, I would like to have a third column specifying the coordinate system of the x,y coordinate pair, and have the excel file contain heterogenous coordinate systems.

How can I convert this excel spreadsheet (.xls) to a shapefile programmatically? Preferably in Python, but other implementations will be accepted.

like image 878
fmark Avatar asked Jul 05 '10 07:07

fmark


3 Answers

something like this?

import xlrd
book = xlrd_open_workbook("data.xls") 
sheet = book.sheet_by_index(0)  
data = [] #make a data store
for i in xrange(sheet.nrows):
  row = sheet.row_values(i)
  x=row[0]
  y=row[1]
  data.append(x,y)

import point_store
point_store.save('points-shifted.shp', [data], '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')
like image 135
ebt Avatar answered Sep 28 '22 21:09

ebt


There is a Python tutorial on creating a shapefile using GDAL here:

http://invisibleroads.com/tutorials/gdal-shapefile-points-save.html

You'll just need to replace the source data with the points from the Excel file - as Fabian pointed out there are libraries to read Excel files (or save it as a DBF).

Alternatively if you have ESRI's ArcMap, save the Excel as a DBF file (I can't remember if ArcMap reads Excel directly), and then add this DBF as an "Event Layer" using the X,Y fields to represent the points. ArcMap will display these as features and you can then right-click and export the layer to a shapefile.

like image 21
geographika Avatar answered Sep 28 '22 21:09

geographika


xlrd is a python module for reading Excel file, I haven't used it myself tough.

like image 27
Mad Scientist Avatar answered Sep 28 '22 22:09

Mad Scientist