2

我有一个文本文件 (*.csv) 并已在该文件中成功定义 XYZ 以编写点的 shapefile:

ogr2ogr -f "ESRI Shapefile" testing.shp conduitout.vrt

我的 *.vrt 文件如下所示:

<OGRVRTDataSource>
    <OGRVRTLayer name="conduitout">
        <SrcDataSource>conduitout.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>EPSG:2232</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="start1" y="start2" z="start3"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

如何更改它以便我可以编写行的 shapefile?我的输入文件 (*.csv) 中有 X1、Y1、Z1 和 X2、Y2、Z2。我想我通过在我的 *.vrt 文件中定义以下内容来做到这一点:

<OGRVRTDataSource>
    <OGRVRTLayer name="conduitout">
        <SrcDataSource>conduitout.csv</SrcDataSource>
        <GeometryType>wkbMultiLineString</GeometryType>
        <LayerSRS>EPSG:2232</LayerSRS>
        <GeometryField encoding="WKB" />
    </OGRVRTLayer>
</OGRVRTDataSource>

但我不确定如何从 *.csv 文件的列中定义每一行的起点和终点。

非常感谢

4

2 回答 2

0

对于 Wkb 和 Wkt,您的几何图形应位于包含有效 Wkb 或 Wkt 格式的单列中。在下面的示例中,我使用 WKT 编码,因为它更具可读性。另请注意,Wkt 几何图形使用逗号,因此您的文件不能使用逗号作为分隔符。

“csv”文件:

Name;Lines
"Line1";LINESTRING (30 10, 10 30, 40 40)
"Line2";LINESTRING (5 10, 0 30, -30 40)

和 vrt 文件:

<OGRVRTDataSource>
       <OGRVRTLayer name="Linestest">
        <SrcDataSource SEPARATOR="SEMICOLON">D:\indata.csv</SrcDataSource> 
        <SrcLayer>indata</SrcLayer> 
        <GeometryType>wkbLineString</GeometryType> 
        <GeometryField encoding="WKT" field="Lines"/>
      </OGRVRTLayer>
</OGRVRTDataSource>

有关几何图形的 Wkt 和 Wkb 格式的更多信息,请参见 Wikipedia: http ://en.wikipedia.org/wiki/Well-known_text

于 2013-04-19T11:29:23.293 回答
0

利用 ”LINESTRING()" instead of LINESTRING()

应用于前面的例子:

“csv”文件:

Name;Lines
"Line1";"LINESTRING (30 10, 10 30, 40 40)"
"Line2";"LINESTRING (5 10, 0 30, -30 40)"
于 2014-09-23T13:07:37.427 回答