继续请教开发漂亮的 GIS 程序的方法

2017-05-13 22:38:52 +08:00
 nonesuccess

之前在: https://www.v2ex.com/t/341025 中扫了扫盲,研究了许久后,下面几个方案都搞通了:

在线 api 是最方便的,但存在以下问题:

所以后面想研究的方向是自建地图,有下面几个想法:

爬百度或者高德的地图资源,用 openlayers 显示,再叠加网上购买的 shp

存在的问题是,两个地图的坐标叠不上,差十几米的样子。想请教大家,能否解决,解决的话,应该 1、调整瓦片图 2、QGIS 或人肉改 shp 3、在 openlayers 中通过某个方法调整两个图层的坐标差?

前两种方法都感觉太笨了,理论上第三种最靠谱,但翻了翻 openlayers 的文档,愣是没找到。

自己画地图

网上买 shp 即便是能叠加上,但还是比较难看,所以在考虑是否自己画地图的方案更靠谱。

我们要管理的范围,第一批大概不超过 100 平方公里,居民区不超过 100 个,我们手里有所有建筑的 cad 图。

如果我去找那种做小区平面设计图的人,把 cad 图给他们,让他们按照我们要求的风格画出图,然后写个程序切出瓦片图(对一个端点或两个端点的坐标就能保证矩形的所有点坐标都是对的?)。之后架一个 GIS 数据库,人肉把每个建筑物的坐标点量出来,存到数据库里(按照 100 个小区,每个小区 100 个建筑物算,大概是个 100~200 人天的体力活),这样建筑物的信息也都有了,鼠标指向后的高亮效果也实现了,基本上满足了我们的所有要求。

之后的需求,无非是根据 GPS 坐标在图上标记一些点位,如果地图都是我们自己画的话,和 GPS 坐标的偏移问题应该也能很简单的解决吧。

这个方案靠谱吗?

如果不完全靠谱的话,是否可以通过底图+shp+重点区域用以上方法绘制的结合方法?如果可以的话,要解决 1、坐标偏移问题、2、底图用谁的 3、shp 是否能简单的编辑,比如人肉画一片区域出来

写得有点乱,主要是对 GIS 还没有系统性了解,都是查到的各种野路子凑上去。

3873 次点击
所在节点    程序员
11 条回复
lyog
2017-05-13 22:45:30 +08:00
你可以百度一下 arcgis 空间校正,看看是不是你想要的功能
lyog
2017-05-13 22:47:17 +08:00
or arcgis 地理配准
nonesuccess
2017-05-14 08:16:11 +08:00
@lyog 研究一下看看
gooin
2017-05-14 09:34:28 +08:00
地图坐标重叠不上应该是投影问题。如果投影一致的话用 ArcGIS 校准一下就行,不过手动校准或多或少都有点小小的误差。
参观过某大数据局,他们是在网页端 2.5D 展示整个城市,点击每个建筑会显示建筑内住户信息什么的。我问了他们是怎么做的,他们说楼下一层人都是干这个的,三维建模,地图绘制之类的。供楼主参考
nonesuccess
2017-05-14 09:38:38 +08:00
@gooin @lyog

如果要用 arcgis,要买授权吗,还是说有试用版的可以用?我们初期就调整这一点的东西就行了
lyog
2017-05-14 09:52:03 +08:00
@nonesuccess arcgis 是付费软件,而且炒鸡炒鸡贵,有个被 arcgis 甩 n 条街国产软件 supermap,前三个月试用。对付这个简单的功能还绰绰有余。
gooin
2017-05-14 10:01:17 +08:00
![2.5dcity.png]( https://ooo.0o0.ooo/2017/05/14/5917ba3de681e.png)
不知道楼主是不是需要这样的东西
nonesuccess
2017-05-14 10:22:33 +08:00
@gooin 差不多,但是我们不需要这个透视效果,视角在正上方看平面图就行
phobal
2017-05-14 22:50:18 +08:00
1、如果没理解错的话你目前最大的问题就是怎么将你从百度或高德抓的瓦片数据和你在淘宝买的 shp 数据进行小偏差的叠加,首先你要弄清楚你买的 shp 数据的坐标系是什么(这个可以将 shp 文件导入到 ArcGIS 等软件中查看属性查询到),然后明白高德或者百度瓦片数据的坐标系,然后可以通过 ArcGIS 将其转正相同的坐标,这样就能在地图中正常显示了。
2、如果你不用你买 shp 的话,直接画 CAD 同样可以在 ArcGIS 中将其导出成 shp 格式,然后可以使用 ArcGIS 全家桶中的 ArcGIS Server 将 shp 发布成地图服务,然后使用 ArcGIS for JS API 去调用服务,这样做的话你说的需求基本都全能实现,只是这种方案学习成本比较高。
如果还不懂的话可以发邮件问我 phobal@126.com
swim2sun
2017-05-15 10:08:23 +08:00
百度或者高德的坐标系不是国际标准的,是经过加密的,在 openlayer 上应该是没有对应的坐标系的,所以你怎么调都是会有问题的。你可以使用开源的 openstreemap。另外如果想做漂亮的地图,也可以了解下 mapbox。
taozhi8833998
2017-06-22 20:34:36 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361155

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX