Как преобразовать шейп-файл линии в CSV с узлами и ссылками?

12

Есть ли способ преобразовать линейный шейп-файл в файл CSV следующего формата:

Node_1, Node_2, attribute_1, ...., attribute_x
     1       2       "hello"        567845.334

Я посмотрел на GDAL / OGR2OGR и PostGIS, и я не думаю, что либо преобразует данные в формат, который я хочу.

Я не против написать сценарий для этого, если я направляюсь в правильном направлении.

dassouki
источник
В вашем примере Node_1, Node_2 - это фактические координаты вашего объекта, верно? Я имею в виду, что из вашего примера я бы предположил, что вы хотите экспортировать топологию из шейп-файла; поскольку в Node_1 это ваш FNODE, Node_2 - это ваш TNODE, а геометрия сохраняется только один раз. Если да, то ответ будет совсем другим, и вам понадобится что-то кроме OGR для построения топологии.
Раги Язер Бурхум
@ rburhum Я хочу реализовать свою таблицу в классическом сетевом алгоритме. Формат обычно от узла 1 до узла 2 со стоимостью X
dassouki

Ответы:

8

Служебные программы, включенные в OGR (OGR2OGR), не будут делать это напрямую, но для этого будет очень легко использовать OGR.

Вам нужно будет написать скрипт / программу на любом из языков, поддерживаемых OGR. Вы можете просто открыть шейп-файл, прочитать каждую функцию и записать точки + данные в формате CSV.

Образец C ++ код на вики на самом деле показывает почти каждый OGR API вызова для этого требуется.

Рид Копси
источник
Спасибо за быстрый ответ. Я смотрю на gdal.org/ogr/ogr%5Fapitut.html первый пример Python, который выводит из файла SHP в CSV. Пример сделан для точечного слоя, есть ли существенная разница, чтобы преобразовать его для линейного слоя? Какой будет формат имени узла? Это будет число? Могу ли я связать его с другим точечным слоем, в котором есть все имена узлов?
Дассуки
В строке, функции будут ogr.wkbLine вместо ogr.wkbPoint. Вы можете вернуть имя в виде строки, используя feature.GetFieldAsString (col). Невозможно обработать «связывание» непосредственно в OGR, поэтому вам придется открыть другую таблицу данных и выполнить поиск по ней самостоятельно или сначала скопировать имена в ГИС.
Reed Copsey
В этом есть смысл; хорошо, я попробую и буду держать вас в курсе того, как я разбираюсь. Я делаю все это, чтобы я мог провести сетевой анализ на линейном слое.
Дассуки