从整体上来说,我对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
数据列的多维数据集。
答案 0 :(得分:0)
因此,我发现缺少的是构成要显示的多边形的坐标。可以轻松地以geojson
文件格式进行定义,如果您对标准感兴趣,请参考here。为了获得所需的视觉效果,我需要:
这都是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来分配我的填充拉伸