根据Mapbox Studio中的值分配3d多边形

时间:2019-09-15 16:51:39

标签: mapbox gdal

从整体上来说,我对GIS还是很陌生的。我有一个handle_unknown格式的简单平面文件,例如:

csv

我要实现的目标是在Mapbox中分配一个3d多边形,例如在此example中。尽管在Mapbox中的设置可能非常简单,您可以在其中根据数据范围分配高度和颜色值,但对于我来说显然不起作用。

我认为我丢失了博客文章中提到的其他文件,例如shapefile或将3d布局分配给3d拉伸所需的其他文件。

我需要知道在配置3d多边形时会遗漏的内容,例如说Mapbox中基于csv中name, detail, long, lat, value a, 123, 103, 22, 5000 b, 356, 103, 45, 6000 数据列的多维数据集。

1 个答案:

答案 0 :(得分:0)

因此,我发现缺少的是构成要显示的多边形的坐标。可以轻松地以geojson文件格式进行定义,如果您对标准感兴趣,请参考here。为了获得所需的视觉效果,我需要:

  1. (通常是您的长坐标和经坐标)
  2. 多边形(一个正方形需要5个顶点,连接和 定义多边形)
  3. 功能(您的数据点)
  4. FeatureCollection (功能集合)

这都是geojson格式的所有部分,我使用了Python及其geojson模块,该模块包含了完成这项工作所需的一切。


使用下面的辅助函数,我能够基于一个点计算正方形/矩形边界。高度和宽度定义了正方形/矩形的大小。

def create_rec(pnt, width = 0.00005, height = 0.00005):  
    pt1 = (pnt[0] - width, pnt[1] - height)  
    pt2 = (pnt[0] - width, pnt[1] + height)  
    pt3 = (pnt[0] + width, pnt[1] + height)  
    pt4 = (pnt[0] + width, pnt[1] - height)  
    pt5 = (pnt[0] - width, pnt[1] - height)  

    return Polygon([[pt1,pt2,pt3,pt4,pt5]]) #assign to a Polygon class from geojson

很简单地将它们附加到功能列表FeatureCollection中并作为geojson文件输出:

with open('path/coordinates.csv', 'r') as f:
    headers = next(f)
    reader = csv.reader(f)
    data = list(reader)

transform = []

for i in data:
    #3rd last value is x and 2nd last is the y
    point = Point([float(i[-3]), float(i[-2])]) 
    polygon = create_rec(point['coordinates'])

    #in my case I used a collection to store both points and polygons
    col = GeometryCollection([point, polygon])

    properties = {'Name':i[0]}

    feature = Feature(geometry = col, properties = properties)
    transform.append(feature)

fc = FeatureCollection(transform)

with open('target_doc_u.geojson', 'w') as f:
    dump(fc, f)

输出文件target_doc_u将包含上面列出的所有项目,使我能够绘制自己的点,以及继续在Mapbox中运行blog post来分配我的填充拉伸