如何将线形文件转换为带有节点和链接的CSV?


12

有没有一种方法可以将线性shapefile转换为以下格式的CSV文件:

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

我看过GDAL / OGR2OGRPostGIS,但我也不认为会将数据转换成我想要的格式。

如果我朝着正确的方向发展,我不介意编写脚本来执行此操作。


在您的示例中,Node_1,Node_2是要素的实际坐标,对吗?我的意思是,根据您的示例,我实际上会假设您要从shapefile导出拓扑。如在Node_1中是您的FNODE,在Node_2中是您的TNODE,并且几何仅存储一次。如果是这样,答案就大不相同了,除了OGR,您还需要其他东西来构建拓扑。
拉吉·亚瑟·伯汉

@rburhum我想用经典的网络算法实现我的表。格式通常是,节点1到节点2的成本为X
dassouki

Answers:


8

OGR(OGR2OGR)中包含的实用程序不会直接执行此操作,但是使用OGR来完成此操作非常容易。

您需要使用OGR支持的任何语言编写脚本/程序。您可以打开它,打开shapefile,读取每个特征,然后以CSV格式写出点和数据。

Wiki上样品C ++代码实际上是节目需要为这个几乎每个OGR API调用。


感谢您的迅速反应。我正在看gdal.org/ogr/ogr%5Fapitut.html第一个python示例,该示例从SHP输出到CSV文件。该示例是针对点层完成的,将其转换为线层是否有显着差异?节点名称的格式是什么?是数字吗?我可以将其链接到其中包含所有节点名称的另一个点层吗?
dassouki

在一行中,要素将是ogr.wkbLine而不是ogr.wkbPoint。您可以使用feature.GetFieldAsString(col)将名称作为字符串返回。有没有办法来处理OGR“链接”直接,所以你必须打开其他数据表和搜索自己动手,或在GIS中先复制的名字。
里德•科普塞

这就说得通了; 好吧,我会尝试一下,并让您了解我的表现。我正在做所有这些事情,因此我可以在线路层上进行一些网络分析。
dassouki
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.