我有一个文本文件(* .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文件的列定义每一行的起点和终点。
非常感谢
答案 0 :(得分: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
答案 1 :(得分:0)
使用“LINESTRING()" instead of LINESTRING()
应用于上一个示例:
'csv'文件:
Name;Lines
"Line1";"LINESTRING (30 10, 10 30, 40 40)"
"Line2";"LINESTRING (5 10, 0 30, -30 40)"