作为点石成金的开门篇-开源GIS二维研发
第一章:简介
开源GIS桌面应用程序uDig
**它是什么
**
1、uDig是一个开源的桌面应用程序框架,构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS(地理信息系统) ;
2、是一款开源桌面GIS软件,基于Java和Eclipse平台,可以进行shp格式地图文件的编辑和查看;
3、是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的加强。uDig提供一个一般的java平台来用开源组件建设空间应用。
它可以做什么
1、可以编辑数据和提交数据。例如纠正一条道路的轨迹
2、可以创建、编辑地图,例如创建一个地图,自制道路、河流、湖泊
3、可进行SLD样式文件编辑,可设置是否显示标注信息
4、图层最大比例尺、最小比例尺设置
开源GIS服务器GeoServer
它是什么
1、GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。
2、兼容 WMS 和 WFS 特性;支持 PostgreSQL、 Shapefile 、 ArcSDE 、 Oracle 、 VPF 、 MySQL 、 MapInfo ;支持上百种投影;
3、能够将网络地图输出为 jpeg 、 gif 、 png 、 SVG 、 KML 等格式;能够运行在任何基于 J2EE/Servlet 容器之上;
4、嵌入 MapBuilder 支持 AJAX 的地图客户端OpenLayers;除此之外还包括许多其他的特性。
它可以做什么
1、连接数据库,发布数据库中的数据作为图层,详见文章GeoServer系列之三.将postGis数据表发布成WMS/WFS服务
2、导入shp,发布shp文件为地图,详见文章GeoServer系列之基于Geoserver发布shp文件为地图
3、SQLViews查库发布(参数设置、调用存储过程函数、防止注入),详见文章GeoServer系列之SqlView
4、切片GeoServer系列之四.基于GeoServer切片地图服务的发布
5、Geoserver可以发布两类数据,分别为shp文件类型和postgis数据表类数据
开源GIS前端类库openlayers
它是什么
1、OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问
2、OpenLayers 支持Open GIS 协会制定的WMS(Web Mapping Service)和WFS(Web Feature Service)等网络服务规范,可以通过远程服务的方式,将以OGC 服务形式发布的地图数据加载到基于浏览器的OpenLayers 客户端中进行显示
3、OpenLayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。
可以做什么
1、可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作
2、可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。例如,它可以为OpenLayers 添加网络处理服务WPS 的操作接口,从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。
3、同时,在OpenLayers提供的类库当中,它还使用了类库 Prototype.js 和Rico 中的部分组件,为地图浏览操作客户端增加Ajax 效果。
5、前端支持返回WKT、GeoJson等格式,WKT直接存储几何对象,GeoJson可用于存储带属性的对象;详见:OpenLayers系列之-Geometry格式转换
openlayers api http://openlayers.org/en/latest/apidoc/index.html
6、openlayers系列之基于openlayers实现聚类统计展示
8、统计图Openlayers3中统计图的实现:结合highcharts实现统计图
9、热力图效果结合heatmap.js,在Openlayers中如何实现热力图
10、A、B、C、D效果OL2中实现百度地图ABCD marker的效果
GeoWebCache
它是什么,它可以做什么
geowebcache就相当于是openlayer和geoserver之间的中介,可提升地图访问效率
GeoJson
它是什么
1、GeoJSON是基于JavaScript 对象表示法的地理空间信息数据交换格式
2、GeoJSON对象可以表示几何、特征或者特征集合。
3、GeoJSON支持下面几何类型:点、线、面、多点、多线、多面和几何集合。
4、GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。
5、GeoJSON 可以被 JavaScript 简单、快速的解析,得到了包括 FireEagle和 OpenLayers在内的一些流行的 API 的支持
6、地图聚合的数据格式前三名:KML、GeoRSS 和 GeoJSON
7、GeoJSON就是JSON格式,只不过是针对Geometry的JSON,遵循JSON的语法和格式,其解析方式和JSON完全相同。
可以做什么
1、通过Openlayers展现后台服务提供的一个点的元素信息
2、通过Openlayers展现后台服务提供的多个点的元素信息
3、通过Openlayers展现后台服务提供的多个点的元素信息,并且根据状态改变成不同的图片信息
资料地址:
http://www.oschina.net/translate/geojson-spec#id2
http://www.oschina.net/translate/geojson-spec#id3
GeoJson在线工具地址:http://geojson.io/#map=3/44.53/111.80
空间数据库
常见开源空间数据库:postgresql、postgis、mysql
mysql:http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/spatial-extensions-in-mysql.html
性能篇
(一)海量POI如何进行快速搜索,并进行排序包括点查询、多边形查询、中英文分词查询?
场景:比如查找当前所在位置附近1000米的酒店,如下图
方案一:基于Solr的空间搜索
(二)海量POI,ol3加载缓慢
方案一:抽稀。每放大一级加一部分点 抽稀+图片生成
方案二:后台绘制,前台显示 大量POI点展示的一种解决方案
方案三:取当前区域,绘制当前区域的 其他地方显示的时候再绘制 大量POI点展示的一种解决方案
第二章:思路整理
1、传统线路
空间表和shp数据–》打开udig–》导入空间表数据或shp数据–》编辑数据和样式–》打开geoserver–》geoserver发布wms–》openlayers访问
2、制图线路
打开udig–》制图–》编辑数据和样式–》打开geoserver–》geoserver发布wms–》openlayers访问
3、geoserver发布postgis数据表
创建链接–》设置样式–》发布
4、geoserver只支持发布arcgis格式的地图数据
5、多图层叠加
geoserver发布图层组、openlayers加载的时候叠加
6、比例尺与图层样式的关系
udig设置不同图层比例尺与样式关系–》geoserver发布wms–》标注名显示+不同比例尺下样式的使用
第三章:可以做的事
一、GIS桌面应用程序
可以基于uDig开发自己的GIS桌面应用程序,类似Supermap的Idesktop产品****
二、可对Geoserver进行二次开发,调整为类似Supermap的Iserver产品
三、可将Geoserver作为war包或直接集成进项目进行开发,达到初步让地图使用者自己制作地图的目的,例如可以让使用者在面板进行坐标点绘制然后生成shp文件通过Geoserver发布为服务,然后采用openlayers进行调用,如下图
四、结合Sqlview+ssm框架进行空间分析
人在山中,才知道,白云也可以抓上一把,苍翠竟有清甜的味道。 人在山中,才知道,高度永远是一个变量,而快乐则是附于中跋涉过程的函数。 人在山中,才知道,庄严是望远时的一种心境,高处才能指点江山。