Як я можу конвертувати файл excel з стовпцями x, y у файл форми?


26

Як я можу конвертувати файл excel з стовпцями x, y у точковий файл форми?

Окрім правильного створення файлу форми, є декілька необов'язкових вимог:

  1. Типи стовпців (відповідно до специфікаторів формату Excel) слід зберігати (особливо типи дат)
  2. Імена стовпців слід брати із заголовка
  3. Я хотів би це зробити з командного рядка
  4. Якщо я можу включити неоднорідні просторові посилання на точки в третій колонці, я був би дуже радий :)

подивіться на цей gis.stackexchange.com/questions/86369/…
AndroidNijx

Відповіді:


24

Я рекомендую використовувати 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після останнього кроку).


Єдиною нижньою стороною цього є те, що я повинен визначити типи даних стовпців програмно для того, щоб написати <Field>тег. Я думаю, я
зрозумію це

Правильно. Якщо ви хочете автоматизоване рішення та маєте доступ до ArcGIS, ви можете зробити це за допомогою інструменту Додати XY Координати tinyurl.com/38jm55k , який повинен зробити цей крок для вас.
scw

Важливим питанням є отримання файлу Excel у форматі, що підходить спочатку для файлу форм ESRI - є обмеження щодо назв стовпців, довжини імен та якщо ви використовуєте інструмент Додати XY спосіб, яким ESRI автоматизує тип поля, який може викликати питань. webhelp.esri.com/arcgisdesktop/9.2/…
спг

3
Онлайн-сервіс, який допоможе побудувати належним чином відформатований файл саду
matt wilkie

9

Ви можете використовувати плагін "Розмежований текст", який постачається разом із QGIS (http://qgis.org ), щоб завантажити текстовий файл, а потім зберегти його як файл форми.


Мене часто мучать помилки аналізатора за допомогою цього інструменту. Будь-яка порада?
fmark

1
У вас є конкретні приклади?
gsherman

@fmark - Я також отримую ці помилки, і їх зазвичай пов’язано з MS Excel, що обробляє csv
dassouki

6

Хоча це не з командного рядка, ви можете зробити це в додатку ArcGIS. Починаючи з 9.3.1, просто додайте XLS безпосередньо в ArcMap. Зробіть шар XY події з XLS (тобто виберіть стовпці X, Y та встановіть просторову посилання ур). Потім експортуйте цей шар подій XY до нового .shp Це легко можна автоматизувати за допомогою простого сценарію python / VBA або моделі в modelbuilder . Раді допомогти в цьому базовому робочому процесі, якщо вам потрібна додаткова інформація.


1
Якщо ви використовуєте Python, ви можете запустити інструмент геообробки з командного рядка.
jswise

6

Я шукав, але не зміг знайти в довідці веб-сторінки довідки щодо відображення даних XY, але процес простий.

  1. Використовуйте Додати дані (або перетягніть з вікна Каталог), щоб переглянути робочий аркуш (у межах електронної таблиці) та додати його до своєї карти
  2. Клацніть правою кнопкою миші, щоб вибрати та використовувати Display XY Data, щоб додати рівень події
  3. Клацніть правою кнопкою миші на щойно створеному шарі подій та використовуйте дані | Експорт даних для створення файлу форми

Для цього вам потрібен лише рівень ліцензії ArcView (Basic) ArcGIS (for) Desktop.


Чи потрібно мені щось робити з верхніми стовпцями, які не входять до даних?
Зоран

Які два стовпці не входять до ваших даних? Описана нами процедура повинна використовувати будь-які довгі / широкі стовпці, які ви вибрали для створення геометрії точок, а потім, я думаю, зберігати решту як їх атрибути. Найкраще спробувати це, і якщо результат не такий, як очікувалося, опишіть спостережуване проти очікуваного.
PolyGeo

Подумайте, я неправильно прочитав верхню частину на двох - і я припускаю, що ви маєте на увазі верхній ряд (заголовки). Вони повинні просто стати іменами полів після додавання даних.
PolyGeo

Не впевнений, що це все-таки так, але пробіли у назвах заголовків у файлі Excel використовували справжній головний біль для Add XY.
Чад Купер

1
Завантаження файлів Excel безпосередньо в ArcGIS працює чудово - за винятком випадків, коли це не відбувається! На що слід звернути увагу: дати збиті, номери урізані. Перший крок усунення несправностей - це завжди експортувати в CSV усі стовпці, визначені як текст та завантаження, щоб замість цього побачити проблему. Це застереження вбік. Дисплей як X / Y працює дуже добре.
matt wilkie

4

Завжди є пригодний варіант. Ви можете написати файл форми самостійно. ESRI публікує специфікацію для форм-файлів, яку ви можете прочитати тут:

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Вам також потрібно буде написати файл DBF. Про формат ви можете прочитати тут:

http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT

Це, безперечно, надмірність, але це дало б вам перевагу мати контроль над усім процесом.


Я насправді прагну таким чином - я буду використовувати OGR замість того, щоб писати форму файл безпосередньо, хоча!
fmark

2
Excel, ймовірно, може писати DBF безпосередньо, хоча я мав різний рівень успіху, використовуючи ці DBF, як компонент DBF файлу форм.
mwalker

Excel не виписує файли dbf.
користувач30184

3

Я особисто вважаю за краще використовувати програму FME від Safe Software (http://www.safe.com), яка не тільки дає змогу нанести точки на значення XY, але й надає мені можливість перетворювати координати з однієї проекції в іншу перед графіком, уточнюйте тип роздільника, початковий рядок (якщо текстовий файл містить інформацію заголовка), додайте атрибути у випадку, якщо текстовий файл має X, Y, інформацію про атрибути для точкових даних. Якщо ви хочете візуалізувати ці дані в Google Планета Земля, ви можете записати їх у формат KML, вказавши також стиль точки KML. ~ СРГ


2

Якщо ви хочете виконати якусь іншу обробку даних x, y, ви можете завантажити дані в постгреси, скористайтеся geomfromtext з конкатенацією для створення типу даних геометрії, а потім використовуйте pgsql2shp для експорту до форми. Цей підхід також дозволить вам зберегти гетерогенні дані просторової системи відліку в іншому стовпці, який ви могли б потім використовувати для перетворення всіх ваших точок у загальну систему відліку в db перед експортом у форму. Я розумію, що це передбачає більше кроків, ніж ogr / gdal, але це дасть вам набагато більше гнучкості.


Я раніше використовував такий підхід, і він хороший. Я думаю, що мій постійний камінь спотикання тут надійно визначає типи даних Excel ....
fmark

1
Я припускаю, що ви можете написати щось у excel vba, щоб спочатку змінити стовпці так, щоб дата, x, y завжди були першими 3 стовпцями. Без якихось умовних назв стовпців, я думаю, було б важко повністю автоматизувати те, що ви маєте на увазі.
Джон Пауелл

1

А що з завантаженням 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


Spatialite може імпортувати файли Excel безпосередньо, якщо вони мають старий формат .xls (Excel 97-2003). Координати X і Y повинні бути перетворені в цілі геометрії з SQL після початкового імпорту.
користувач30184

Якщо ви не заперечуєте над використанням Java, ви можете використовувати проект POI, щоб зірвати файли excel, а потім скористатися GeoTools для написання нового
файлу форм

0

Для більш базового перетворення ви можете використовувати трансформатор 2Dpointreplacer в FME 2013. Потрібно вказати, в яких стовпцях знаходяться значення X і Y, і тоді FME перетворить ці значення, наприклад, у файл форми з точками.
Імена та типи стовпців можна встановити за потребою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.