Добавление данных атрибутов в шейп-файл?

33

Я могу отобразить шейп-файл в openlayers, но мне нужно добавить некоторые атрибутные данные.

Я могу открыть файл dbf в Excel, но в Excel нет опции сохранить как обновленный файл как dbf.

Каков наилучший способ (или программное обеспечение) для добавления данных атрибутов в мой шейп-файл?

ChrisJ
источник
Вернитесь к более ранней версии Excel: MS убрала возможность записи .dbf файлов с последней версией! :-(
whuber
4
Open office и Quattro Pro могут редактировать и сохранять файлы dbf, просто не удаляйте строки и не перемещайте объекты, в противном случае файл индекса не позволит совпадать. Для этих задач используйте коммерческий или открытый исходный текст, редактирование значений ячеек не должно вызвать проблем
Что ж!!! И я думал, что мой вопрос был слишком прост для этого сайта! У меня не было возможности попробовать какие-либо из предложений, потому что я каким-то образом уничтожил свои программы для геосерверов и postgres ... :-( Поэтому, как только я верну свой пакет linux на 100%, я проверю все предложения Спасибо за принятие время, чтобы ответить Крис
ChrisJ

Ответы:

23

Используя QGIS, вы можете редактировать свой шейп-файл, добавляя новые столбцы и значения. Просто откройте шейп-файл, перейдите в Свойства> Атрибуты и добавьте новые столбцы.

В более новых версиях QGIS (2.x) «Атрибуты» называются «Поля»

doktoreas
источник
Я не думал об использовании QGIS, потому что на моем Linux-компьютере он (Copiapo) падает, когда я нажимаю «Получить плагин Python». Кто-нибудь знает, есть ли исправление для этого? А пока попробую добавить атрибуты с версией вдовы.
ChrisJ
Вы можете попытаться отладить проблему, как Ричард описывает здесь: osgeo-org.1803224.n2.nabble.com/…
underdark
QGIS позволяет вам добавлять новые столбцы, но заполнение нового столбца данными выглядит как точка-щелчок-ввод - действительно неэффективно! Я предлагаю использовать R как в ответе mdsummer ниже.
баха-кев
@ baha-kev Почему бы просто клик-точка-ввод? Не могли бы вы просто сделать что-то вроде этого урока?
ocean800
1
В QGIS 3.2.1 он находится в контекстном меню слоя> «Свойства ...»> категория «Исходные поля» в диалоговом окне.
ANDW
23

Используйте Rс foreignпакетом для изменения файла DBF:

library(foreign)
dbfdata <- read.dbf("file.dbf", as.is = TRUE)
## add new attribute data (just the numbers 1 to the number of objects)
dbfdata$new.att <- 1:nrow(dbfdata)

## overwrite the file with this new copy
write.dbf(dbfdata, "file.dbf")

Или прочитайте данные геометрии и атрибутов с помощью rgdalпакета (чтобы вы могли также изменить отношения и создать совершенно новый шейп-файл):

library(rgdal)
## read "/path/to/files/filename.shp"
shp <- readOGR("/path/to/files/", "filename")  

## add new attribute data (just the numbers 1 to the number of objects)
shp$new.att <- 1:nrow(shp)

## write out to a new shapefile
writeOGR(shp, "/path/to/files/", "filename2")  
mdsumner
источник
4

Я бы не рекомендовал использовать OpenOffice - или подобное приложение - вообще! Даррен Коуп, комментируя ответ на вопрос « Создание и управление DBF без Excel 2003 », сказал:

это то, что шейп-файлы очень расстраиваются, если вы идете и редактируете .dbf во внешней программе

dariapra
источник
3
это не обязательно так: я отредактировал многие шейп-файлы в OpenOffice и Excel без проблем: вам просто нужно знать об ограничениях формата (длины имен столбцов, типы данных и так далее).
Scw
@scw: можете ли вы дать какие-либо ссылки на информацию об ограничениях формата?
LarsH
2
Конкретные ограничения различаются в зависимости от используемого форматом программного обеспечения, но простейшими ограничениями являются: имена полей из 11 символов, отсутствие специальных символов или пробелов в именах полей, а также привязка к основным типам данных файлов DBF (а не к таким эзотерическим вещам, как «memo»). поля). Для получения более подробной информации см shapefile.py , в shapelib DBF API или этот фолиант на Xbase .
scw
4

Я объединил несколько шейп-файлов с помощью MS Access. Мне нужно было объединить некоторые данные из другого шейп-файла, и это работало довольно хорошо. Также это было быстро. Однако я думаю, что не у всех есть это программное обеспечение

Mykolas Simutis
источник
1
Я обычно использую Access или какую-либо другую форму SQL для манипулирования данными. Мне кажется, мне проще выполнить несколько запросов. Как упоминалось ранее, вам просто нужно следить за изменением фактического формата базы данных, это то, что лучше всего обрабатывается в реальном программном обеспечении ГИС.
MaryBeth
2

Использование QGIS приятно и обеспечивает надежный интерфейс для взаимодействия с DBF, но если вам нужно сделать что-то программно или просто хотите инструменты для проверки шейп-файлов, я подумал, что упомяну несколько других инструментов: я часто использую основные функции shapelib для изучения файлов DBF: он может добавлять, создавать и изменять как геометрию, так и атрибуты, я часто использую, dbfdump myshape.dbfчтобы получить быстрый обзор значений атрибутов.

Другой вариант, если вы заинтересованы в программном управлении DBF, это dbfpy , библиотека python (альтернатива foreignупоминаниям библиотеки mdsummer). Пример скрипта для добавления столбца:

import dbfpy

db = dbf.Dbf("myshape.dbf", new=False)
# add a new character field named 'myfield'
db.addField(("myfield", "C", 15))

db.close()
SCW
источник
2

как указал Энди в ссылке, на которую ссылался DARIAPRA, есть ADD-IN для Excel 2007, который может оказаться полезным - он позволяет сохранять в формате dbf. Вы можете найти его на этом веб-сайте:

http://savedbf.blogspot.com/

(Поскольку у меня есть Excel 2003, я никогда не пробовал, но слышал, что это было полезно.

Что касается манипулирования DBF вне ArcGIS - я делал это несколько раз. Иногда это работает, иногда нет. Мои два цента: если вы можете избежать внешних манипуляций, избегайте этого. Если вы имеете дело с неанглийским языком, избегайте его совсем - он имеет тенденцию путаться при редактировании вне ArcGIS).

jonatr
источник
2

В качестве альтернативы:

  1. откройте базу данных в MS Excel 2007/10
  2. Внесите изменения (добавьте столбцы, заполните данные и т. Д.) И сохраните как xls / xlsx
  3. Перейдите к местоположению xls / xlsx в ArcCatalog, щелкните правой кнопкой мыши по рабочему листу и выберите «Экспорт»> «В базу данных» (один)
  4. Переименуйте выходной файл DBF, как требуется
veedub
источник
2

Я обычно использую R (проверьте ответ mdsomners), но я не рекомендовал бы изучать это, если это единственное, что вы хотите сделать. Я думаю, что лучшим подходом было бы использование ГИС-программы для создания полей, а затем попытаться редактировать их с помощью openoffice.

Что еще более важно, вы должны подумать, нужно ли вам редактировать все поля таблицы атрибутов напрямую, или вы можете присоединить к ней другие таблицы. Последнее может быть сделано в большинстве программ ГИС, например, SAGA GIS

http://www.saga-gis.org/saga_modules_doc/shapes_tools/index.html

johanvdw
источник
Согласовано. Каждый раз, когда я добавляю / меняю данные, мне интересно, есть ли более простой способ.
MaryBeth
1

Open Office Calc позволяет читать и записывать файлы DBF. Но решение Лкасагранде с использованием QGIS должно быть более безопасным.

Подземье
источник