现在每天都有越来越多的企业依靠与地理信息位置相关的数据来改善运营和增加利润,包括:客户位置、货物位置等,这些数据信息现在已经成为许多业务逻辑中不可或缺的一部分。
但是,很少有人同时会GIS和编程,程序员分为很多种,但是GIS开发通常是指前端+GIS开发,大部分做前端的程序员,不会GIS框架,这也是GIS开发人才或缺的重要原因之一。
如果想往GIS开发方向发展,但在学习的时候感到困惑,可以看下本篇文章,教你一些实用的GIS学习路线。
Web GIS开发的整个学习过程可以分为4个部分:
第一步,我们先来认识一下一些开源和企业的webgis框架:
开源 | 企业 |
---|---|
Openlayers,Leaflet js Geoserver Cesiumgl Qgis Mapboxgl等 | ESRI Google Maps 超图 中地数码等 |
由社区编写,免费代码商用,可修改源代码 | 相当稳定,API优, 社区建立,文档已编写,需要付费,无法修改源码 |
企业API
Google Maps、ESRI、国内的超图、中地等公司都创建了企业级数据和 API,但是通常使用软件、库、包,这些通常需要购买才能使用。
这些库的优点是这些库是由专门的开发人员创建的,因此这些库非常稳定并且有据可查。而且是安全且可扩展的,因此成为大公司的优先选择。
他们的缺点是成本很高,特别是一家初创公司或小公司,与其他成本相比,光使用企业API,成本就已经非常高了。
除此之外,开发人员需要依赖公司发布新功能,因为它的源代码不共享。
开源API
开源API是社区构建的,我们每天使用的许多著名框架和库,例如ReactJS、PostgreSQL、ApacheKafka等,都是开源的。
所以很多小型初创公司,或者预算不多的公司,都选择使用开源项目,这样的库、包和软件也存在于GIS领域。
优点是这些库可免费使用,根据任何商业、非商业应用程序的需要更改源代码。这里最大的好处显然是它是完全免费的,可以根据需要去修改它,使其成为您自己的产品并进行售卖。
缺点是由于这些都是基于社区的,所以并没有专门的技术支持。通常为了构建这样的产品,开发人员使用现有的开源产品,因此,当一旦涉及到新版本发布时,工作就会变得复杂。
你应该学习哪一种?
事实上,学哪种不是你自己决定的,如果你的客户购买了某个企业公司的许可证,他们会要求你使用他们的框架和代码,如果你的客户使用的是免费的开源框架,那你也要熟悉这些免费的框架。
具体有哪些需要学的?后面会介绍到。
Web前端基础:
GIS开发是Web开发的一个子集,要成为一名GIS开发人员,首先需要成为一名Web开发人员。Web前端需要学哪些内容
HTML
|
CSS
|
|
JavaScript
|
|
Json
|
前端框架:
Vue
vue是一套构建用户界面的渐进式框架。
|
|
MySQL(了解即可)
数据库基础 Client,DB,DBMS的关系 数据库表和Java类的映射关系 安装数据库以及mysql链接 数据库常用操作语句 Mysql常用约束 | 一对多,多对多关系 多表查询 Mysql事务管理 事务的四大特性 |
后端语言(了解即可)
每个网站都有两个部分,前端(我们在上面看到的)负责创建一个快速、响应迅速、用户界面友好的网站,第二个是后端,通常充当前端和数据库之间的通信者。
GIS开发通常不需要会后端,一般企业内部会有专门的后端人员,只需要了解原理即可。
作为后端开发人员,需要:
创建和维护API
从数据库获取/发布数据
保护数据
GIS地图框架(必学,每个企业要求不同选1-2个学习即可)
前面提到,GIS开发大致可以分为企业开发和开源开发,两个源背后使用的基本web开发逻辑是一致的,但库是不同的。
我们先来看一下企业的(还有很多不一一列出):
Google Maps Javascript API:
http://code.google.com/apis/maps/documentation/javascript/basics.html
ESRI Javascript API:
http://help.arcgis.com/en/webapi/javascript/arcgis/
Google earth engine:
https://earthengine.google.com/
超图:
SuperMap iClient JavaScript 11i(2022)
中地数码:
IGS JavaScript API
开源GIS框架(每个公司要求都不一样,学最流行的即可)
Openlayersopenlayers.org Leafletjsleafletjs.com Mapbox API:Mapbox Product APIs | Cesium JS:CesiumJS PostGISpostgis.net Geoserverdocs.geoserver.org |