我正在将 OSM 数据转换为开源 Minecraft 端口(用 javascript - voxel.js 编写)。javascript 版本的编写方式是,每个体素(任意定义为立方米)都创建为来自单个原点 (x,y,z)(0,0,0) 的关系。
举个例子,如果想要创建一个立方体块,可以简单地生成体素作为与原点 (0,0,0) 的关系:[(0,0,0),(1,0,0) , (0,1,0)...]。
我的问题是:我导出了 OSM 数据,标准 XML 输出 (.osm) 以纬度和经度绘制节点。我最初的想法是,我可以通过使用Haversine公式计算每个节点与任意原点(0,0,0)=(37.77559,-122.41392)的距离来创建地图,将距离转换为米,找到轴承,并将其绘制为与 (0,0,0) 的关系。
但是,我注意到还有许多其他可用的导出格式:(.osm.pbf、.osm2pgsql、.imposm)。我假设他们以类似的方式(lat、lng)绘制节点,但其中一些能够直接导入数据库(例如 PostgreSQL)。
我听说有人使用像 PostGIS 这样的 PG 插件,但是(因为这是我第一次深入 GIS)我不熟悉他们的功能以及PostGIS 之类的东西是否会帮助我将 OSM 数据绘制到二维体素网格中。
PostGIS 等附加组件中是否有功能可以让我动态计算两个 Lat/Lng 点之间的距离,并以 x,y 方式绘制它们?
我想,从根本上说,我的问题是:如果我创建一个将 OSM 数据绘制到 x,y 网格中的脚本,我会重新发明轮子,还是有更有效的方法来做到这一点?