Como converter um arquivo de forma de linha em um CSV com nós e links?

12

Existe uma maneira de converter um shapefile linear em um arquivo CSV do seguinte formato:

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

Eu olhei para o GDAL / OGR2OGR e o PostGIS e acho que não converte os dados para o formato desejado.

Não me importo de escrever um roteiro para fazê-lo, se eu for guiado na direção certa.

dassouki
fonte
No seu exemplo, Nó_1, Nó_2 são as coordenadas reais do seu recurso, certo? Quero dizer, do seu exemplo, eu realmente assumiria que você deseja exportar a topologia do shapefile; como em Node_1 é seu FNODE, Node_2 é seu TNODE e a geometria é armazenada apenas uma vez. Nesse caso, a resposta é muito diferente e você precisará de algo além do OGR para construir a topologia.
Ragi Yaser Burhum 18/08/09
@rburhum eu quero implementar minha tabela em um algoritmo de rede clássico. O formato é geralmente, um nó para nó 2 com um custo de X
dassouki

Respostas:

8

Os programas utilitários incluídos no OGR (OGR2OGR) não farão isso diretamente, mas será muito fácil usar o OGR para fazer isso.

Você precisaria escrever um script / programa em qualquer um dos idiomas suportados pelo OGR. Você pode simplesmente abrir o shapefile, ler cada recurso e escrever os pontos + dados em um formato CSV.

O código C ++ de amostra no Wiki realmente mostra quase todas as chamadas de API do OGR necessárias para isso.

Reed Copsey
fonte
Obrigado pela resposta rápida. Estou vendo o primeiro exemplo de python do gdal.org/ogr/ogr%5Fapitut.html , que gera um arquivo SHP para CSV. O exemplo é feito para uma camada de pontos. Existe alguma diferença significativa para convertê-la em uma camada de linha? Qual seria o formato do nome do nó? Será um número? Posso vinculá-lo a outra camada de pontos com todos os nomes de nós?
Dassouki 5/08/09
Em uma linha, os recursos serão ogr.wkbLine em vez de ogr.wkbPoint. Você pode retornar o nome como uma sequência usando feature.GetFieldAsString (col). Não há maneira de lidar com "ligar' diretamente no OGR, então você teria que abrir outra tabela de dados e busca-lo sozinho, ou copiar os nomes através de GIS em primeiro lugar.
Reed Copsey
Isso faz sentido; bem, eu vou experimentar e manter você atualizado sobre como eu faço. Estou fazendo tudo isso para poder fazer uma análise de rede em uma camada de linha.
Dassouki 5/08/09