Answers:
我建议使用OGR / GDAL,它是GDAL库的一部分。OGR支持虚拟格式,该格式允许通过XML文件进行规范。如果将Excel工作表转换为CSV,则可以生成VRT来访问数据。
假设您有这样的事情example.csv
:
Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island
您可以example.vrt
如下创建VRT :
<OGRVRTDataSource>
<OGRVRTLayer name="example">
<SrcDataSource>example.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>WGS84</LayerSRS>
<GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
</OGRVRTLayer>
</OGRVRTDataSource>
从GDAL 1.7开始,您还可以使用中的<Field>
元素另外指定属性字段的数据类型<OGRVRTLayer>
,如下所示:
<Field name="date" src="Year" type="Date" />
请记住,shapefile以DBASE IV格式存储属性,该属性在数据类型上的灵活性低于Excel。一旦指定了VRT文件,就可以使用普通的OGR工具链将数据转换为Shapefile:
ogr2ogr -f "ESRI Shapefile" example.shp example.vrt
不幸的是,#4是不可能的-shapefile规范允许单个投影(example.prj
在最后一步之后可以在此处查看)。
<Field>
标签。我想我会自己解决这个问题的:)
您可以使用QGIS (http://qgis.org)随附的Delimited Text插件加载文本文件,然后将其另存为shapefile。
我在网络帮助中寻找但未在“显示XY数据”上找到帮助页面,但过程很简单。
您只需要ArcGIS(for)Desktop的ArcView(Basic)许可级别即可。
总是有冒险的选择。您可以自己编写形状文件。ESRI发布了shapefile的规范,您可以在此处阅读:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
您可能还需要编写一个DBF文件。您可以在此处阅读有关格式的信息:
http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT
毫无疑问,这太过分了,但是它将为您带来对整个过程进行控制的优势。
如果要对x,y数据进行其他处理,则可以将数据加载到postgres中,并用geomfromtext和串联创建几何数据类型,然后使用pgsql2shp导出形状。这种方法还允许您将异构空间参考系统数据保留在另一列中,然后可以将其用于将所有点转换为db中的公共参考系统,然后再导出为形状。我意识到与ogr / gdal相比,这涉及更多的步骤,但是它将为您提供更多的灵活性。
怎样将CSV文件加载到spaceallite中,然后使用OGR或QGIS导出到shapefile呢?
http://www.gaia-gis.it/spatialite-2.2/index.html
您甚至可以直接从spacespaceite导出到shapefile。
http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1