使用 x,y,z 数据显示建筑地块

问题描述 投票:0回答:2

我使用建筑商水平仪获取 110 x 150 建筑场地上的 x、y、z 坐标。它们不是等距的行和列,而是随机放置的。我应该从哪里开始?

数据采用 CSV 格式,但我可以更改它。我想将信息转换为“shapefile”或光栅格式。我还没有找到适合这部分过程的实用程序。

python terrain
2个回答
3
投票

您可以将坐标转换为 shapefile,以便在 QGIS、ArcMAP 或类似的 GIS 程序中显示它们。您可能需要一个多边形形状文件。

实现此目的的一种简单方法是使用 PySAL

>>> import pysal
>>> coords = [(0,0), (10,0), (10,10), (0,10), (0,0)]
>>> pts = map(pysal.cg.Point, coords)
>>> polygon = pysal.cg.Polygon(pts)
>>> shp = pysal.open('myPolygon.shp','w')
>>> shp.write(polygon)
>>> shp.close()

注意:pysal 目前不支持(Z 坐标),但有很多类似的库支持。

还要注意第一个点和最后一个点是相同的,表示一个闭合多边形。

如果您的 X、Y、Z 坐标是 GPS 坐标,您可以通过告诉 GIS 您的数据所在的投影(WGS84、UTM 区域 # 等)轻松地将您的数据与其他 GIS 数据对齐。如果您的坐标采用本地坐标(未绑定到 UTM 等网格),您需要对您的坐标进行“地理参考”,以便将它们与其他数据对齐。

最后使用 ogr2ogr 命令,您可以轻松地将数据从 shapefile 导出为其他格式,如 KML,

ogr2ogr -f KML myPolygon.kml myPolygon.shp

0
投票

您可以将 CSV 文件转换为任何 OGR 支持的格式。您所需要的只是 CSV 文件的头文件。 这里有一个例子:

 <ogrvrtdatasource>
 <ogrvrtlayer name="bars">
    <srcdatasource>bars.csv</srcdatasource>
    <geometrytype>wkbPoint</geometrytype>
    <layersrs>EPSG:4326</layersrs>
    <geometryfield encoding="PointFromColumns" x="longitude" y="latitude">
    </geometryfield>
 </ogrvrtlayer>
 </ogrvrtdatasource>

在数据源字段中设置 CSV 文件名。 就你而言,你有积分,所以这个例子是可以的。 字段layers表示坐标的投影。如果你有经度和纬度,这个就可以了。 几何字段必须包含 x 和 y 属性,它们定义 CSV 文件中包含坐标的列。 CSV 文件的第一行必须定义字段名称。 使用 .vrt 扩展名保存文件。

一旦你有了这个,就可以使用 ogr2ogr 程序,如果安装了 GDAL,你就有这个程序。 如果您想将文件转换为 Shapefile,只需在控制台中输入:

ogr2ogr -f "ESRI Shapefile" bars.shp bars.vrt

如果您的问题是如何处理数据,您可以检查gdal_grid实用程序,它将分散的数据(如您的数据)转换为栅格数据。您可以使用带有 vrt 头文件的 CSV 作为输入,而无需更改格式。

© www.soinside.com 2019 - 2024. All rights reserved.