Я рекомендую використовувати 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
Ви можете створити VRT example.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" />
Майте на увазі, що shapefiles зберігають атрибути у форматі DBASE IV , який має меншу гнучкість у типах даних, ніж Excel. Після того, як ви вказали файл VRT, ви можете використовувати звичайний ланцюжок інструментів OGR для перетворення даних у Shapefile:
ogr2ogr -f "ESRI Shapefile" example.shp example.vrt
На жаль, номер 4 неможливий - специфікація filefile дозволяє провести одну проекцію (переглядається тут example.prj
після останнього кроку).