我有一个excel电子表格,我想以编程方式转换为ESRI shapefile。它包含两列中的X和Y坐标,以及其他列中的各种属性数据。电子表格采用excel 97格式(即不是.xlsx)。
我希望能够将其转换为点几何shapefile,每行的x,y对代表一个点。理想情况下,我希望第三列指定x,y坐标对的坐标系,并使excel文件包含异构坐标系。
如何以编程方式将此Excel电子表格(.xls)转换为shapefile?最好是在Python中,但也可以接受其他实现。
答案 0 :(得分:5)
这样的事情?
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')
答案 1 :(得分:4)
这里有一篇关于使用GDAL创建shapefile的Python教程:
http://invisibleroads.com/tutorials/gdal-shapefile-points-save.html
您只需要用Excel文件中的点替换源数据 - 因为Fabian指出有读取Excel文件的库(或将其保存为DBF)。
或者,如果您有ESRI的ArcMap,请将Excel另存为DBF文件(我不记得ArcMap是否直接读取Excel),然后使用X,Y字段将此DBF添加为“事件图层”以表示点。 ArcMap会将这些显示为要素,然后您可以右键单击并将图层导出到shapefile。
答案 2 :(得分:2)
xlrd是一个用于读取Excel文件的python模块,我自己也没用过它。
答案 3 :(得分:1)
您可能希望GDAL / OGR库使用Python执行此操作,安装完成后,可以更轻松地使用ogr2ogr中所述的http://nautilus.baruch.sc.edu/twiki_dmcc/bin/view/Main/OGR_example#Converting_from_CSV_to_shapefile实用程序。
答案 4 :(得分:0)
Arcmap支持名为arcpy的库的Python。众所周知,Pandas的工作方式与Excel类似,可以轻松读取和处理数据。是的,有时它可以用于导出到.xls和.xlsx文件。我在大熊猫的DataFrame和Arcmap的shp之间编码了一个互换函数。它是这样的:
@Override
public boolean onTouchEvent(MotionEvent event) {
final float x = event.getX();
final float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (x > width - main_right.getWidth()
&& x < width - main_right.getWidth()
+ main_right.getWidth()
&& y > height
- (main_right.getHeight() + main_right.getHeight() / 2)
&& y < height
- (main_right.getHeight() + main_right.getHeight() / 2)
+ main_right.getHeight()) {
x += 1;
canvas_main.drawBitmap(image, (width / 2) + x2,
height - (image.getHeight() + image.getHeight() / 2),
paint);
} else {
x = 0;
}
return true;
}
return false;
}