最近有一个新的想法,制作一个地图数据
我们知道地图都是要用arcmap等制图工具制作出来的,这非常的麻烦,也需要非常专业的人才能制作出来,但是像生活中的一些场景,我们根本不需要制作那么麻烦的地图,我们知识需要一个室内展示的简易图形,我们只是希望图形能有一些交互,但是,这是我想的。
比如说一个仓库的简易展示平面图,一个商场的简易展示平面图。我们如果能非常简单的就制作出来了,我想这一定是有价值的。
当然,从我多年的地图开发经验,我想,是时候展示自己的专业能力了,我想如果我们开发出来一个这样的东西,那么一定是非常有作用的。
我们非常了解mapbox,我想这是一个优点,mapbox开源的情况下给了我们非常大的发挥空间。
我们不想像arcgis那样专业,但是mapbox跨平台性非常的好,这也是非常重要的一点。
还有一点是mapbox的数据非常的开放,我们非常清楚mapbox的数据格式,这多我们制图是非常有帮助的。
首先我想的是在桌面平台,因为制图,还是要求用户非常精细的操作的,最好还是桌面端的软件。
另外一点,我们想的是qt在桌面夸平台的方面非常友好,这也是非常有帮助的。那么我们怎么做呢?
首先我的想法是这样的
我们首先在地图上选择一个区域,作为这个图层的边界,在室内图上来讲是building数据。
面绘制
- 我们需要两个点来实现这个区域。我简单像是一个矩形,后面再对这个矩形进行裁剪
- 裁剪方法 ,我简单的想法还是选点,你选中矩形内的一个点,那么矩形会被这个点的两条平行线分割成4份,然后,用户选择去掉那一份。
- 有的时候往往不是直线,这里我们就需要对弧线的绘制了。弧线的绘制是用三个点来实现的,其中起点和终点必须在多边形的边上
- 最后用户如果像手动绘制,那么只能是一点点的选点进行绘制,这非常的麻烦,且选点的顺序必须是连贯递进的,当然我们最好也不希望出现这种情况。
建筑内面绘制
- 我们绘制好了building数据,下面就是室内区域绘制了,其实也是面数据,我们也是同绘制面的流程一样。绘制出来
- 考虑到绘制非常的麻烦,我们最好是有模版数据,可以让用户非常方便的进行选择绘制。
路线的绘制
- 路线是室内行动轨迹一个参照,这非常的重要,我们考虑路线最好一定是直线。
- 选择路线的轨迹也是用户顺序选点来实现的,最后生成的路线数据会进行整理,分切为一个一个的小线段,线段之间会用node进行连接
- 路线的作用一个是直观寻找物品的路线,另一个是可以为以后路线规划进行指导
poi点绘制
- poi点有非常多的种类,我们可以通过选点进行设置,添加poi类型和poi名称
数据编辑操作
我们考虑不光有新增,我们也要有修改和删除的一系列操作,这样才会体验流畅。
我们有回退按钮,每一步都可以会退到上一次编辑的地方
删除,采用选中的方式进行删除
修改,目前感觉还是删除后再添加比较方便,修改每一个数据不是太方便操作。
数据问题
我们采用geojson,我们制作好的点、线、面数据最后合并成geojson。
文件名称分别为:building、region、line、node、poi
geojosn分析
FeatureCollection
– features
– Feature
– geometry
geojson转shp和mvt
这个我们已经开发过,已经实现了这个功能,我想比较简单了。
想了半天,感觉这个东西只能用qt来开发了。下面的问题是要研究下qt的接口了
突然发现geojson。io这个网站,感觉这个很方便,我想是用这个工具进行改造,改造成室内地图制作工具
1.故事板
2.采集数据
3.绘制数据
4.地图可视化制作
5.更新地图样式
6.运动轨迹播放效果
7.覆盖影像
8.聚合
9.室内地图
10.3d模型
12.geojson编辑
现在有一个简单的想法,就是地图数据的制作
我们没有办法做像arcgis那样的数据,但是我们可以利用mapbox,制作非常简单的像室内图的数据
我们可以随便copy地图数据,然后把数据合并成新的图层,然后发布出来,或者制作成矢量瓦片,这不失为一个非常好的办法。
应用场景:
目前的制图工具非常考验开发者的制图功底,我们又没有那么多专业的人才。现在的生活又非常需要丰富的图形话来方便用户生活。
比如过
快递、外卖、核酸检测15分钟生活圈。室内地图。换乘站点查找等等。
我们可以非常简单的绘制出来。有一个非常重要的问题,这种东西是无法发布出去的,将会非常的麻烦
室内图制作:
点(同所有的icon)
线 node、line
面 region
先绘制面
选择两点,生成面
裁剪 (选点,然后切割,选择要切割掉的数据)
弧线 (起点,弧点,终点)
设置属性 (墙体,房间,等等)所有空间都是闭合的
再绘制路线
选点设置路线,一条一条路线的选择,一定是直线,
(路线的相交、起终点处设置为node)
再绘制poi点
选点,然后设置属性名称
技术点:
根据两个点生成面
根据面内的一个点,分割面
根据面边上的一个点,分割面
根据弧线分割面,起点和终点必须在面边上
问题:
1.比较难实现选点
2.比较难设计UI
3.macos平台框架不是太熟悉
geojson数据个够
地图场景
1.故事板
2.采集数据
3.绘制数据
4.地图可视化制作
5.更新地图样式
6.运动轨迹播放效果
7.覆盖影像
8.聚合
9.室内地图
10.3d模型
12.geojson编辑
https://docs.mapbox.com/mapbox-gl-js/example/gradient-sky/
图例
mapbox-gl-legend
https://www.npmjs.com/package/sailing_echartslayer
拖拽功能
https://sortablejs.github.io/Vue.Draggable/#/clone
https://github.com/SortableJS/vue.draggable.next
异步组件
组件按需引入
打包分包