Как я могу преобразовать файл Excel с x, y столбцами в точечный шейп-файл?
Есть несколько необязательных требований в дополнение к правильному созданию шейп-файла:
- Типы столбцов (согласно спецификаторам формата Excel) должны быть сохранены (особенно типы даты)
- Имена столбцов должны быть взяты из заголовка
- Я хотел бы сделать это из командной строки
- Если бы я мог включить гетерогенные пространственные привязки для точек в третьем столбце, я был бы очень рад :)
Ответы:
Я бы рекомендовал использовать OGR / GDAL , который является частью библиотеки GDAL . OGR поддерживает виртуальный формат, который позволяет спецификацию через файл XML. Если вы конвертируете свой лист Excel в CSV, вы можете создать VRT для доступа к данным.
Предполагая, что у вас есть что-то вроде этого
example.csv
:Вы можете создать VRT
example.vrt
следующим образом:Начиная с GDAL 1.7, вы можете дополнительно указать типы данных полей атрибутов, используя
<Field>
элемент внутри<OGRVRTLayer>
, например:Помните, что шейп-файлы хранят атрибуты в формате DBASE IV , который обладает меньшей гибкостью в типах данных, чем Excel. После того, как вы определили свой VRT-файл, вы можете использовать обычный набор инструментов OGR для преобразования данных в Shapefile:
К сожалению, # 4 невозможен - спецификация шейп-файла допускает одну проекцию (которую можно увидеть здесь
example.prj
после последнего шага).источник
<Field>
тег. Я думаю, что я выясню это самостоятельно :)Вы можете использовать плагин с разделителями текста, который поставляется вместе с QGIS (http://qgis.org ), чтобы загрузить текстовый файл и затем сохранить его как шейп-файл.
источник
Хотя это и не из командной строки, вы можете сделать это в ArcGIS App. Начиная с 9.3.1, просто добавьте XLS прямо в ArcMap. Создайте XY Event Layer из XLS (то есть выберите столбцы X, Y и установите пространственную привязку ur). Затем экспортируйте этот XY Event Layer в новый .shp. Это можно легко автоматизировать с помощью простого сценария на языке Python / VBA или модели в построителе моделей. , Буду рад помочь вам в этом базовом рабочем процессе, если вам нужно больше информации.
источник
Я искал, но не смог найти страницу справки по отображению данных XY в веб-справке, но процесс прост.
Для этого вам нужен только уровень лицензии ArcView (Basic) для ArcGIS (for) Desktop.
источник
Там всегда авантюрный вариант. Вы можете написать файл формы самостоятельно. ESRI публикует спецификации для шейп-файлов, которые вы можете прочитать здесь:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Вам также может понадобиться написать файл DBF. Вы можете прочитать о формате здесь:
http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT
Это, несомненно, излишне, но это даст вам преимущество контроля над всем процессом.
источник
Я лично предпочитаю использовать FME от Safe Software (http://www.safe.com), который не только позволяет мне наносить точки из значений XY, но и дает мне гибкость для преобразования координат из одной проекции в другую перед построением, укажите тип разделителя, начальная строка (в случае, если текстовый файл содержит информацию заголовка), прикрепление атрибутов, если в текстовом файле есть X, Y, информация об атрибутах для данных точек. Если вам нравится визуализировать эти данные в Google Планета Земля, вы можете записать их в формате KML, указав при этом стиль точек KML. ~ SRG
источник
Если вы хотите выполнить некоторую другую обработку данных x, y, вы можете загрузить данные в postgres, использовать geomfromtext с конкатенацией для создания типа данных геометрии, а затем использовать pgsql2shp для экспорта в форму. Этот подход также позволит вам сохранить гетерогенные данные системы пространственной привязки в другом столбце, который вы затем сможете использовать для преобразования всех ваших точек в общую систему координат в БД перед экспортом в форму. Я понимаю, что это включает в себя больше шагов, чем OGR / GDAL, но это даст вам гораздо больше гибкости.
источник
Как насчет загрузки ваших CSV-файлов в spatiallite и последующего использования OGR или QGIS для экспорта в шейп-файл.
http://www.gaia-gis.it/spatialite-2.2/index.html
Вы даже можете напрямую экспортировать из пространственного объекта в шейп-файл.
http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1
источник
Для более простого преобразования вы можете использовать преобразователь 2Dpointreplacer в FME 2013. Необходимо указать, в каких столбцах расположены значения X и Y, а затем FME преобразует эти значения, например, в файл формы с точками.
Имена и типы столбцов могут быть установлены по мере необходимости
источник