Страница 2 из 2
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 02 авг 2011, 11:29
Voltron
oleg писал(а):Тикет на эту тему для QGIS создал.
Добавлю.
#4127
oleg писал(а):Подскажите, пожалуйста, что имеется в виду под ищью-типом "bounty" в трекере? Не "wishes" случайно?
Нет, это не «wishes». Это ошибки, исправление которых финансируется из специального «фонда». Почитать об этом можно
здесь
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 03 авг 2011, 06:18
Denis Rykov
Код: Выделить всё
import os,fnmatch
def main():
rootPath = 'c:/personal/mcd45/'
isFirst = True
for root, dirs, files in os.walk(rootPath):
shpfiles = fnmatch.filter(files, '*.shp')
if (len(shpfiles) != 0):
for filename in shpfiles:
if (isFirst):
os.system('ogr2ogr merged.shp %s' % (os.path.join(root, filename)))
isFirst = False
else:
os.system('ogr2ogr -update -append merged.shp %s' % (os.path.join(root, filename)))
return 0
if __name__ == '__main__':
main()
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 07:10
Boris
Теперь когда задача решена, я позволю себе вопрос, а при наличии программы, которая объединяет два SHP файла, почему с самого начала не использовались средства командной строки?
Подозреваю, что речь шла о Windows, а в нем(ней-них?) рекурсивный обход дерева каталогов встроен в командную строку.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 09:03
Denis Rykov
Решение на питоне - кроссплатформенно.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 12:45
Boris
_DR_ писал(а):Решение на питоне - кроссплатформенно.
Это я не спорю. Но начальный вопрос был с указанием на ArcGIS, там с множественностью плотформ, как-то сильно не очень.
Кроме того, не верю я, что это Winsows такие умные, что команду FOR для своего DOS-интерфейса сами придумали. А если FOR и ogr2ogr есть на разных платформах, то и решение с рекурсивным вызовом - то же кроссплатформенное.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 12:59
Denis Rykov
Не совсем понимаю - реализация for есть в командных интерпретаторах различных ОС, но синтаксис его использования - разный, как такое решение можно назвать кросс-платформенным?
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 13:09
Александр Мурый
В GDAL'овском
FAQVector есть примеры пакетного объединения шейпов на Windows (с пом. цикла
for...do).
P.S.
Кроссплатформенность
Согласен с _DR_, скрипты с использованием разные реализаций циклов в командных интерпретаторах (коих десятки) далеко не всегда будут кроссплатформенными, в отличие от скриптов на питоне.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 16:35
Boris
я еще раз перечитал вопрос в начале. там был вопрос "как". ответ - "рекурсивное повторение программы ogr2ogr с использованием стандартных средств командной строки" - универсален. задачу решает. применим ко всем ОС, где есть GDAL. О кроссплатформенности не было не слова. Если уж точно говорить, то и python присутствует не на всех машинах, где есть ogr2ogr.
IMHO "универсальность" - она посильнее "кроссплатформенности" будет. Мы ведь в разделе "общие вопросы", а не "я - новичок".
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 16:56
Александр Мурый
Итак, немного продлим
удовольствие от спора тему
"Универсальность" -- понятие скорее общефилософское, а вот "кроссплатформенность" --- чисто техническое, так? Наверное, они соотносятся по-разному в каждом конкретном случае.
Если уж точно говорить, то и python присутствует не на всех машинах, где есть ogr2ogr.
Ой ли..?
Если сравнить
www.python.org/about/ и
trac.osgeo.org/gdal/wiki/SupportedCompilers, то видно, что Питон с его небольшими зависимостями собирается под что угодно вплоть до телефонов, а GDAL --- под разновидности Unix, разные версии Windows, MacOS X ... и как бы все.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 04 авг 2011, 17:33
Boris
так мы SHP файлы объединяли в дисковой операционной системе (там, помните, речь о папках шла) или о мощь питонов измеряли?
что до универсальности, и кроссплатформенности, то тут все зависит о цели. если при решении задачи, умножили сущности и решили на одну проблему больше - это очень приятно. но к задаче отношения не имеет, только если ее решение не стало от этого сильно проще.
на мой взгляд, и я высказал его только после того, как задача решена, что бы не мешать техническому спору, решение конкретной задачи было избыточным, потому как вместо использования стандартных средств потребовалось программирование.
Что до второй части, то сильно я сомневаюсь, что есть ГИС о которых стоит говорить, или пользователи которых приходят на этот форум, за пределами тех 3-х вселенных, которые вы перечислили в конце.
Re: Объединение shape-файлов пакетно (подпапки)
Добавлено: 11 авг 2011, 09:29
oleg
DR, спасибо большое, всё работает!
Со своей стороны (далекой от нюансов разработки) замечу по поводу решения, что при прочих равных, наверно, имеет смысл выбирать наименее зависимое (от иного ПО), то которое сможет использовать большее кол-во людей. При использовании какого-либо одного подхода в будущем, при накоплении готовых решений отдельных задач, возможно, получится их каким-то образом комбинировать в последовательности (a la modelbuilder).