имя_shp-файла -> атрибут (пакетно, подпапки)
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
имя_shp-файла -> атрибут (пакетно, подпапки)
есть много шейпов.
как им можно добавить имя_файла в атрибуты пакетно?
спасибо.
UPD
как быстрое близкое к цели решение использовал скрипт, который пишет в поле полный путь
http://arcscripts.esri.com/details.asp?dbid=16093 (Python+cmd)
нашел еще...
attribute=filename for multiple shapefiles (VB)
http://forums.esri.com/Thread.asp?c=93& ... sgid878479
подскажите, пожалуйста, последовательность действий для запуска подобного скрипта.
Filename Insert (Python)
http://arcscripts.esri.com/details.asp?dbid=14534
требует pywin32. запустился, что-то делал, поле не добавил.
UPD: добавил в тему "подпапки"
как им можно добавить имя_файла в атрибуты пакетно?
спасибо.
UPD
как быстрое близкое к цели решение использовал скрипт, который пишет в поле полный путь
http://arcscripts.esri.com/details.asp?dbid=16093 (Python+cmd)
нашел еще...
attribute=filename for multiple shapefiles (VB)
http://forums.esri.com/Thread.asp?c=93& ... sgid878479
подскажите, пожалуйста, последовательность действий для запуска подобного скрипта.
Filename Insert (Python)
http://arcscripts.esri.com/details.asp?dbid=14534
требует pywin32. запустился, что-то делал, поле не добавил.
UPD: добавил в тему "подпапки"
Последний раз редактировалось oleg 01 авг 2011, 23:56, всего редактировалось 1 раз.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
Есть текстовое поле с полным (путь+имя) именем файла. Вида D:\temp\name.shp
Как можно ArcGIS Field Calculator'om удалить путь (D:\temp\)? Оставить только имя (name.shp).
Подскажите, пожалуйста, как можно изменить этот скрипт, так, чтобы он только имя добавлял.
Спасибо!
Как можно ArcGIS Field Calculator'om удалить путь (D:\temp\)? Оставить только имя (name.shp).
Подскажите, пожалуйста, как можно изменить этот скрипт, так, чтобы он только имя добавлял.
Спасибо!
UPD
как быстрое близкое к цели решение использовал скрипт, который пишет в поле полный путь
http://arcscripts.esri.com/details.asp?dbid=16093 (Python+cmd)
-
- Активный участник
- Сообщения: 178
- Зарегистрирован: 16 июл 2008, 09:56
- Репутация: 1
- Откуда: Москва
Re: имя_shp-файла -> атрибут (?)
Я, например, ни питоном, ни другими профильными языками не владею, поэтому делаю по другому- загружаю shp в postgis, там работаю тем чем умею с базой данных, и выгружаю обратно в shp.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
Привет! Подниму тему, тк задача снова стала актуальной...
Под ArcGIS 10 перестал работать скрипт "Add complete path to multiple shapefiles" (см. выше), добавляющий в новое поле *.shp полный путь к файлу. Скрин с сообщением в аттаче. Под ArcGIS 9 - всё так же работает, но тк перешли на 10-ку нет возможности использовать.
- Просьба подсказать метод исправления для ArcGIS 10 или направления поиска.
- Подскажите, пожалуйста, альтернативные решения (предпочтительнее открытые).
Спасибо.
Под ArcGIS 10 перестал работать скрипт "Add complete path to multiple shapefiles" (см. выше), добавляющий в новое поле *.shp полный путь к файлу. Скрин с сообщением в аттаче. Под ArcGIS 9 - всё так же работает, но тк перешли на 10-ку нет возможности использовать.
- Просьба подсказать метод исправления для ArcGIS 10 или направления поиска.
- Подскажите, пожалуйста, альтернативные решения (предпочтительнее открытые).
Спасибо.
- Вложения
-
- gp.AddField_managemen_AttributeError.png (10.65 КБ) 12527 просмотров
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: имя_shp-файла -> атрибут (?)
А вы для каждой геометрии дописываете путь до файла в атрибуты или только к первой?
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
Voltron, подразумевал конечное решение в виде инструмента или скрипта (подобная задача, судя даже по наличию скрипта под Arc9 - распространена), чтобы можно было "запустить". Буду признателен за помощь. Спасибо, попробую покопать в ogr-направлении...
Bishop, - для каждой.
Bishop, - для каждой.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
Код: Выделить всё
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, fnmatch
from osgeo import ogr
def main():
rootPath = '/home/rda/shp'
driver = ogr.GetDriverByName('ESRI Shapefile')
fname = 'src'
for root, dirs, files in os.walk(rootPath):
shpfiles = fnmatch.filter(files, '*.shp')
if (len(shpfiles) != 0):
for filename in shpfiles:
source = driver.Open(os.path.join(root,filename), 1)
layer = source.GetLayer()
new_field = ogr.FieldDefn(fname, ogr.OFTString)
new_field.SetWidth(255)
layer.CreateField(new_field)
feat = layer.GetNextFeature()
while feat is not None:
feat.SetField(fname, filename)
layer.SetFeature(feat);
feat = layer.GetNextFeature()
source.Destroy()
return 0
if __name__ == '__main__':
main()
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
DR, спасибо!
При запуске этого скритпта OSGeo4W Shell говорит о несовместимости версий python25.dll и Python (сообщение на скрине в аттаче). Подскажите, пожалуйста, как можно исправить?
Python version: 2.5.2 (r252:60911, Feb 21 2008, 13:11:45).
Ставил с помощью OSGeo4W Installer. WinXP, параметры по умолчанию.
Не получилось найти лог OSGeo4W Shell (C:\OSGeo4W\OSGeo4W.bat). Обнаружил лишь лог инсталляции (C:\OSGeo4W\var\log\setup.log). Возможно запись лога можно как-то включить?
При возможности попробую запустить скрипт на других конфигурациях и расскажу о результатах.
При запуске этого скритпта OSGeo4W Shell говорит о несовместимости версий python25.dll и Python (сообщение на скрине в аттаче). Подскажите, пожалуйста, как можно исправить?
Python version: 2.5.2 (r252:60911, Feb 21 2008, 13:11:45).
Ставил с помощью OSGeo4W Installer. WinXP, параметры по умолчанию.
Не получилось найти лог OSGeo4W Shell (C:\OSGeo4W\OSGeo4W.bat). Обнаружил лишь лог инсталляции (C:\OSGeo4W\var\log\setup.log). Возможно запись лога можно как-то включить?
При возможности попробую запустить скрипт на других конфигурациях и расскажу о результатах.
- Вложения
-
- version_conflict.png (15.34 КБ) 12368 просмотров
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: имя_shp-файла -> атрибут (пакетно, подпапки)
Даже не знаю чем помочь, сейчас попробовал на машине с Windows - завелось без проблем. Может переустановить? Еще можно тут спросить.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (?)
Попробовал на других машинах - всё ОК. Из-за чего возникают сложности с конфликтом версий (выше) пока сложно сказать - очень разные конфигурации.oleg писал(а):При возможности попробую запустить скрипт на других конфигурациях и расскажу о результатах.
DR, если не очень сложно, еще одна просьба по этому скрипту. Можно ли сюда же добавить и добавление пути? Те чтобы на выходе были отдельными полями "путь", "имя файла". Спасибо.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: имя_shp-файла -> атрибут (пакетно, подпапки)
Код: Выделить всё
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, fnmatch
from osgeo import ogr
def main():
rootPath = '/home/rda/shp'
driver = ogr.GetDriverByName('ESRI Shapefile')
fname = 'src'
path = 'path'
for root, dirs, files in os.walk(rootPath):
shpfiles = fnmatch.filter(files, '*.shp')
if (len(shpfiles) != 0):
for filename in shpfiles:
source = driver.Open(os.path.join(root,filename), 1)
layer = source.GetLayer()
#Create new field for file name
fname_field = ogr.FieldDefn(fname, ogr.OFTString)
fname_field.SetWidth(255)
layer.CreateField(fname_field)
#Create new field for path
path_field = ogr.FieldDefn(path, ogr.OFTString)
path_field.SetWidth(255)
layer.CreateField(path_field)
feat = layer.GetNextFeature()
while feat is not None:
feat.SetField(fname, filename)
feat.SetField(path, root)
layer.SetFeature(feat);
feat = layer.GetNextFeature()
source.Destroy()
return 0
if __name__ == '__main__':
main()
По поводу ошибки запуска скрипта - попробуйте запустить, указав не просто имя файла, а так:
Код: Выделить всё
python path2field.py
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: имя_shp-файла -> атрибут (пакетно, подпапки)
DR, спасибо!
Проверил вариант запуска с "python" - работает!
Проверил вариант запуска с "python" - работает!
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot] и 1 гость