GIS 系统因其独特的地理位置特性,越来越受到重视,在各行业中也有越来越多的展示机会。

那 GIS 系统开发的主要流程有哪些?我来整理一下。

1. 确定需求,确定硬件环境。

  首选确定业务功能需求,只有需求确定下来了,才能确定使用什么技术路线。是BS构架还是CS构架,需要的开发工具等。一般BS系统偏向内容展示,CC系统偏向内容编辑。

  硬件环境主要为网络环境,因为网络环境牵涉到地图底图的来源,如果不能访问外网,还需要考虑采用离线底图。

2. 确定开发技术

  2.1 地图引擎

    地图引擎,说明白点就是SDK或者JS库,可以提供将地图数据转化为地图位置的功能,并且可以提供加载底图的功能。总的来说,它提供了地图显示的所有接口。

    具体可以结合2.3查看。    

       2.2 底图

   除了上面提到的网络环境影响底图的选择,还要根据客户需求以及开发技术来确定底图图源的情况。

    一般的底图除了常见的类似百度地图服务器提供的图片格式底图,还包括.shp ,.tab, geojson文件格式。通过不同的地图引擎库加载不同的文件,最终实现在地图上显示点线面的效果。

   国内在线底图图源: 百度地图、高德、天地图、腾讯。

   国外在线底图图源: 谷歌地图、OpenStreet、ArcGIS、Bing。

  2.3 开发技术

     综合上面的地图引擎,底图来源,可以为项目开发选择合适的开发技术路线。

     一般分为以下几种:

    2.3.1 ArcGIS 全家桶: 由美国ESRI公司(国内公司为易智瑞,其对应产品为GeoScene)提供的全套支持地图开发的系列软件,包括地图数据处理 ArcGIS Desktop (ArcMap 和 ARCGIS Pro),

              用于地图服务的ArcGIS Server(ArcGIS Enterprise),用于BS页面开发的 ArcGIS JavaScript API(支持2D、3D),用于桌面CS软件开发的 ArcGIS Engine,Android SDK ,iOS SDK 等。

              其优点是功能齐全,文档规范,示例全面,覆盖面广,包含了所有可能涉及到的应用场景。 缺点是系统复杂,安装配置内容繁琐,接口多而杂,入门门槛高。非开源且收费贵。

              可选技术: C# + ArcGIS JavaScript +ArcGISServer + ArcEngine + SDK  

              底图可选: ArcGIS +  OSM + GoogleMap +  天地图

              可见shp文件通过ArcGIS Server 发布为局域网内地图服务作为底图。支持离线。

    2.3.2 开源开发

      2.3.2.1 OpenlayersLeaflet: 开源的二维地图JS开发库,其源码在GitHub开源,团队型开发,由很多地图基础功能,很多人会以此为基础写很多plugin。包括国内地图访问,地图工具,地图分析等。

        可选技术: Openlayers/LeafletJS + GeoServer/PostGIS/天地图/OSM ,

        其中GeoServer和PostGIS为地图服务引擎,可以通过这两个服务发布地图服务,用来作为底图。免费,支持离线。

      2.3.2.2 Cesium 和 maptalks: 开源的三维地图JS开发库。其源码在GitHub开发,公司型开发,如果只使用其他JS库,不使用其服务资源不收费。

        可选技术:CesiumJS/maptalks +  CesiumMap/OSM/天地图

目前不确认是否支持离线。

    2.3.3 API开发:

      GoogleMap :其地图API在国内已无法访问。

      BaiduMap:百度公司提供的地图API,可在线访问百度地图的底图资源包括三维建筑等信息,并根据接口进行相关功能开发。

            根据国测局要求,其底图进行了加密,必须使用其API加载数据才能显示正常位置。

            可选技术:JavaScript + BaiduMap API , 不支持离线。

            非开源软件,接口固定,无法进行修改,底图不收费,其他服务类接口超过访问次数后收费。

      AMap:高德公司提供的地图API,可在线访问高德地图的底图资源包括三维建筑等信息,并根据接口进行相关功能开发。

           根据国测局要求,其底图进行了加密,必须使用其API加载数据才能显示正常位置。

           可选技术:JavaScript + AMap API , 不支持离线。

           非开源软件,接口固定,无法进行修改,底图不收费,其他服务类接口超过访问次数后收费。

        天地图:天地图以提供底图资源为主,在实际开发过程中,很少直接使用天地图的API进行项目开发。

            可选技术:JavaScript + TMap API , 不支持离线。

 

3. 业务数据

  业务数据必须包含地理位置信息,也就是常说的经纬度信息,只有有了经纬度信息,才能知道在地图上将对象放在哪里,否则无法确定位置。也就是失去了GIS系统的优势和意义。

   需要对相应的数据进行地图入库,如ArcGIS Server、GeoServer、

4. 业务逻辑

  根据功能需求,设计交互操作以及信息展示。各个行业的需求模式不同,其交互逻辑也不相同。

 

5. 开发

  根据业务逻辑,使用对应的技术,开发出对应的功能。

 

6. 部署

  部署的时候,除了考虑项目文件的部署,还要考虑底图的部署,离线地图要放在对应的文件夹,如果是ArcGIS Server、GeoServer、PostGIS这样的地图服务软件,

要单独进行安装,并将地图源文件导入发布。

 

说明:离线底图除了 ArcGIS/GeoServer/PostGIS 这样的发布局域网服务的地图服务外,可以使用下载软件将在线底图下载到本地加载,也称之为离线底图。

 

参考:

ArcGIS Developer Documents: https://developers.arcgis.com/documentation/

LeafletJS: https://leafletjs.com/

openlayersJS: https://openlayers.org/

CesiumJS: https://cesium.com/

maptalksJS:  https://maptalks.org/

GeoServer: http://geoserver.org/

PostGIS: https://postgis.net/

天地图:  http://lbs.tianditu.gov.cn/server/MapService.html

BaiduMapAPI:  http://lbsyun.baidu.com/index.php?title=jspopular3.0

AMapAPI:  https://lbs.amap.com/api/javascript-api/summary/

openstreetMap: https://www.openstreetmap.org/