熟练 Java 开发,项目中需要 GIS 功能,请教大家应该怎样学习

2016-06-11 23:11:37 +08:00
 nonesuccess

做一个学校或者厂区或者社区的业务系统,需要 GIS 功能,显示地图,在地图上标点位,做回调事件。

类似于百度地图提供的 api 就符合要求,但单位内部的地图资源肯定在百度上采集不到。另外就是,地图的样式需要分为平面和立体两种,平面的就类似于百度地图,立体的可能类似于: http://sh.edushi.com/。

现在不知道从哪里下手。从 GIS 理论开始学起的话,成本肯定过高了,再者也用不到这么高深的理论知识。感觉上,应该有下面几方面的问题要解决:

现有技术都是基于 Java 的,后面的技术方案最好也是 Java 这一套。以 Java GIS 为关键字搜了一些材料,但感觉不太得法,也不知道这条路可行不可行。

请教大家应该走一个什么样的路线才能解决这个问题

8337 次点击
所在节点    程序员
26 条回复
carlhan
2016-06-11 23:59:02 +08:00
关于第二点 可以看看 Mapbox https://www.mapbox.com 和 Leaflet

不过都是 JS 的 主要用于 web

逃…
qvvo
2016-06-12 01:48:33 +08:00
招个学 java 的从头学 GIS 不如招个学 GIS 的,
这个地理信息系统本身就是个本科专业,
地图引擎厂商有美国的 ESRI ,产品主要是 ArcGIS 系列,
国产的主要就是 SuperMap 了,我不太了解 SuperMap 的产品
地图资源可以用 ArcGIS 的桌面软件 ArcMap 来自己绘制了,格式一般是 shp
开源的找找 OSGeo 的软件包,也能做地图编辑发布切图一条龙,大概有 Grass, QuantumGIS , MapServer 等等
但难度估计比较大,我是没玩转。


推荐用加载瓦片的方式来做,
把自定义地图切成瓦片放到本地或服务器。
加载地图,分层显示加个点之类的,
用 openlayers 或者其他的 js 库也能搞定了应该。

有个比较牛叉的国人做的开源工具 geopbs
可以参考下:

https://geopbs.codeplex.com/
julor
2016-06-12 07:42:57 +08:00
开源的一套完全满足你的需求。
数据库用 postges+postgis
服务端用 geoserver 或者 mapserver
数据处理用 qgis
web 端用 openlayers3 或者 leaflet
murmur
2016-06-12 07:56:51 +08:00
跟你说 你做应用 gis 那部份完全没压力 最大的问题在处理图纸上 怎么把图纸做的漂亮还清晰
openlayers 的难度不会比 jquery 高多少 但是处理瓦片做瓦片服务器那块才是难点
techme
2016-06-12 09:19:49 +08:00
github.com/Project-OSRM 这个好像可以
cdxem713
2016-06-12 09:21:27 +08:00
不知道你是要做内网还是外网的,内网的话没地图资源估计自己搞不定,外网直接用高德或者百度的 JS 开发包做二次开发就好了。
技术上 JAVA 能做的主要都是后端接口开发,如果你不考虑自己做地图渲染,那后端估计没啥可做的,有的只有地标点的存储和同步吧,前端还是得靠 JS 。
cdxem713
2016-06-12 09:22:22 +08:00
如果没有很复杂的定制需求的话,没有必要用 leaflet 或者 openlayer 这些库
Neveroldmilk
2016-06-12 09:26:55 +08:00
免费开源的 C/S 开发套件是 Geotools+PostGIS 。
nonesuccess
2016-06-12 09:31:00 +08:00
@murmur 这块的难点是在开发上,还是在画图上?应该往哪个方向去努力解决呢?
swim2sun
2016-06-12 09:41:44 +08:00
根据楼主的需求, geoserver + openlayers 就可以搞定了。
首先,地图资源可以使用 QGIS 画,也可以请专门的数据公司画。平面还比较好搞,立体的可以使用 2.5D 的,需要先用 3DSMAX 作出立体图,再投影成 2.5D 。
数据可以导入到 geoserver ,前端 openlayers 访问 geoserver 服务器展示数据。

这是开源的解决方案,也可以用 ArcGIS 系列
swim2sun
2016-06-12 09:43:26 +08:00
@nonesuccess GIS 大概 80%的时间得花在数据上
Neveroldmilk
2016-06-12 09:52:48 +08:00
说 ArcGIS 解决方案的,最好了解一下 Esri 的报价,基本上都吓跑了。
murmur
2016-06-12 09:58:37 +08:00
@nonesuccess 当然是制作地图的 如果是小区域而且是自己标点可以用直角坐标系代替真实的世界坐标 误差也不会很大 如果是真实采集的数据这一部分没地理相关知识真搞不定
nonesuccess
2016-06-12 10:32:21 +08:00
@murmur 意思就是说,我把前后端的技术方案都搭建好了,然后给个任务说把北京昌平区的地图画出来,这事就必须的 GIS 专业的人才能搞?
Neveroldmilk
2016-06-12 10:32:23 +08:00
不可能绕过坐标转换的,否则你以后所有的坐标修改和标注都要自己写代码转换,并且你的坐标系和世界坐标系也对不上。
nonesuccess
2016-06-12 10:34:03 +08:00
@julor @swim2sun 我理解 geoserver 是提供瓦片图管理和访问的 api 的,那所谓的 GIS 数据库又是做什么的呢?
nonesuccess
2016-06-12 10:36:23 +08:00
@Neveroldmilk 那如果我给一个厂区,或者方圆几平方公里的居民区建模,就不需要跟真实世界的坐标系对应了吧?

就是说我自己建立一个直角坐标系,所有的坐标修改和标注都用我这套坐标系,也就不存在写代码转换的问题了?
murmur
2016-06-12 10:37:35 +08:00
@nonesuccess 我认为是,而且坐标系也最好用真实坐标,这样你去踩点也容易点,以后如果接入更多信息也是标准
做地图绝对不是一个前端或者后端就能做出来的,要好看,美观,实用,可扩展,要不为啥国内地图那么多提供地图的就几家
nonesuccess
2016-06-12 10:45:25 +08:00
@murmur 对,我其实也是想问,按说我们的主业就是做业务系统的,那想加 GIS 模块的话,是自己研究明白了更好点,还是直接去买个方案更好点
murmur
2016-06-12 10:52:05 +08:00
@nonesuccess 拿到图纸 GIS 模块的开发都不是难点,无外乎是连接瓦片服务器,用一些前端代码在地图上描点罢了

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

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

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

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

© 2021 V2EX