Jak przekonwertować plik kształtu linii na plik CSV z węzłami i łączami?

12

Czy istnieje sposób przekonwertowania liniowego pliku kształtu do pliku CSV o następującym formacie:

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

Patrzyłem na GDAL / OGR2OGR i PostGIS i nie sądzę, aby oba konwertują dane do żądanego formatu.

Nie mam nic przeciwko napisaniu scenariusza, aby to zrobić, jeśli poprowadzę mnie we właściwym kierunku.

dassouki
źródło
W twoim przykładzie Node_1, Node_2 są rzeczywistymi współrzędnymi twojego obiektu, prawda? Mam na myśli, że z twojego przykładu zakładam, że chcesz wyeksportować topologię z pliku kształtu; tak jak w Node_1 jest twój FNODE, Node_2 to twój TNODE, a geometria jest przechowywana tylko raz. Jeśli tak, odpowiedź jest zupełnie inna i do zbudowania topologii będziesz potrzebować czegoś oprócz OGR.
Ragi Yaser Burhum
@rburhum Chcę zaimplementować moją tabelę w klasycznym algorytmie sieciowym. Format jest zwykle od węzła 1 do węzła 2 z kosztem X
dassouki,

Odpowiedzi:

8

Programy narzędziowe zawarte w OGR (OGR2OGR) nie zrobią tego bezpośrednio, ale bardzo łatwo będzie go użyć do OGR.

Musisz napisać skrypt / program w dowolnym języku obsługiwanym przez OGR. Możesz po prostu otworzyć plik kształtów, przeczytać każdą funkcję i zapisać punkty + dane w formacie CSV.

Próbka kodu C ++ na Wiki pokazuje właśnie wymaga prawie każdy OGR wywołanie API dla tego produktu.

Reed Copsey
źródło
Dzięki za szybką odpowiedź. Patrzę na gdal.org/ogr/ogr%5Fapitut.html pierwszy przykład Pythona, który wyprowadza z pliku SHP do pliku CSV. Przykład został zrobiony dla warstwy punktowej, czy jest jakaś znacząca różnica w celu przekonwertowania jej na warstwę liniową? Jaki byłby format nazwy węzła? Czy to będzie liczba? Czy mogę połączyć go z inną warstwą punktową, która zawiera wszystkie nazwy węzłów?
dassouki,
W linii funkcje będą miały ogr.wkbLine zamiast ogr.wkbPoint. Możesz zwrócić nazwę w postaci ciągu za pomocą feature.GetFieldAsString (col). Nie ma sposobu, aby poradzić sobie z „łączeniem” bezpośrednio w OGR, więc musiałbyś otworzyć drugą tabelę danych i sam ją przeszukać, lub najpierw skopiować nazwy w GIS.
Reed Copsey
To ma sens; cóż, wypróbuję to i będę cię informować o tym, jak sobie radzę. Robię to wszystko, więc mogę przeprowadzić analizę sieci na warstwie linii.
dassouki,