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